一、前提条件
部署之前确保已经安装好所需环境
1.1,部署jar包
jar包部署必须要jdk环境的,不用考虑,
1.2部署前端项目
部署前端项目需要nginx来转发
1.3环境安装教程
Linux部署环境Jdk篇(安装Jdk17)
Linux部署环境Redis篇(redis-5.0.5安装)
Linux部署环境MySQL篇(mysql-5.7安装)
Linux部署环境Nginx篇(安装Nginx1.24.0)
二、防火墙相关命令
部署之前先了解一下防火墙的一些基本命令,后面会用到,如果了解或者防火墙墙是关闭的直接跳过。
1.查看防火墙状态
systemctl status firewalld
2.如果不是显示active状态,需要打开防火墙
systemctl start firewalld
3.查看所有已开放的临时端口(默认为空)
firewall-cmd --list-ports
4.查看所有永久开放的端口(默认为空)
firewall-cmd --list-ports --permanent
5.添加临时开放端口(例如:比如我修改ssh远程连接端口是223,则需要开放这个端口)
firewall-cmd --add-port=223/tcp
6.添加永久开放的端口(例如:223端口)
firewall-cmd --add-port=223/tcp --permanent
7.关闭临时端口
firewall-cmd --remove-port=80/tcp
8.关闭永久端口
firewall-cmd --remove-port=8080/tcp --permanent
9.配置结束后需要输入重载命令并重启防火墙以生效配置
firewall-cmd --reload
systemctl restart firewalld
10.开端口加重启
firewall-cmd --add-port=8848/tcp --permanent
systemctl restart firewalld.service
三、Java部署jar包并后台运行
1.windows部署
执行jar包的命令和在windows操作系统上是一样
java -jar jarName-0.0.1-SNAPSHOT.jar;
2.Linux部署
2.1、将jar程序设置成后台运行,并且将标准输出的日志重定向至文件msg.log
[!NOTE]
注: nohup命令的作用就是让程序不挂断运行(推荐)
nohup java -jar jarName-0.0.1-SNAPSHOT.jar >msg.log 2>&1 &;
2.2、平时直接使用
nohup java -jar jarName-0.0.1-SNAPSHOT.jar &;
nohup和&的区别
&:指在后台运行,但当用户推出(挂起)的时候,命令自动也跟着退出
nohup:不挂断的运行,并没有后台运行的意思,用nohup运行命令可以使命令永久的执行下去
这样我们断开SSH连接时不会影响他的运行,注意!注意!nohup没有后台运行的意思;&才是后台运行。
3.停止或重新部署
3.1使用命令找到进程
ps -ef|grep java
3.2使用命令杀死进程(9836是进程号)
kill -9 9836
3.3重新执行一下nohup命令即可
四、Nginx部署项目
1.Linux部署
1.1.上传前端文件
[!NOTE]
可以在html目录下创建一个专门放置项目的文件夹,如project,之后再为不同的项目创建不同的文件夹
将项目文件上传到nginx的html目录下
1.2.写配置文件
[!NOTE]
在nginx目录下创建项目配置文件夹,之后的项目配置文件就放到这个目录,如project_conf
在配置文件目录新建一个文件,后缀必须是为conf,写入配置文件,示例如下
注:没有ssl证书直接使用1.2.3的示例
1.2.1上线项目配置示例
server {
listen 80;
server_name XXXXXXXXX.cn;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
server {
# listen 80;
listen 443 ssl;
server_name XXXXXXXXXXXXXXXXXXXXX.cn;
#ssl on;
ssl_certificate XXXXXXXXXXXXXXXXXXXXXXX; #证书公钥
ssl_certificate_key XXXXXXXXXXXXXXXXXXXXXXXXXX; #证书私钥
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!3DES:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers on;
#charset koi8-r;
location /uploadfiles {
proxy_pass http://127.0.0.1:8003/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 1000m;
client_body_buffer_size 128k;
proxy_connect_timeout 20;
proxy_send_timeout 30;
proxy_read_timeout 30;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
location / {
root /usr/local/project/forest-patrol-backend/dist;
index index.shtml index.html index.htm;
#此处的 proxy_pass与upstream 对应
}
location ^~/api/ {
proxy_pass http://localhost:8002/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 20;
proxy_send_timeout 30;
proxy_read_timeout 30;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
1.2.2 nginx项目配置文件示例
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
1.2.3自定义配置示例
#总系统
server {
listen 910;
server_name 192.168.10.177;
location / {
root D:/BG/nginx-1.24.0/html/object/ruoyi_vue_plus/dist;
index index.html index.htm;
}
location ^~/prod-api/ {
proxy_pass http://192.168.10.177:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 20;
proxy_send_timeout 30;
proxy_read_timeout 30;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
1.3.重新加载配置文件
1)先进入nginx启动文件目录
cd /usr/local/nginx/sbin
2)执行重载
./nginx -s reload
2.Linux停止前端项目
2.1.移动配置文件
将对应项目的配置文件移动到其他文件夹
重新加载配置文件
1)先进入nginx启动文件目录
cd /usr/local/nginx/sbin
2)执行重载
./nginx -s reload
五、报错
1.报错Handler dispatch failed: java.lang.InternalError: java.lang.reflect.Invocati
1.1原因
本地不存在问题,确定为Linux 服务器问题
Centos 服务器中图形验证码依赖系统组件,需要安装系统组件
1.2解决方法
1. kill 掉 jar 进程
2. yum install fontconfig
3. 安装完成后cd /usr/share/fonts
4. 执行fc-cache
5.重启 jar