当前位置: 首页 > news >正文

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 进程时,会占用一定的资源用于显示输出信息和接收用户输入等。在某些情况下,如果终端长时间显示大量的程序输出,可能会导致终端响应变慢,甚至影响用户在该终端上进行其他操作。
  • 后台启动:进程在后台运行,不会占用终端的显示和输入资源,用户可以在终端上继续执行其他命令或操作,系统资源的分配和利用更加合理。而且,后台进程可以更专注于自身的业务逻辑处理,不会受到终端交互操作的干扰。

进程管理难度

  • 前台启动:管理相对简单直接,通过终端的中断操作就能快速停止进程。但如果需要在不中断终端操作的情况下对进程进行管理,比如查看进程状态、重启进程等,就不太方便。
  • 后台启动:虽然进程的独立性更强,但管理起来相对复杂一些。需要借助系统的进程管理工具(如 pskill 等命令)来查看和控制进程。例如,要停止一个后台运行的 Java 进程,需要先使用 ps -ef | grep java 命令找到对应的进程 ID,然后再使用 kill 命令来终止进程。

前台启动的命令

java -jar 自己的jar包的名称

后台启动的命令

nohup java -jar 自己的jar包名

后台启动之后就会自动创建nohup.out

这个里面放的是启动的日志

4.对应文件上传的地址

在配置文件中配置了地址

所以在云服务器中要创建对应的文件夹

在对应的位置下创建就好了

记得上述操作的端口号在云服务器上的防火墙和开放都要进行开启

四、启动项目

在浏览器中输入自己云服务器的公网ip:nginx.conf中的listen端口就能够访问到了

http://www.lryc.cn/news/618911.html

相关文章:

  • string 类运算符重载
  • Win10系统Ruby+Devkit3.4.5-1安装
  • qt界面优化--api绘图
  • SpringBoot项目限制带参数接口配置使用数量实现
  • php+apache+nginx 更换域名
  • 力扣.870优势洗牌解决方法: 下标排序​编辑力扣.942增减字符串匹配最长回文子序列牛客.背包问题(最大体积)力扣.45跳跃游戏II 另一种思考
  • 牛客疑难题(6)
  • Transformer的编码器与解码器模块深度解析及python实现完整案例
  • 树:数据结构中的层次架构
  • 前端基础知识NodeJS系列 - 06( Node 中的 Stream 的理解?应用场景?)
  • 【154页PPT】某大型再生资源集团管控企业数字化转型SAP解决方案(附下载方式)
  • 【从零开始java学习|第三篇】变量与数据类型的关联
  • 扣子空间深度解析
  • Apache 服务器基础配置与虚拟主机部署
  • CentOS 7.9 升级 GLibc 2.34
  • (C++)继承全解析及运用
  • Java 大视界 -- Java 大数据在智能教育学习效果评估指标体系构建与精准评估中的应用(394)
  • 教程 | 用Parasoft SOAtest实现高效CI回归测试
  • Day02——Docker
  • 一体化步进伺服电机在无人机舱门应用中的应用案例
  • 书籍数组中未出现的最小正整数(8)0812
  • 小白挑战一周上架元服务——ArkUI04
  • Ubuntu与Rocky系统安装Java全指南
  • C# 基于halcon的视觉工作流-章29-边缘提取-亚像素
  • 深入理解数据库架构:从原理到实践的完整指南
  • 力扣47:全排列Ⅱ
  • ffmpeg,ffplay, vlc,rtsp-simple-server,推拉流命令使用方法,及测试(二)
  • Linux内核编译ARM架构 linux-6.16
  • 深度贴:前端网络基础及进阶(3)
  • archlinux中VLC无法播放视频的解决办法