SpringBoot学习(番外篇)------使用shell命令或bat文件优雅启动SpringBoot项目
前言
在之前的博文中,我们一起探究了SpringBoot的使用以及和通用的技术栈进行整合,使用SpringBoot开发确实非常的便利.那么我们在开发完成了SpringBoot应用,并打包成jar以后,就要在Linux或者Windos Server服务器部署,一般来说我们可以使用java -jar xxxxx.jar
的方式来运行,但是这样做显的很不专业.在本篇博文中,我们将使用shell脚本的方式来部署SpringBoot应用.
正文
首先我们有一个已经打包好的SpringBoot的jar包:
laojunshan-demo-0.0.1-SNAPSHOT.jar
下面将通过linux和windos两个不同的服务器来说明
Linux(CentOS)
1. 使用两个shell脚本来启动和关闭
在linux下,我们可以通过shell脚本的方式来优雅的启动或者关闭SpringBoot应用.
首先,我们将应用的jar包上传到服务器的指定目录,这里我将其上传到/opt/laojunshan
这个目录下.
现在我们来开始编写shell脚本:
-
使用vim命令创建一个shell脚本文件
#创建一个脚本文件,如果文件已经存在,则打开该文件 vim start.sh
-
在
start.sh
文件中输入脚本内容:下面命令中的log.out代表将控制台的日志输出到当前目录下.
#!/bin/bash nohup java -jar laojunshan-demo-0.0.1-SNAPSHOT.jar log.out 2>&1 &
保存退出,一个启动的shell脚本就完成啦!
-
用同样的方式创建并编写一个关闭的shell脚本
#创建一个关闭应用的脚本 vim stop.sh
stop.sh脚本的内容如下:
#!/bin/bash PID=$(ps -ef | grep laojunshan-demo-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{ print $2 }') if [ ${PID} ]; then echo 'Application is stpping...' echo kill $PID DONE kill $PID else echo 'Application is already stopped...' fi
-
完成了以上步骤以后,我们可以看到,两个shell脚本是灰色的:
此时我们的脚本还是不能用的,必须要给两个脚本相应的执行权限,我们通过下面的命令来给两个脚本权限:
#使脚本具有执行权限 chmod +x ./start.sh chmod +x ./stop.sh
赋予权限以后的shell脚本就变成了绿色:
-
运行shell脚本
现在我们的shell脚本都写完了,下面就可以通过shell脚本来优雅的启动springboot应用了
#启动springboot的jar ./start.sh
运行这个命令以后,会出现如下界面:
说明程序已经运行了,这个时候光标还是在运行状态的,我们可以
ctrl+c
来跳出,此时程序还是在后台运行的. -
访问项目验证
-
优雅关闭SpringBoot应用
如果要关闭应用,就字节可以使用stop.sh脚本来关闭
#关闭应用 ./stop.sh
可以看到应用被杀死了:
2. 使用一个shell脚本来启动和关闭项目
如果你以为以上的方式已经很优雅了,那就错了,下面我们来通过一个shell脚本进行应用的状态查询,启动以及结束.
需要创建的shell脚本的命令如下:
#!/bin/sh
## java env
export JAVA_HOME=/opt/java/jdk1.8.0_191
export JRE_HOME=$JAVA_HOME/jre
API_NAME=laojunshan-demo-0.0.1-SNAPSHOT
JAR_NAME=$API_NAME\.jar
#PID 代表是PID文件
PID=$API_NAME\.pid
#使用说明,用来提示输入参数
usage() {
echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"
exit 1
}
#检查程序是否在运行
is_exist(){
pid=`ps -ef|grep $JAR_NAME|grep -v grep|awk '{print $2}' `
#如果不存在返回1,存在返回0
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}
以上脚本在使用的时候要修改一下两个地方:
- JDK的位置修改成你自己服务器的位置
- API_NAME的值要修改成jar应用的名字
- 别忘了赋予脚本权限
编写并且赋权以后,还是在jar目录下运行脚本:
#查看应用状态
sh laojunshan.sh status
#启动应用
sh laojunshan.sh start
#关闭应用
sh laojunshan.sh stop
#重启应用
sh laojunshan.sh restart
运行以上命令就可以对应用进行自由的启动和关闭…
Windows Server下使用bat脚本启动关闭应用
有的时候,服务器不一定是linux环境,如果是Windos Server服务器,我们也可以使用bat叫本来对服务进行启动和关闭
如果在Windos下使用sh脚本也是可以的,不过要安装git才可以哦
1. 运行后出现窗口,窗口关闭后服务关闭
脚本如下:
@echo off
java -jar xxxxxx.jar
@pause
这种方式启动的时候,会有个DOS窗口一直存在,如果关闭了窗口,对应的java服务也就关闭了
2. 运行后没有窗口,服务在后台启动,关闭需要结束对应的进程
脚本如下:
@echo off
set path=D:\JAVA\jdk1.8.0_40\jre\bin
START "laojunshan" "%path%\javaw" -jar xxxxxx.jar
pause
这个脚本需要指定JDK路径,修改jar名称以后,运行脚本,窗口会关闭,但是服务是不会关闭的.要关闭服务,只需要在任务管理器关闭对应的进程(一般是java进程)
总结
以上就是SpringBoot引用在服务器部署的shell脚本和bat脚本,记录在这里,以后用的时候可以回来看看…