jar包生产环境正确的发布方式

/ 小问题积累 / 0 条评论 / 819浏览

jar包生产环境正确的发布方式

  1. springboot的流行,让大家的开发和发布都变得十分便捷,一般我们启动开发好的项目肯定用过下面的代码 nohup java -jar xxxx.jar > xxxx.log &,然后在需要停止的时候先ps -ef | grep jar然后再 kill 也就是后台启动和关闭进程,但是一般生产环境中我们不这样做,我们可以直接将jar作为一个系统服务,这样每次迭代更新启动的时候只需要使用systemctl /start/stop/status/ xxxx即可

  2. 下面是一般的步骤

2.1 上传jar文件 将jar文件上传到指定的文件夹下待发布 2.2 编写启动和停止服务的shell脚本 启动(编写启动脚本 xxx-start.sh)

#!/bin/sh
nohup /usr/local/lib/jdk1.8/jdk1.8.0_152/bin/java -jar /home/sudo_root/jars/prod/xxx_prod.jar >>  /home/sudo_root/jars/prod/xxx_prod.log &
echo $! > /var/run/xxx.pid

停止(编写停止脚本 xxx-stop.sh)

#!/bin/bash
PID=$(cat /var/run/xxx.pid)
kill -9 $PID

2.2 进入系统服务目录编写服务

命令:cd /usr/lib/systemd/system
命令:vim xxx.service 

xxx.service文件的内容大致如下

[Unit]
Description=xxxservice
After=syslog.target network.target
 
[Service]
Type=forking
ExecStart=/home/xxx-start.sh
ExecStop=/home/xxx-stop.sh
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target

2.3下面即可使用

systemctl start xxx
systemctl stop xxx
systemctl status xxx

操作服务

2.4 可能会出现脚本文件权限的问题 可以使用

chmod +x  xxx-start.sh
chmod +x  xxx-stop.sh

2.5 为这个服务设置开机自启

chkconfig xxx on

2.6 查看该服务否开机自启

systemctl is-enabled firewalld.service