赞
踩
有时候我们需要将Spring Boot打包出来jar文件当做系统服务注册到系统中,本文教你如何操作
执行以下命令,查看是否有systemd在运行,如果有则可以用本文的方法。
ps -aux|grep systemd
以下是目录结构,jar文件是从maven package打包出来的,config/application.yml是原先在项目的resources文件夹里,外置出来方便适配开发环境和正式环境。static目录用来存放静态资源,比如vue前端或者上传目录。所有的.sh文件都是本文后续要写的。
/data
/start.sh // 启动脚本
/startService.sh // 服务启动脚本
/stopService.sh // 服务关闭脚本
/YumeisoftDemo-0.0.1-SNAPSHOT.jar // 打包的项目Jar包
/config // 配置文件目录
/application.yml // 项目配置文件
/jdk // jdk目录(找一个兼容的解压即可)
/static // 静态资源目录
配置脚本/data/config.sh,原样写上即可
#!/bin/sh
# 日志文件位置
LOG_FILE=system.log
# 配置JDK路径
JAVA_HOME=$STARTUP_DIR/jdk
# 设定PATH,不设会无法使用java命令
PATH=$JAVA_HOME/bin:$PATH
手动启动服务脚本/data/start.sh,原样写上即可,执行它之后日志将输出到控制台,按下Ctrl+C即可停止输出
#!/bin/sh
# 读取config.sh定义的内容
STARTUP_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source $STARTUP_DIR/config.sh
# 后台方式运行jar包
for jarfile in "$STARTUP_DIR"/*.jar; do
if [ -f "$jarfile" ]; then
java -jar -Dspring.config.location=file:"$STARTUP_DIR/config/application.yml" "$jarfile"
fi
done
服务启动脚本/data/startService.sh,原样写上即可
#!/bin/sh
# 读取config.sh定义的内容
STARTUP_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source $STARTUP_DIR/config.sh
# 后台方式运行jar包
for jarfile in "$STARTUP_DIR"/*.jar; do
if [ -f "$jarfile" ]; then
nohup java -jar -Dspring.config.location=file:"$STARTUP_DIR/config/application.yml" "$jarfile" >> "$STARTUP_DIR/$LOG_FILE" 2>&1 &
echo "$jarfile已启动."
fi
done
服务关闭脚本/data/stopService.sh,原样写上即可
#!/bin/sh
# 读取config.sh定义的内容
STARTUP_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source $STARTUP_DIR/config.sh
for jarfile in "$STARTUP_DIR"/*.jar; do
if [ -f "$jarfile" ]; then
PID=$(ps -ef | grep "$jarfile" | grep -v grep | awk '{print $2}')
if [ -z "$PID" ]; then
# 如果没找到则提示未运行
echo "$jarfile未在运行中."
else
# 如果找到了,正常终止进程
kill $PID
echo "$jarfile已停止."
fi
fi
done
不赋权是无法运行的,所以我们要执行以下命令:
chmod a+x /data/*.sh
接下来我们把这个项目注册为系统服务,myService改成你要改成的服务名:
# CentOS 用这个:
vim /etc/systemd/system/myService.service
# OpenEuler等国产操作系统 用这个:
vim /usr/lib/systemd/system/myService.service
因为之前没有这个系统服务,会创建一个新文件,这个文件就是系统服务的启停配置文件,按一下a进入编辑模式,把下面的代码粘贴上去,然后按下Esc、冒号、输入wq、回车。
[Unit]
Description=Spring Boot Application Service
After=network.target
[Service]
Type=forking
ExecStart=/bin/bash /data/startService.sh
ExecStop=/bin/bash /data/stopService.sh
[Install]
WantedBy=multi-user.target
这里面的ExecStart和ExecStop都是服务启动和服务停止脚本的绝对路径。Description是指服务的描述信息,这里可以填中文,其他的不要改动。
做完以上步骤你就可以在服务器里执行systemctl enable myService
命令,即可启用myService服务,然后使用systemctl start myService
即可启动服务,systemctl stop myService
即可关停服务,system status myService
命令可以看到服务的状态。
systemctl daemon-reload
来重新加载ls /bin/bash
看看是否有Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。