Spring Boot 的首选部署方法是通过内部包含 tomcat 的可执行 jar 文件。
它是从一个简单的开始java -jar myapp.jar
.
现在,我想将该 jar 部署到 EC2 上的 Linux 服务器上,我是否遗漏了某些内容,或者我是否真的需要创建一个 init 脚本才能将应用程序作为守护进程正确启动?
如果我只是打电话java -jar
当我注销时应用程序就会终止。
我可以在 screen 或 nohup 中启动它,但这不是很优雅,并且在我的服务器中重新启动将迫使我登录并手动启动该过程。
那么,Spring Boot 中是否已经有一些可以完成该任务的东西了?
请注意,从 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
script.
init.d
例子:
$ln -s /var/yourapp/yourapp.jar /etc/init.d/yourapp
这允许您启动、停止和重新启动您的应用程序,例如:
$/etc/init.d/yourapp start|stop|restart
或者使用一个systemd
script:
[Unit]
Description=yourapp
After=syslog.target
[Service]
ExecStart=/var/yourapp/yourapp.jar
User=yourapp
WorkingDirectory=/var/yourapp
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
更多信息请访问以下链接:
- 安装为init.d service https://docs.spring.io/spring-boot/docs/current/reference/html/deployment.html#deployment.installing.init-d
- 安装为systemd service https://docs.spring.io/spring-boot/docs/current/reference/html/deployment.html#deployment.installing.system-d
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)