因为 springboot 有内置 tomcat 容器,所以我们在 linux 部署 springboot 项目的时候可以不安装 tomcat ,直接用 jar 包进行部署。
一、springboot 相关配置
1、配置文件
springboot 项目中,有如下三个配置文件,一个主配置文件,两个不同环境的配置文件
application.yml 主配置文件内容
spring:
profiles:
active: prod
2、将项目打成 jar 包
将 springboot 项目打成 jar 包
如果 pom 文件中没有设置这个打包方式,默认会打成 jar 包
<packaging>war</packaging>
也可以直接将打包方式设置成 jar
<packaging>jar</packaging>
3、将 jar 包通过工具 xftp 上传到服务器
二、 Linux 部署 jar
首先 Linux 上需要配置好相关的 java 环境,也就是 jdk,不会配置的可以参考下面这篇文章
1、部署 springboot jar 包脚本
新建 restart.sh 文件,文件内容如下
# 检查端口号为 8080 的 tomcat 进程 id
pid=$(netstat -nlp | grep :8080 | awk '{print $7}' | awk -F"/" '{ print $1 }')
# 如果 8080 在运行,存在进程号
if [ -n "$pid" ];then
# 杀死 8080 存在的进程号
kill -9 $pid
# 运行部署的 jar 包
nohup java -jar springboot-demo.jar --spring.profiles.active=prod &
# 如果 8080 未运行,直接启动
else
# 运行部署的 jar 包
nohup java -jar springboot-demo.jar --spring.profiles.active=prod &
fi
相关命令代码解释
if [ -n “$pid” ]:当 pid 的长度大于0时为真(串非空),语法格式如下
if [ -n "$pid" ];then
# 如果 pid 不为空
else
# 如果 pid 为空
fi
nohup:用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行(也就是说让项目保持后台运行)。
nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。
java -jar:运行部署 jar 的命令
springboot-demo.jar:项目打包后的 jar 包名称
–spring.profiles.active=prod:选择以 prod 配置文件进行启动
&:表示任务在后台执行
2、运行 restart.sh 脚本
restart.sh 文件建立好之后,我们需要执行这个文件才能让我们的 jar 包运行
在 restart.sh 脚本所在目录下,使用如下命令执行脚本
./restart.sh
刚创建好的脚本一般是无法执行的,会提示:“权限不够”,那么怎么解决呢?
举个栗子,比如这个新建好的 test 脚本,此时是无法执行的
使用如下命令授权
chmod -R 777 ./test.sh
授权之后,这个文件会有明显的变化,颜色变成了绿色,表示是一个可执行文件
我们就可以在当前目录下,直接使用 ./test.sh 命令执行了
test 里面的内容是输出这个信息
执行之后
不扯远了,同理,如果我们创建好的部署 jar 的脚本文件不能执行,使用授权命令授权之后再执行就可以了。