Linux将Spring Boot项目的Jar包注册为开机自启动系统服务的操作方法
作者:杨若瑜
有时候我们需要将Spring Boot打包出来jar文件当做系统服务注册到系统中,本文教你如何操作
目录结构
以下是目录结构,jar文件是从maven package打包出来的,config/application.yml是原先在项目的resources文件夹里,外置出来方便适配开发环境和正式环境。static目录用来存放静态资源,比如vue前端或者上传目录。所有的.sh文件都是本文后续要写的。
/data /start.sh // 启动脚本 /stop.sh // 关闭脚本 /serviceStart.sh // 服务启动脚本 /serviceStop.sh // 服务关闭脚本 /YumeisoftDemo-0.0.1-SNAPSHOT.jar // 打包的项目Jar包 /config // 配置文件目录 /application.yml // 项目配置文件 /jdk // jdk目录 /static // 静态资源目录
编写Service调用的脚本
配置脚本/data/config.sh,如果改包名,直接改这个文件即可
#!/bin/sh # 配置JAR文件名,把它改成你的Jar文件名 SPRING_JARFILE=YumeisoftDemo-0.0.1-SNAPSHOT.jar # 日志文件位置 LOG_FILE=system.log # 获取.sh所在路径 INSTALL_DIR=$(cd $(dirname $0);pwd) # 配置JDK路径 JAVA_HOME=$INSTALL_DIR/jdk # 设定PATH,不设会无法使用java命令 PATH=$JAVA_HOME/bin:$PATH
手动启动服务脚本/data/start.sh,其中system.log是日志文件名
#!/bin/sh # 读取config.sh定义的内容 source $INSTALL_DIR/config.sh # 后台方式运行jar包 nohup java -jar $INSTALL_DIR/$SPRING_JARFILE > $INSTALL_DIR/$LOG_FILE 2>&1 & # 显示日志 tail -f $INSTALL_DIR/$LOG_FILE
手动关闭服务脚本/data/stop.sh
#!/bin/sh # 读取config.sh定义的内容 source $INSTALL_DIR/config.sh # 获取当前项目运行的进程ID PID=$(ps -ef | grep "java -jar $INSTALL_DIR/$SPRING_JARFILE" | grep -v grep | awk '{print $2}') if [ -z "$PID" ]; then # 如果没找到则提示未运行 echo "Spring Boot应用未在运行中." else # 如果找到了,正常终止进程 kill $PID # 显示日志 tail -f $INSTALL_DIR/$LOG_FILE echo "Spring Boot应用已停止." fi
服务启动脚本/data/serviceStart.sh
#!/bin/sh # 读取config.sh定义的内容 source $INSTALL_DIR/config.sh # 后台方式运行jar包 nohup java -jar $INSTALL_DIR/$SPRING_JARFILE > $INSTALL_DIR/$LOG_FILE 2>&1 &
服务关闭脚本/data/serviceStop.sh
#!/bin/sh # 读取config.sh定义的内容 source $INSTALL_DIR/config.sh # 获取当前项目运行的进程ID PID=$(ps -ef | grep "java -jar $INSTALL_DIR/$SPRING_JARFILE" | grep -v grep | awk '{print $2}') if [ -z "$PID" ]; then # 如果没找到则提示未运行 echo "Spring Boot应用未在运行中." else # 如果找到了,正常终止进程 kill $PID echo "Spring Boot应用已停止." fi
赋权
不赋权是无法运行的,所以我们要执行以下命令:
chmod a+x /data/*.sh
创建一个Service
接下来我们把这个项目注册为系统服务,myService改成你要改成的服务名:
vim /etc/systemd/system/myService.service
因为之前没有这个系统服务,会创建一个新文件,这个文件就是系统服务的启停配置文件,按一下a进入编辑模式,把下面的代码粘贴上去,然后按下Esc、冒号、输入wq、回车。
[Unit] Description=MyService After=network.target [Service] Type=forking ExecStart=/data/serviceStart.sh ExecStop=/data/serviceStop.sh PrivateTmp=true [Install] WantedBy=multi-user.target
这里面的ExecStart和ExecStop都是服务启动和服务停止脚本的绝对路径。Description是指服务的描述信息,这里可以填中文,其他的不要改动。
启用并使用Service
做完以上步骤你就可以在服务器里执行systemctl enable myService
命令,即可启用myService服务,然后使用systemctl start myService
即可启动服务,systemctl stop myService
即可关停服务,system status myService
命令可以看到服务的状态。
到此这篇关于如何在Linux将Spring Boot项目的Jar包注册为开机自启动系统服务的文章就介绍到这了,更多相关Spring Boot Jar包开机自启动内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!