SpringBoot项目部署
一、环境检查
在进行部署之前,要检查自己云服务器上面的jdk、nginx、mysql、tomcat、redis是否可以使用。如果没有安装看https://blog.csdn.net/2302_79585857/article/details/148718339?spm=1001.2014.3001.5502
里面的第二大点有下载安装的详情
现在详细说一下mysql和redis
1.MySQL
1.1基本
当在云服务器上面下载编译好mysql之后可以使用下面的指令查看自己mysql的运行状态
systemctl status mysqld
mysql编译之后的数据库的库保存的路径为/var/lib/mysql/(可能根据安装不一样,路径也会不一样)
使用下面的指令可以查看到mysql的可执行文件所在路径
which mysql
1.2使用Navica链接云服务器
这里的连接名可以随便起,主机为自己云服务器的公网ip,密码为云服务器上mysql的密码(可能与本地密码不同)
然后测试链接,如果都对的话就确定
然后打开这个新建的链接就能够看到对应的数据库
2.redis
在链接里面有详细的配置,这里就不细说了
二、前后端的打包
1.前端打包
打开前端的代码
在控制台输入
npm run build:prod
之后等待打包成功,成功之后会出现下面的页面,并且能够发现多一个dist的文件夹
这样前端项目就打包好了
2.后端打包
首先在打包时要注意配置文件中的配置
mysql的配置
spring:# 数据库配置datasource:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://云服务器的公网ip:3306/库名?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=trueusername: rootpassword: 云服务器中mysql的密码
redis的配置
redis:host: localhost(或者是云服务器的公网ip)port: 6379database: 0password: 云服务器上的redis的密码timeout: 10slettuce:pool:min-idle: 0max-idle: 8max-active: 8max-wait: -1ms
先进行clean
之后进行install
如果有文件上传的话要修改文件上传的位置
upload:face: 云服务器中上传的位置。例如(/community/upload/face/)excel: 云服务器中上传的位置.例如(/community/upload/excel/)urlPrefix: http://云服务器的公网ip:项目对应的端口号/
之后就会出现一个target的文件夹,这个文件夹下面会有对应的jar包
这样后端也就打包好了
三、使用Nginx反向代理
1.nginx的运行位置
注意:nginx的解压位置和编译之后运行的位置不一样,下面这个是解压的位置(/usr/src/nginx/nginx-1.23.3/)
而编译之后的位置在:/usr/local/nginx/的位置下面
2.实现
将打包好的前端页面放在/usr/local/nginx/html/路径的下面
我们要修改/usr/local/nginx/conf/下的nginx.conf使其实现代理的功能
最初的nginx.conf文件的server下面是这样的,没有对应的后端代理的配置
我们要配置对应的后端代理的内容,在里面添加下面的内容
server {listen 8081;server_name localhost;# 前端静态资源配置location / {root html/dist; # 前端dist目录路径根据自己放的位置保存一致index index.html index.htm;}# 后端接口代理配置location /prod-api/ {proxy_pass http://云服务器的公网ip:后端代码的端口号/;}
然后Ctrl+s保存就好了
在/usr/local/nginx/sbin/这个目录下面执行开启nginx的代码
启动:./nginx
重启:./nginx -s reload
关闭:./nginx -s stop
启动之后输入下面的命令查看是否启动
ps -ef | grep nginx
这里会有两个nginx,因为
- Nginx启动会生成2个进程:主进程与守护进程
- 主进程:常用于提供反向代理服务。特点:占内存大。
- 守护进程:防止主进程意外关闭。特点:占内存小。
这样nginx就配置好了
3.后端打包的位置
一般后端打包的位置没有要求固定放在那里,但是为了方便管理放在了/usr/src/springBootJar/的路径下面
一样将后端打的jar包拖拽放进里面
两中启动方法:前台启动和后台启动
两者的区别
进程与终端关系
- 前台启动:当使用前台方式启动 jar 包时(比如在命令行中直接执行
java -jar yourProject.jar
),该 Java 进程会与当前终端绑定。终端窗口关闭或者在终端中按下Ctrl + C
等中断操作时,对应的 Java 进程也会随之终止。这是因为前台进程依赖于终端的输入输出环境,终端的关闭或者中断信号会直接传递给进程。 - 后台启动:采用后台启动 jar 包(常见方式如
nohup java -jar yourProject.jar &
),Java 进程会在后台独立运行,与启动它的终端解耦。即使关闭了启动该进程的终端窗口,进程依然可以继续运行。这是因为后台进程被放入了系统的进程组中,不再依赖于终端的生命周期。
输出与日志管理
- 前台启动:程序运行过程中的标准输出(
System.out
)和标准错误输出(System.err
)会直接打印在终端上。如果程序输出内容较多,可能会导致终端界面信息杂乱,而且不方便长期保存和查阅。 - 后台启动:通常需要借助一些命令参数来管理输出。例如,使用
nohup
命令启动时,默认会将标准输出和标准错误输出重定向到当前目录下的nohup.out
文件中。这样便于后续对程序运行过程中的输出进行查看和分析,有利于排查问题和监控程序状态。
资源占用与系统交互
- 前台启动:由于进程与终端紧密关联,终端在运行该 Java 进程时,会占用一定的资源用于显示输出信息和接收用户输入等。在某些情况下,如果终端长时间显示大量的程序输出,可能会导致终端响应变慢,甚至影响用户在该终端上进行其他操作。
- 后台启动:进程在后台运行,不会占用终端的显示和输入资源,用户可以在终端上继续执行其他命令或操作,系统资源的分配和利用更加合理。而且,后台进程可以更专注于自身的业务逻辑处理,不会受到终端交互操作的干扰。
进程管理难度
- 前台启动:管理相对简单直接,通过终端的中断操作就能快速停止进程。但如果需要在不中断终端操作的情况下对进程进行管理,比如查看进程状态、重启进程等,就不太方便。
- 后台启动:虽然进程的独立性更强,但管理起来相对复杂一些。需要借助系统的进程管理工具(如
ps
、kill
等命令)来查看和控制进程。例如,要停止一个后台运行的 Java 进程,需要先使用ps -ef | grep java
命令找到对应的进程 ID,然后再使用kill
命令来终止进程。
前台启动的命令
java -jar 自己的jar包的名称
后台启动的命令
nohup java -jar 自己的jar包名
后台启动之后就会自动创建nohup.out
这个里面放的是启动的日志
4.对应文件上传的地址
在配置文件中配置了地址
所以在云服务器中要创建对应的文件夹
在对应的位置下创建就好了
记得上述操作的端口号在云服务器上的防火墙和开放都要进行开启
四、启动项目
在浏览器中输入自己云服务器的公网ip:nginx.conf中的listen端口就能够访问到了