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/
- 进入 /lib/systemd/system
# cd /lin/systemd/system
- 新建 docpc.service
# vim docpc.service
- 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
- 给docpc.service加文件权限
# chmod 777 docpc.service
- 启动服务
# systemctl start docpc.service
- 关闭
# systemctl stop docpc.service
- 重启
# systemctl restart docpc.service
- 加入开机自启
# systemctl enable docpc.service
- 关闭开机自启
# systemctl disable docpc.service
到此,jar包的系统服务设置完成,脚本启动和注册系统是两个不同的启动方式,各位可以把启动脚本放入开机自动也可实现脚本的开机启动,这里就不说了,大家可以去Google一下。
下面进行强烈推荐的一波操作
- 首先把上面编写的shell启动脚本移动到/etc/rc.d/init.d目录下,并命名startjar
# mv start.sh /etc/rc.d/init.d/startjar
- 打开启动脚本
# vim startjar
- 头部添加声明代码
#!/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
- 服务添加
# chkconfig --add startjar
本步骤如果出现服务不支持chkconfig的解决方案就是第三步的操作
- 启动/关闭/重启/状态
# systemctl start startjar
# systemctl stop startjar
# systemctl restart startjar
# systemctl status startjar
- 脚本注册服务完成,本过程就是对上面两个过程的选择性整合,大家可根据实际情况选择使用最后附上删除服务
# chkconfig --del startjar
有问题欢迎留言咨询
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用