SpringBoot如何将应用程序作为服务?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (21)

如何在Linux系统中配置包装为可执行JAR作为服务的SpringBoot应用程序?这是推荐的方法,还是我应该将这个应用程序转换为WAR并安装到Tomcat中?

目前,我可以从screen会话,什么是好的,但需要手动启动后,服务器重新启动。

我要找的是一般的建议/方向或样品init.d脚本,如果我使用可执行文件的方法是正确的。

提问于
用户回答回答于

以下适用于Spring 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中的SpringBoot应用程序,可以在/etc/systemd/system/myapp.service中添加以下脚本:

[Unit]
Description=myapp
After=syslog.target

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

[Install]
WantedBy=multi-user.target

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

用户回答回答于

下面是在Linux中将Java应用程序作为系统服务安装的最简单方法。

假设您正在使用systemd(现在任何现代发行版都会这么做):

首先,在/etc/systemd/system命名为E.javaservice.service有了这个内容:

[Unit]
Description=Java Service

[Service]
User=nobody
# The configuration file application.properties should be here:
WorkingDirectory=/data 
ExecStart=/usr/bin/java -Xmx256m -jar application.jar
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

其次,通知systemd新服务文件:

systemctl daemon-reload

并启用它,因此它在引导时运行:

systemctl enable javaservice.service

最后,您可以使用以下命令启动/停止新服务:

systemctl start javaservice
systemctl stop javaservice
systemctl restart javaservice
systemctl status javaservice

如果您正在使用systemd,这是将Java应用程序设置为系统服务的最非侵入性和最干净的方法。

也请阅读systemd在官方SpringBoot文档中的一部分:http://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html

扫码关注云+社区