第一种
来源于:https://www.cnblogs.com/zhyg/p/5821684.html
Spring boot 应用服务安装部署(maven工程)
1.首先在maven工程的pom文件中引入以下标签并保存
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
这样就可以将Spring boot工程打包成可执行jar包
打开windows cmd 或linux 命令行 执行打好的可执行jar包 用以下命令就可以执行
java -jar abcd.jar 就可以执行spring boot 应用程序
2.编辑安装linux服务安装文件
本人是在windows环境下 用记事本先编辑好再上传到centos7 系统上面的
(1)首先创建记事本文件
(2)编写以下语句为了方便粘贴直接上文本
[Unit]
Description=abcd service
After=syslog.target
[Service]
Type=simple
ExecStart= /usr/bin/java -jar /home/app/abcd.jar
[Install]
WantedBy=multi-user.target
说明
Description 服务描述
/usr/bin/java java路径(我这里是绝对路径,可以使用其他可执行java的路径)
/home/app/abcd.jar 可执行jar包的路径 然后将文本文件保存成后缀名为.service 上面的文件保存之后 可以是abcd.service 3.上传可执行jar包和.service安装文件 jar包程序文件上传到自定义的位置(我们会在每个系统用户下定义一个叫app的文件夹将jar包保存在此文件夹) .service文件上传到系统/etc/systemd/system 目录下(本人用的是centos7系统,其他系统大同小异酌情处理)(如果你对linux文本编辑熟练的话 可以直接创建文件进行编辑) 注意编码要一致(验证是否一致只需在linux服务器上打开.service文件看是都和windows一致是否有乱码) 4.在部署服务器上执行以下命令(centos7) 首先 sudo systemctl daemon-reload 刷新服务配置文件 然后 sudo systemctl enable abcd.service 设置开机重启(视情况而定) 再 sudo systemctl start abcd.service 启动服务 5.查看日志 sudo journalctl -u abcd.service 以上linux各种操作都是在centos7下 其他版本系统基本差不多只是命令不同
这种方式的确可以实现党运行jar的进程挂掉后重启的效果,但是打印的日志不在jar包服务应该打印的位置。
还有一点是通过这种方式启动后,jar无法正常运行,估计是没有加环境变量导致的,但是没有找到解决方案;这种问题在第二种方法里也存在,但是找到了解决方案。
第二种
这种方式是通过crontab定时任务执行shell脚本实现jar包自动重启
先创建一个脚本restart.sh,编辑
#!/bin/sh
source /etc/profile
export LANG="en_US.UTF-8"
export JAVA_HOME=/usr/local/java/jdk1.8.0_91
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/dt.jar:$JAVA_HOME/tools.jar
#java环境变量
jarDir="/var/www/voice.monitor.yuyin.tv/postpro.monitor"
jar="MscMoniter.jar"
logFile="/var/www/voice.monitor.yuyin.tv/postpro.monitor/restart.log"
restart(){
cd ${2}
if [ ! -f ${1} ];then
echo "jar not exist" >> ${logFile}
return
fi
(nohup java -jar ${1} &)
#端口映射 iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
}
check(){
count=$(ps -ef | grep ${1} | grep -v "grep")
if [ -n "${count}" ];then
# echo "`date` ${1} is running" >> ${logFile}
echo "`date` ${1} s running"
else
restart ${1} ${2}
echo "`date` ${1} is down. restartig" >> ${logFile}
# echo "`date` ${1} is down"
fi
}
check ${jar} ${jarDir}
然后通过crontab -e命令创建一个定时任务
*/1 * * * * /etc/profile;/bin/sh /var/www/voice.monitor.yuyin.tv/postpro.monitor/restart.sh
在这里值得注意的是,/etc/profile;/bin/sh这个环境变量的路径一定要加上,否则会导致jar虽然通过定时任务的执行脚本启动了,但是无法正常运行。