之前用jenkins自动部署springboot项目时,jenkins中总是输出springboot日志无法结束。

当时是将springboot项目打包成war包并在后台运行。


nohup java -jar  projetct.war&

后来发现springboot支持部署为linux服务。主要需要将springboot打包为可执行的war包或jar包,然后在服务器中编写service文件。

我是用gradle构建的,maven其实差不多。

现在不需要添加springboot plugin 了,之前折腾了很久总是找不到依赖,后来发现已经被弃用了。

只需要在bootWar task中添加launchScript()即可

在build.gradle文件中添加


bootWar {
launchScript()
}

接下来就是编写service文件了。部署服务器是centos7,需要编写systemctl服务。

当service文件中有环境变量就比较坑了。systemctl不会读取系统的环境变量。如果需要环境变量,可以在一个文件中写环境变量的键值对(如test=123 表示环境变量test的值为123)。然后在service文件中用EnvironmentFile指定文件的位置。

service文件不支持通配符,需要使用绝对路径

参考配置如下


[Unit]
Description=test
After=syslog.target

[Service]
EnvironmentFile=/etc/systemd/system/test.service.d/override.conf
User=test
ExecStart=/home/test/test.war
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

然后就可以像其他服务一样运行了


sudo systemctl enable test

sudo service test start