当前位置: 首页 > 面试题库 >

如何在生产环境中运行spring boot可执行jar?

薛泰
2023-03-14
问题内容

Spring Boot的首选部署方法是通过其中包含tomcat的可执行jar文件

它从简单开始java -jar myapp.jar

现在,我想将该jar部署到EC2上的linux服务器上,是否丢失了某些东西,还是真的需要创建一个初始化脚本来正确地将应用程序作为守护程序启动?

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

我可以在屏幕或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脚本。

init.d example:

$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


 类似资料:
  • Spring Boot的首选部署方法是通过内部包含tomcat的可执行jar文件。 它由一个简单的开始。 现在,我想将jar部署到EC2上的linux服务器上,是我遗漏了什么,还是我真的需要创建一个init脚本来正确地启动应用程序作为守护进程? 如果我只是调用,那么当我注销时,应用程序就会死亡。 我可以在screen或nohup中启动它,但这不是很好,在服务器中重新启动会迫使我手动登录并启动进程。

  • 我有一个JavaMaven项目。我正在使用liquibase更新数据库。 在本地,要更新我的数据库,我只需在命令行中运行: 在正式生产环境中,我没有安装Maven。 我需要实现的是通过控制台,执行一个命令,在特定的类路径中运行liquibase脚本。 有什么想法吗? 编辑: 好啊我正试图遵循这种方法。我将以下项目放入文件夹: > 包含我的应用程序和liquibase变更集的war liquibas

  • 本文向大家介绍生产环境中安全运行Docker容器,包括了生产环境中安全运行Docker容器的使用技巧和注意事项,需要的朋友参考一下 在生产环境中,强化Docker容器的一种方法就是使它们不可变,也就是只读。安全地运行容器的其他方法还包括最小化受攻击面和应用Linux安全过程,标准Linux安全过程和针对容器环境的特定过程都要应用。 在启动容器时传入--read-only标记就可以 在只读模式下运行

  • 各位工程师,大家好! 我在试图创建一个胖罐子来执行cucumber测试时遇到了一个问题。最初,我按照指南从Baeldung设置测试。当在Maven测试阶段执行时,测试运行良好。当运行带有参数的mvn exec:java命令时,它也能正常工作。 然而,当我创建了一个胖罐子并试图执行测试时,我面临着错误 以下是我的项目的解释,它基本上与Baeldung的测试项目完全一样。 项目结构 直接从可执行jar

  • 当代码在运行时,它所在的执行环境非常重要。 执行上下文 在 JavaScript 中,执行上下文与执行环境关系密切,它与函数和变量的声明息息相关,通常认为有两种执行上下文: 全局上下文——代码首次执行的默认环境; 函数上下文——当代码执行进入函数体中。 让我们来看一段包含这几种执行上下文的代码: // 全局上下文​var hello = 'Hello!';​function introduce()

  • 我一直在使用Spyder安装的Anaconda发行版,默认使用Python 2.7。目前我需要用Python 3.4设置一个开发虚拟环境。 在线调查后的两大建议是: 首先设置虚拟环境,并指向更改Spyder的首选项,例如这里; 在虚拟环境中安装所有Spyder依赖项,如PyQt4,例如这里; 这两项建议都很繁琐,看起来不像是明智的发展选择。 是否有一个解决方案,将允许运行Spyder所需的Pyth