Linux下java项目使用 systemd管理服务

问题:实际生产中,有些项目采用jar包的形式部署在服务器上,如果手动启动需要敲很长的命令,如 nohup java -jar target.jar --spring.profiles.avtive=prod --server.port=8080 ,很麻烦。

需求:使用systemctl 命令进行启停java服务。

解决方案:

1、编写启停项目脚本

vim web.sh
#!/bin/bash
#

source /etc/profile
jarName="web.jar"
workDir="/opt/webApp"

start(){
    cd ${workDir} && nohup java -jar ${jarName} --spring.profiles.active=prod --server.port=8080 >demo.log 2>&1 &
}

stop(){
    ps -ef | grep -qP "(?<=-jar)\s+${jarName}" && kill $(ps -ef | grep -P "(?<=-jar)\s+${jarName}" | awk '{print $2}')
}

case $1 in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
esac

赋予执行权限

chmod +x xxxx.sh

2、编写systemd配置文件

vim  /usr/lib/systemd/system/web.service
[Unit]
Description=web server
Wants=network-online.target
After=network.target

[Service]
Type=forking
WorkingDirectory=/opt/webApp
ExecStart=/bin/bash web.sh start
ExecStop=/bin/bash web.sh stop
ExecReload=/bin/bash web.sh restart
Restart=on-failure

[Install]
WantedBy=multi-user.target

加载服务

systemctl daemon-reload

3、web项目服务管理命令

# 启动
systemctl start web

# 关闭
systemctl stop web

# 重新启动
systemctl restart web

# 开机自启动
systemctl enable web

猜你喜欢

转载自blog.csdn.net/lee_yanyi/article/details/124843822