如何在生产环境中运行 Spring Boot 可执行 jar?

新手上路,请多包涵

Spring boot 的首选部署方法是通过一个包含 tomcat 的可执行 jar 文件。

它以简单的 java -jar myapp.jar 开始。

现在,我想将该 jar 部署到我在 EC2 上的 linux 服务器上,是我遗漏了什么还是我真的需要创建一个 init 脚本才能将应用程序作为守护程序正确启动?

如果我只是简单地调用 java -jar 应用程序在我注销时就会死掉。

我可以在 screen 或 nohup 中启动它,但这不是很优雅,并且在我的服务器中重新启动会迫使我登录并手动启动该过程。

那么,春季启动中的任务是否已经完成?

原文由 Cleber Goncalves 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 297
1 个回答

请注意,从 Spring Boot 1.3.0.M1 开始,您可以使用 Maven 和 Gradle 构建完全可执行的 jar。

对于 Maven,只需在 pom.xml 中包含以下内容:

 <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <executable>true</executable>
    </configuration>
</plugin>

对于 Gradle,将以下代码段添加到您的 build.gradle

 springBoot {
    executable = true
}

完全可执行的 jar 在文件的前面包含一个额外的脚本,它允许您将 Spring Boot jar 符号链接到 init.d 或使用 systemd 脚本。

init.d 示例:

 $ln -s /var/yourapp/yourapp.jar /etc/init.d/yourapp

这允许您启动、停止和重新启动您的应用程序,例如:

 $/etc/init.d/yourapp start|stop|restart

或者使用 systemd 脚本:

 [Unit]
Description=yourapp
After=syslog.target

[Service]
ExecStart=/var/yourapp/yourapp.jar
User=yourapp
WorkingDirectory=/var/yourapp
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

更多信息请访问以下链接:

原文由 corleone 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题