问题:Spring Boot 应用即服务

如何在Linux系统中很好地配置打包为可执行jar即服务的Spring Boot应用程序?这是推荐的方法,还是应该将此应用程序转换为战争并将其安装到 Tomcat 中?

目前,我可以从screen会话运行 Spring Boot 应用程序,这很好,但需要在服务器重启后手动启动。

我正在寻找的是一般建议/方向或脚本init.d示例,如果我使用可执行 jar 的方法是正确的。

解答

以下适用于 spring boot 1.3 及更高版本:

作为 init.d 服务

可执行 jar 具有通常的启动、停止、重新启动和状态命令。它还将在通常的 /var/run 目录中设置一个 PID 文件,并默认登录通常的 /var/log 目录。

你只需要像这样将你的 jar 符号链接到 /etc/init.d

sudo link -s /var/myapp/myapp.jar /etc/init.d/myapp

或者

sudo ln -s ~/myproject/build/libs/myapp-1.0.jar /etc/init.d/myapp_servicename

之后你可以照常做

/etc/init.d/myapp start

如果需要,然后在您希望应用程序在启动时启动/停止的任何运行级别中设置一个链接。


作为系统服务

要运行安装在 var/myapp 中的 Spring Boot 应用程序,您可以在 /etc/systemd/system/myapp.service 中添加以下脚本:

[Unit]
Description=myapp
After=syslog.target

[Service]
ExecStart=/var/myapp/myapp.jar

[Install]
WantedBy=multi-user.target

注意:如果您使用此方法,请不要忘记使 jar 文件本身可执行(使用 chmod +x),否则它将失败并出现错误“权限被拒绝”。

参考

http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/html/deployment-install.html#deployment-service

Logo

更多推荐