保姆级教学:Java项目从0到1部署到云服务器

目录

1、明确内容

2、apt

2.1、apt 语法

2.2、常用命令

2.3、更新apt

3、安装JDK17

4、安装MySQL

4.1、安装

4.2、检查版本及安装位置

4.3、初始化MySQL配置⭐

4.4、检查状态

4.5、配置远程访问⭐

4.6、登录MySQL

4.7、测试数据库

4.8、设置权限与密码⭐

5、安装redis

6、安装Nginx

6.1、相关存储位置

6.2、配置文件

第一部分:全局块

第二部分:events块

第三部分:http块

完整配置文件

80端口占用

6.3、部署前端项目

6.4、测试效果

7、安装tomcat

7.1、报错

7.2、排错⭐

8、防火墙和安全组🔺

8.1、防火墙放行

8.2、阿里云安全组🔺

9、上传工程jar包

9.1、打包

9.2、上云

10、测试项目

10.1、运行

10.2、持续运行🔺


🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法,初步涉猎Python人工智能开发和前端开发。
🦅主页:@逐梦苍穹

📕所属专栏:项目
🍔您的一键三连,是我创作的最大动力🌹

Java项目开发完成之后,想要给第三方访问,则需要部署到公网上去,阿里云/腾讯云是不错的选择,这里以阿里云为例进行详细说明

1、明确内容

第一步需要明确好自己部署一个项目到云服务器的同时,需要运行什么其他服务(这里以Java项目为例说明)。

①Java项目首先要部署JDK,这里部署的是JDK17;

②现在主流的Java项目都是以SpringBoot为主流,SpringBoot内嵌了tomcat容器,所以可以不额外部署tomcat服务;

③项目当中涉及到数据存储,需要部署数据库服务,这里使用的是MySQL;

④项目涉及到缓存操作,需要部署redis;

⑤如果项目是前后端分离项目,还需要部署前端nginx服务器,可以配置tomcat集群;

2、apt

apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。

apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

apt 命令执行需要超级管理员权限(root)。

安装:apt-get install name
更新:apt-get update name
卸载:apt-get remove name
查找:apt-cache search name

2.1、apt 语法

apt [options] [command] [package ...]

options可选,选项包括 -h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。

command要进行的操作。

package:安装的包名。

2.2、常用命令

操作

命令

列出所有可更新的软件清单

sudo apt update

升级软件包

sudo apt upgrade

列出可更新的软件包及版本信息

apt list --upgradeable

升级软件包,升级前先删除需要更新的软件包

sudo apt full-upgrade

安装指定的软件包

sudo apt install <package_name>

安装多个软件包

sudo apt install <package_1> <package_2> <package_3>

更新指定的软件包

sudo apt update <package_name>

显示软件包具体信息(例如:版本号,安装大小,依赖关系等)

sudo apt show <package_name>

删除软件包

sudo apt remove <package_name>

清理不再使用的依赖和库文件

sudo apt autoremove

移除软件包及配置文件

sudo apt purge <package_name>

查找软件包

sudo apt search

列出所有已安装的包

apt list --installed

列出所有已安装的包的版本信息

apt list --all-versions

2.3、更新apt

3、安装JDK17

sudo apt install openjdk-17-jdk

当系统要求输入密码时,请输入密码。然后键入 'Y' 并按 'Enter' 继续安装。

检查是否安装成功:

运行个jar包试试看:

正常运行,环境配置无误!

4、安装MySQL

4.1、安装

sudo apt-get install mysql-server

4.2、检查版本及安装位置

4.3初始化MySQL配置⭐

输入命令:sudo mysql_secure_installation

需要的配置项会比较多,详细如下:

1)这里输入N,选择不进行密码的强校验:

2)这里输入Y,选择确认删除匿名用户:

3)这里输入N,选择允许root远程登陆:

4)这里输入N,选择不删除test数据库:

5)这里输入Y,选择修改的权限立即生效:

6)至此,初始化完成:

4.4、检查状态

检查MySQL服务的运行状态:systemctl status mysql.service

可以看到正常运行!

4.5、配置远程访问

在Ubuntu下MySQL缺省是只允许本地访问的,使用远程连接工具是连不上的;

如果要其他机器也能够访问的话,需要进行配置;

找到 bind-address 修改值为 0.0.0.0(如果需要远程访问)。

命令:sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

此处修改为0.0.0.0

修改完成,记得重启服务:sudo /etc/init.d/mysql restart

如果遇到vi编辑器不能正常的插入和保存的情况,可以选择重新安装vim。

由于Ubuntu预装的是vim-tiny,而我们需要使用vim-full,步骤如下:

①卸载vim-tiny:apt-get remove vim-common

②安装vim-full:apt-get install vim

4.6、登录MySQL

命令:sudo mysql -uroot -p
输入用户和密码(按照上面的步骤,此时的root用户是没有密码的,直接回车即可):

4.7、测试数据库

show databases:

use mysql:

select User,authentication_string,Host from user:

select host,user,plugin from user:

4.8、设置权限与密码

命令:

使用mysql_native_password修改加密规则:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';

更新用户的密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY '密码' PASSWORD EXPIRE NEVER;

允许远程访问:

UPDATE user SET host = '%' WHERE user = 'root';

刷新cache中配置,刷新权限:

flush privileges;

如图:

到这里,MySQL在Ubuntu上的配置和安装就完成了!

5、安装redis

安装Redis:sudo apt install redis-server

安装完成后,Redis将自动启动。

检查Redis服务状态:sudo systemctl status redis-server

如果Redis未自动启动,则手动启动Redis:sudo systemctl start redis-server

接下来,为Redis设置密码:

首先,停止Redis服务:sudo systemctl stop redis-server

然后,编辑Redis配置文件:vim /etc/redis/redis.conf

在配置文件中找到以下行:# requirepass foobared

注释掉这行,添加密码,将 # requirepass foobared 修改为requirepass yourpassword,其中 yourpassword 是需要设置的密码。保存并关闭文件。

最后,重新启动Redis服务:sudo systemctl restart redis-server

现在,Redis已经安装并设置了密码。

使用以下命令测试连接Redis:redis-cli -h localhost -p 6379 -a yourpassword ping

如果一切正常,将看到回复 "PONG"。现在,已经成功在Ubuntu上安装了Redis并设置了密码。

redis监听的是127.0.0.1:6379,并不监听外网的请求,因此想要远程连接,还需要对redis.conf配置文件中的相关内容进行修改:

①将 bind 127.0.0.1 ::1 注释掉

②将 protected-mode 改成 no:

6、安装Nginx

安装命令:sudo apt-get install nginx

验证是否安装成功:nginx -v

6.1、相关存储位置

默认安装位置:

/usr/sbin/nginx:主程序

/etc/nginx:存放配置文件

/usr/share/nginx:存放静态文件

/var/log/nginx:存放日志

测试配置文件/etc/nginx/conf.d是否正确:

6.2、配置文件

nginx最重要的莫过于配置文件,其中:

主配置文件:/etc/nginx/nginx.conf

其他配置文件:/etc/nginx/conf.d/xxxx.conf

建议是一个主配置文件+多个其他配置文件协同工作,这样能更好的规范配置项,显得更有条理性

进入/etc/nginx目录:

主配置文件为:nginx.conf。

可以将 nginx.conf 配置文件分为三部分:

第一部分:全局块

worker_processes  auto;

从配置文件开始到 events 块之间的内容,主要会设置一些影响 Nginx 服务器整体运行的配置指令,主要包括:配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等。

上面这行 worker_processes 配置,这是 Nginx 服务器并发处理服务的关键配置,该值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约。

第二部分:events块

events {worker_connections  768;}

events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括:是否开启对多 work process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 wordprocess 可以同时支持的最大连接数等。

上述例子就表示每个 work process 支持的最大连接数为 1024。这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。

第三部分:http块

http {sendfile on;tcp_nopush on;types_hash_max_size 2048;# server_tokens off;# server_names_hash_bucket_size 64;# server_name_in_redirect off;include /etc/nginx/mime.types;default_type application/octet-stream;ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLEssl_prefer_server_ciphers on;access_log /var/log/nginx/access.log;error_log /var/log/nginx/error.log;gzip on;# gzip_vary on;# gzip_proxied any;# gzip_comp_level 6;# gzip_buffers 16 8k;# gzip_http_version 1.1;# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;### Virtual Host Configs##server {listen       80;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html/sky;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}# 反向代理,处理管理端发送的请求location /api/ {proxy_pass   http://localhost:8080/admin/;#proxy_pass   http://webservers/admin/;}# 反向代理,处理用户端发送的请求location /user/ {proxy_pass   http://localhost:8080/user/;}# WebSocketlocation /ws/ {proxy_pass   http://localhost:8080/ws/;}}include /etc/nginx/conf.d/*.conf;include /etc/nginx/sites-enabled/*;
}

这部分是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。

需要注意的是:http 块也可以包括 http 全局块、server 块。

下面的反向代理、动静分离、负载均衡都是在这部分中配置。

、http 全局块

http 全局块配置的指令包括:文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。

、server 块

这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。

每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。

而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块:

全局 server 块:最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置。

location 块:一个 server 块可以配置多个 location 块。这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

反向代理:

在server中配置:

完整配置文件

主配置文件内容如下:

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;events {worker_connections 768;# multi_accept on;
}http {sendfile on;tcp_nopush on;types_hash_max_size 2048;# server_tokens off;# server_names_hash_bucket_size 64;# server_name_in_redirect off;include /etc/nginx/mime.types;default_type application/octet-stream;ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLEssl_prefer_server_ciphers on;access_log /var/log/nginx/access.log;error_log /var/log/nginx/error.log;gzip on;# gzip_vary on;# gzip_proxied any;# gzip_comp_level 6;# gzip_buffers 16 8k;# gzip_http_version 1.1;# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;### Virtual Host Configs##server {listen       80;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html/sky;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}# 反向代理,处理管理端发送的请求location /api/ {proxy_pass   http://localhost:8080/admin/;#proxy_pass   http://webservers/admin/;}# 反向代理,处理用户端发送的请求location /user/ {proxy_pass   http://localhost:8080/user/;}# WebSocketlocation /ws/ {proxy_pass   http://localhost:8080/ws/;}}include /etc/nginx/conf.d/*.conf;include /etc/nginx/sites-enabled/*;
}

80端口占用

在部署的过程中可以发现,当nginx.conf配置监听端口为非80端口时,访问nginx服务器的80端口依旧生效,会自动跳转到欢迎页面(welcome to nginx!) ,这是因为:

在/etc/nginx/sites-enabled这个目录下面有一个default文件,这个文件是默认加载的而配置文件:

编辑这个default文件,打开以后是这样的:

listen端口默认就是80,把它改为非80端口,就不会出现80端口被欢迎页面占用的情况。

6.3、部署前端项目

打包好的前端项目可以放在自定义的文件夹下面:

记得配置好相关路径:

监听端口默认80端口。

6.4、测试效果

部署完成可以开始测试:

在本地访问localhost,在阿里云则访问对应的ip地址:

可以看到,测试没有问题!

7、安装tomcat

这个步骤可以不需要,只是为了完善整套环境。

因为在第一部分"明确内容"的时候提到过,现在主流的都是SpringBoot项目,而SpringBoot是内嵌了tomcat容器的,如图:

项目使用的是SpringBoot2.X版本,所以内嵌的是tomcat9.0.65版本。

这里就安装对应的版本来测试一下即可。

安装:sudo apt install tomcat9

7.1、报错

这个环境下同时装了JDK17和tomcat9,不出意外的话,启动服务的时候是要报错的:

报错信息显示找不到JDK,但是实际上有JDK:

7.2、排错⭐

不出意外的话,这应该是一个老生常谈的"错误"了,就是tomcat9的某些配置文件不识别JDK17。

先查看tomcat9的安装路径(whereis tomcat9):

根据上面的报错信息,可以看到加载/lib/systemd/system/tomcat9.service失败。

下面进入/lib/systemd/system/,查看tomcat9.service文件:

可以看到Tomcat9的启动脚本是/usr/libexec/tomcat9/tomcat-start.sh,下面查看该脚本的内容:

可以发现,这里有一个脚本/usr/libexec/tomcat9/tomcat-locate-java.sh是用来寻找Java环境的,下面查看该脚本:

成功发现问题:这个脚本的内容不包括Java17

解决方案:加上Java17,如下:

像这样加入17,然后重启服务就可以了。

7.3、测试

systemctl restart tomcat9

systemctl status tomcat9

成功运行:

地址栏测试(访问8080端口)出现如下页面表示成功:

如果你在浏览器看到此页面,则表示tomcat成功运行

8、防火墙和安全组🔺

根据上面的七个步骤,整个项目的环境部署已经完成了,但是外部依旧无法访问。

此处有两个关键要点:①操作系统防火墙开放对应端口;②阿里云外部设置安全组策略

8.1、防火墙放行

放行命令:ufw allow [端口号]

查看防火墙:ufw status

8.2、阿里云安全组🔺

进入云服务器ECS控制台,找到"安全组":

点击管理规则:

点击手动添加入站规则:

至此,项目环境部署完成!

9、上传工程jar包

9.1、打包

打开开发工具IntelliJ IDEA,

第一步:跳过测试

第二步:在父模块下执行"clean":

第三步:在父模块执行"compile"编译

第四步:根据依赖关系依次执行"install"(依赖的内容越多,越慢执行"install")

这里的顺序就应该是:先"install"模块sky-pojo,再模块sky-common,最后"install"最核心的服务模块sky-server。最后打开"install"模块sky-server的jar包路径:

找到路径的target目录:

把这个jar包上传到阿里云服务器即可。

9.2、上云

利用远程连接工具连接阿里云服务器(如finalshell或Xshell):

10、测试项目

10.1、运行

连上阿里云操作系统:

在阿里云的Ubuntu系统上运行jar包即可,效果如图:

10.2、持续运行🔺

由于springboot内置了tomcat容器,我们通常会把项目打成jar或者war后直接使用java -jar xxx.jar命令去运行程序,但是当前ssh窗口被锁定或者按下ctrl+c又或者关闭了ssh窗口,那么程序就会被终止。

一旦退出操作系统,即使操作系统依旧在运行中,但是项目却无法访问了。

这是因为java -jar的命令只能在当前进程运行,我们需要的是在后台单独开一个进程,让它持续运行。

解决方案一:

java -jar xxx.jar &
&代表在后台运行。
特点:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。

解决方案二:

nohup java -jar SpringBootDemo.jar &

nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行

当用 nohup 命令执行时,缺省情况下该进程的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。

解决方案三:

nohup java -jar SpringBootDemo.jar >out.txt &

">out.txt"是将command的输出重定向到out.txt文件,即输出内容不打印到屏幕上,而是输出到out.txt文件中

推荐使用方案二或方案三!

这里只是做一个简单的样例展示,具体可以根据springBoot的日志技术,分层级分大小的去记录日志到本地文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/246312.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

『OpenCV-Python|鼠标作画笔』

Opencv-Python教程链接&#xff1a;https://opencv-python-tutorials.readthedocs.io/ 本文主要介绍OpenCV-Python如何将鼠标作画笔绘制圆或者矩形。 示例一&#xff1a;图片上双击的位置绘制一个圆圈 首先创建一个鼠标事件回调函数&#xff0c;鼠标事件发生时就会被执行。鼠标…

【代码随想录-数组】移除元素

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

多维时序 | Matlab实现CNN-BiGRU-Mutilhead-Attention卷积双向门控循环单元融合多头注意力机制多变量时间序列预测

多维时序 | Matlab实现CNN-BiGRU-Mutilhead-Attention卷积双向门控循环单元融合多头注意力机制多变量时间序列预测 目录 多维时序 | Matlab实现CNN-BiGRU-Mutilhead-Attention卷积双向门控循环单元融合多头注意力机制多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一…

element+vue 之 v-limit 按钮操作权限

1.新建一个permission.js文件 import store from /storeexport default {inserted: function (el, binding) {const { perms: limits } store.state.userconst { value: params } bindingif (!limits.length) returnif (params && Array.isArray(params)) {if (!limi…

GraphQL的力量:简化复杂数据查询

1. GraphQL GraphQL 是一种由 Facebook 开发并于 2015 年公开发布的数据查询和操作语言&#xff0c;也是运行在服务端的运行时&#xff08;runtime&#xff09;用于处理 API 查询的一种规范。不同于传统的 REST API&#xff0c;GraphQL 允许客户端明确指定它们需要哪些数据&am…

【Spring】Spring简介、IOC、DI

目录 Spring简介 Spring Framework五大功能模块 IOC容器 IOC思想 IOC容器在Spring中的实现 基于XML管理bean 配置bean 获取bean 依赖注入之setter注入 依赖注入之构造器注入 特殊值处理 字面量赋值 null值 xml实体 CDATA节 为类类型属性赋值 为数组类型属性赋值 为集合类型属性…

03-Redis缓存高可用集群

文章目录 1、Redis集群方案比较2、Redis高可用集群搭建redis集群搭建Java操作redis集群 4、Redis集群原理分析槽位定位算法跳转重定位Redis集群节点间的通信机制gossip通信的10000端口网络抖动 Redis集群选举原理分析集群脑裂数据丢失问题集群是否完整才能对外提供服务Redis集群…

机器学习工程师在人工智能时代的角色

机器学习工程师在人工智能时代的角色 在当今的数字时代&#xff0c;人工智能&#xff08;AI&#xff09;已成为许多行业不可或缺的一部分。从流程自动化到增强客户体验&#xff0c;人工智能具有改变企业的巨大潜力。这一变革性技术的核心是机器学习&#xff0c;该领域专注于开…

五、Kotlin 函数进阶

1. 高阶函数 1.1 什么是高阶函数 以下 2 点至少满足其一的函数称为高阶函数&#xff1a; 形参列表中包含函数类型的参数 //参数 paramN 可以是&#xff1a;函数引用、函数类型变量、或 Lambda 表达式。 fun funName(param1: Type1, param2: Type2, ... , paramN: (p1: T1, p2…

快速搭建一个基于MVC架构的Spring Boot应用

提示&#xff1a;如果对 MVC 架构模式不熟悉可以看我的博客 > MVC架构模式与三层架构 快速搭建一个基于MVC架构的Spring Boot应用 一、Web 服务二、快速构建一个Spring Web MVC的 Web 应用1.使用脚手架快速的搭建环境&#xff1a;2.准备数据库&#xff1a;3.编写Dao层访问数…

Tortoise-tts Better speech synthesis through scaling——TTS论文阅读

笔记地址&#xff1a;https://flowus.cn/share/a79f6286-b48f-42be-8425-2b5d0880c648 【FlowUs 息流】tortoise 论文地址&#xff1a; Better speech synthesis through scaling Abstract: 自回归变换器和DDPM&#xff1a;自回归变换器&#xff08;autoregressive transfo…

探索IOC和DI:解密Spring框架中的依赖注入魔法

IOC与DI的详细解析 IOC详解1 bean的声明2 组件扫描 DI详解 IOC详解 1 bean的声明 IOC控制反转&#xff0c;就是将对象的控制权交给Spring的IOC容器&#xff0c;由IOC容器创建及管理对象。IOC容器创建的对象称为bean对象。 要把某个对象交给IOC容器管理&#xff0c;需要在类上…

LeetCode:376.摆动序列

个人主页&#xff1a;仍有未知等待探索-CSDN博客 专题分栏&#xff1a;算法_仍有未知等待探索的博客-CSDN博客 题目链接&#xff1a;376. 摆动序列 - 力扣&#xff08;LeetCode&#xff09; 一、题目 如果连续数字之间的差严格地在正数和负数之间交替&#xff0c;则数字序列称…

jsp原理与EL,JSTL表达式基础内容整理

2024年了&#xff0c;vue都到了灌篮高手的版本&#xff0c;真的没想到我还会在这个时间整理一篇关于jsp页面操作的文章。技术就是一个不用就忘的东西&#xff0c;既然工作中还有用武之地&#xff0c;那就整理一下以备不时之需。 长话短说&#xff0c;不展开叙述&#xff0c;只记…

Hive3.1.3基础(续)

参考B站尚硅谷 分区表和分桶表 分区表 Hive中的分区就是把一张大表的数据按照业务需要分散的存储到多个目录&#xff0c;每个目录就称为该表的一个分区。在查询时通过where子句中的表达式选择查询所需要的分区&#xff0c;这样的查询效率会提高很多。 分区表基本语法 分区表…

【linux】Debian挂起和休眠

一、挂起和休眠 在Debian桌面系统中&#xff0c;挂起和休眠是两种不同的状态&#xff0c;它们之间有一些区别。 挂起&#xff08;Suspend&#xff09;是将当前系统的状态保存到RAM&#xff08;内存&#xff09;中&#xff0c;然后关闭所有硬件设备&#xff0c;除了RAM之外。在…

如何在美国硅谷高防服务器上运行自定义的脚本和应用程序

在美国硅谷高防服务器上运行自定义的脚本和应用程序需要一定的技术和知识。下面我们将介绍一些关键步骤&#xff0c;帮助您顺利地在这些服务器上运行自定义应用程序和脚本。 确保您有对服务器的访问权限&#xff0c;并且已经通过SSH等方式连接到服务器。接下来&#xff0c;您可…

Zabbix交换分区使用率过高排查

Zabbix High swap space usage 问题现象 Zabbix 出现Highswap space usage(less than 50% free)告警&#xff0c;提示交换分区空间使用率超过50% 处理过程 1. 确定swap分区是否已占满 free -h登录Zabbix服务器检查内存情况&#xff0c;检查发现Linux服务器空闲的内存还有不少…

相机与镜头

一、相机视场 相机的视场角&#xff0c;也就是相机能够看到物像角度的最大值&#xff0c;视场角与焦距的关系为像高f*tan(fov/2)。由于相机的感光面是矩形&#xff0c;所以相机能够看到的区域也是矩形。探究相机的视场角&#xff0c;便于分析物面上那些区域属于相机盲区&#x…

宝塔面板一键部署幻兽帕鲁联机服务器教程

幻兽帕鲁是一款深受玩家喜爱的多人在线游戏&#xff0c;玩家可以自行搭建联机服务器&#xff0c;邀请亲朋好友一起在世界探索畅玩&#xff0c;为了方便玩家更快速的部署自己的幻兽帕鲁联机服务器&#xff0c;宝塔面板推出了幻兽帕鲁一键部署服务&#xff0c;一键即可安装并调整…