linux自动部署jar包,注册系统服务(基于Centos7)

最近一直在搞服务器,现在要运行我们的程序,都是jar包的格式,但是每次输入运行命令都很麻烦,现在进行放入脚本启动或者注册服务启动,来简化启动,但是这个方法也有一定的缺陷,需要一定的标准规范才可以正确运行,比如jar包的打包名称一定要和脚本中的名称一样

下面进入正题,首先来脚本启动

说一下前提,根据自己的需求修改相应的路径

1. jar包路径 /usr/local/docpc
2. jar包名称 doctor-pc-0.0.1-SNAPSHOT.jar
3. java路径 /usr/bin/java

新建启动脚本
脚本启动的日志会在jar包目录下生成

# vim start.sh

脚本内容如下


#启动命令所在目录
HOME='/usr/local/docpc'
start(){
  #进入命令所在目录
  cd $HOME
  nohup sudo /usr/bin/java -jar doctor-pc-0.0.1-SNAPSHOT.jar > doctor-pc-0.0.1-SNAPSHOT.jar.log 2>&1 &
}
stop(){
  #kill 掉本程序
  ps -ef | grep doctor-pc-0.0.1| grep -v grep |awk '{print $2}' | xargs sudo kill -9
}
case $1 in
  start)
   start
  ;;
  stop)
   stop
  ;;
  restart)
   $0 stop
   sleep 2
   $0 start
  ;;
  *)
   echo "Usage: {start|stop|restart}"
  ;;
esac

exit 


启动

./start.sh start

关闭

./start.sh stop

重启

./start.sh restart 

至此脚本启动完成,在jar包的同等级目录下会生成日志

下面来讲一下把jar包的启动注册到系统服务并添加到开机自启

jar包路径 /usr/local/docpc/
  1. 进入 /lib/systemd/system
# cd /lin/systemd/system
  1. 新建 docpc.service
# vim docpc.service
  1. docpc.service内容如下
[Unit]

Description=docpc
After=network.target


[Service]


ExecStart=/usr/bin/java -jar /usr/local/docpc/doctor-pc-0.0.1-SNAPSHOT.jar
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop= ps -ef | grep doctor-pc-0.0.1| grep -v grep |awk '{print $2}' | xargs sudo kill -9
[Install]

WantedBy=multi-user.target

  1. 给docpc.service加文件权限
# chmod 777 docpc.service
  1. 启动服务
# systemctl start docpc.service
  1. 关闭
# systemctl stop docpc.service
  1. 重启
# systemctl restart docpc.service
  1. 加入开机自启
# systemctl enable docpc.service
  1. 关闭开机自启
# systemctl disable docpc.service

到此,jar包的系统服务设置完成,脚本启动和注册系统是两个不同的启动方式,各位可以把启动脚本放入开机自动也可实现脚本的开机启动,这里就不说了,大家可以去Google一下。

下面进行强烈推荐的一波操作

  1. 首先把上面编写的shell启动脚本移动到/etc/rc.d/init.d目录下,并命名startjar
# mv start.sh /etc/rc.d/init.d/startjar
  1. 打开启动脚本
# vim startjar
  1. 头部添加声明代码
 #!/bin/sh
 #chkconfig: 2345 80 90
 #description:auto_run

完成的脚本代码如下

#!/usr/bin/sh
#chkconfig: 2345 80 90
#description:auto_run
#启动命令所在目录
HOME='/usr/local/docpc'
start(){
  #进入命令所在目录
  cd $HOME
  nohup sudo /usr/bin/java -jar doctor-pc-0.0.1-SNAPSHOT.jar > doctor-pc-0.0.1-SNAPSHOT.jar.log 2>&1 &
}
stop(){
  #kill 掉本程序
  ps -ef | grep doctor-pc-0.0.1| grep -v grep |awk '{print $2}' | xargs sudo kill -9
}
case $1 in
  start)
   start
  ;;
  stop)
   stop
  ;;
  restart)
   $0 stop
   sleep 2
   $0 start
  ;;
  *)
   echo "Usage: {start|stop|restart}"
  ;;
esac
exit 


  1. 服务添加
# chkconfig --add startjar

本步骤如果出现服务不支持chkconfig的解决方案就是第三步的操作

  1. 启动/关闭/重启/状态
# systemctl start startjar
# systemctl stop startjar
# systemctl restart startjar
# systemctl status startjar
  1. 脚本注册服务完成,本过程就是对上面两个过程的选择性整合,大家可根据实际情况选择使用最后附上删除服务
# chkconfig  --del startjar

有问题欢迎留言咨询

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值