Spring Boot项目三种启动方式及后台运行详解
1 Spring Boot项目三种启动方法
- 运行
Application.java
类中的Main方法 - 项目管理工具启动
Maven
项目:mvn spring-boot:run
Gradle
项目:gradle run
- 打包成
Jar
文件启动:java -jar [项目名称].jar
Maven
项目:mvn package
,在Target目录下生成Jar
包Gradle
项目:gradle build
,在build/libs目录下生成Jar
包
2 Spring Boot项目后台启动
在项目开发阶段,通常会使用前两种方法启动,而在部署的时候通常会使用第三种方法
然而
java -jar [项目名称].jar
命令只能在前台运行项目,当执行其他操作或者关闭SSH会话时,项目运行终止
2.1 安装配置nohup命令
nohup
作用:使程序在服务器后台执行,执行程序的命令不依赖ssh界面。
用法:nohup 需执行命令 &
- 查询nohup是否安装
which nohup # 查看/usr/bin目录下有没有nohup命令
- 下载安装nohup
yum install coreutils
- 查找下载的nohup
cd /usr/bin
which nohup
- 配置nohup路径
vi ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
PATH=$PATH:/usr/bin
export PATH
- 立即生效配置
source ~/.bash_profile
- 使用nohup命令
nohup [需要后台执行的命令] &
2.2 nohup命令
- 用途:不挂断的运行命令
- 语法:
nohup command [Arg...] [&]
- 描述:nohup 命令由需要后台执行的Command命令及其参数[Arg…]组成,忽略所有挂断(SIGHUP)信号。
- 示例:
nohup
java -jar xxx.jar &
nohup会把执行结果中的日志输出到当前文件夹下面的nohup.out文件中,通常情况下我们使用以上命令即可。
nohup java -jar xxx.jar > catalina.out 2>&1 & # 指定日志文件输出地址
nohup java -jar xxx.jar >/dev/null & # 关闭日志输出
2.3 挂断nohup命令
ps -ef # 查看系统进程,并记下java -jar xxx.jar命令的PID
kill -9 [PID] # 强制结束进程
3 应用启动、停止、重启shell脚本
- 启动应用的脚本:start.sh
#!/bin/bash
nohup java -jar yourapp.jar --server.port=8888 &
- 关闭应用的脚本:stop.sh
#!/bin/bash
PID=$(ps -ef | grep yourapp.jar | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
echo Application is already stopped
else
echo kill $PID
kill $PID
fi
- 整合了关闭和启动的脚本:run.sh,由于会先执行关闭应用,然后再启动应用,这样不会引起端口冲突等问题,适合在持续集成系统中进行反复调用。
#!/bin/bash
echo stop application
source stop.sh
echo start application
source start.sh
4 创建系统服务
在Spring Boot的Maven插件中,还提供了构建完整可执行程序的功能,什么意思呢?就是说,我们可以不用java -jar,而是直接运行jar来执行程序。这样我们就可以方便的将其创建成系统服务在后台运行了。
- 在pom.xml中添加Spring Boot的插件,并注意设置executable配置
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
</plugins>
</build>
- 在完成上述配置后,使用mvn install进行打包,构建一个可执行的jar包
- 创建软连接到/etc/init.d/目录下
sudo ln -s /var/yourapp/yourapp.jar /etc/init.d/yourapp
- 在完成软连接创建之后,我们就可以通过如下命令对yourapp.jar应用来控制启动、停止、重启操作了
/etc/init.d/yourapp start|stop|restart