项目部署时遇到坑
在部署zhihudemo时,没有用Jenkins这种自动化部署工具,在linux centos中部署jar包项目时遇到一个坑,通过xshell远程连接服务器,在系统中使用“java -jar”命令启动jar包时,输出日志会占据当前终端页面,如果关闭终端窗口的话,整个java程序就将停止,为了解决这个问题,可以将jar包设置为后台服务,并进一步设置为系统服务和开机自启
编写启动shell脚本
在/etc/init.d/目录下创建zhihudemoService.sh脚本如下:
#保证该脚本能被chkconfig识别
#!/bin/sh
# chkconfig: 2345 85 15
# description:auto_run
#程序名
RUN_NAME="zhihudemo-0.0.1-SNAPSHOT.jar"
#jar 位置
JAVA_OPTS=/root/zhihudemo-0.0.1-SNAPSHOT.jar
LOG_OPTS=/root/zhihudemo.log
#开始方法
start() {
nohup java -jar $JAVA_OPTS >$LOG_OPTS &
echo "$RUN_NAME started success."
}
#结束方法
stop() {
echo "stopping $RUN_NAME ..."
kill -9 `ps -ef|grep $JAVA_OPTS|grep -v grep|grep -v stop|awk '{print $2}'`
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Userage: $0 {start|stop|restart}"
exit 1
esac
设置执行权限
将zhihudemo-0.0.1-SNAPSHOT.jar和zhihudemoService.sh加上执行权限:
chmod +x /etc/init.d/zhihudemoService.sh
chmod +x /etc/init.d/zhihudemo-0.0.1-SNAPSHOT.jar
添加到chkconfig
添加到chkconfig作为系统服务,并设置开机启动:
chkconfig --add zhihudemoService.sh (添加为系统服务)
chkconfig zhihudemoService.sh on (开机自启动)
service zhihudemoService.sh start(启动服务)
执行完成后重启,查看启动日志,可以看到该jar包程序已经作为守护进程在系统后台运行