当前位置: 首页 > 知识库问答 >
问题:

spring boot应用程序即服务

朱风史
2023-03-14

如何在Linux系统中很好地配置打包为可执行jar作为服务的spring boot应用程序?这是推荐的方法,还是我应该将这个应用程序转换成war并安装到Tomcat中?

目前,我可以从屏幕会话运行spring boot应用程序,这很好,但需要在服务器重新启动后手动启动。

如果我使用可执行jar的方法合适的话,我需要的是一般的建议/指导或示例init.d脚本。

共有2个答案

金承嗣
2023-03-14

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

让我们假设您正在使用systemd(现在的任何现代发行版都这样做):

首先,在/etc/systemd/system中创建一个名为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 --server.port=8081
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应用程序设置为System-Service的最无侵入性和最干净的方法。

我特别喜欢这个解决方案的是这样一个事实:您不需要安装和配置任何其他软件。附带的systemd为您完成所有工作,您的服务的行为与任何其他系统服务一样。我已经在不同的发行版上使用了它一段时间,它完全按照您的预期工作。

另一个好处是,通过使用/usr/bin/Java,您可以轻松地添加jvm参数,如-xmx256m

还要阅读spring boot正式文档中的systemd部分:http://docs.Spring.io/spring-boot/docs/current/reference/html/deployment-install.html

能帅
2023-03-14

springboot 1.3及以上版本的以下工作:

作为init.d服务

可执行jar具有通常的start、stop、restart和status命令。它还将在commonal/var/run目录中设置一个PID文件,默认情况下在commonal/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

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

作为systemd服务

要运行安装在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

 类似资料:
  • 问题内容: 如何在Linux系统中很好地配置打包为可执行jar作为服务的Spring Boot应用程序?是推荐的方法,还是应该将此应用转换为war并安装到Tomcat中? 目前,我可以从会话运行Spring Boot应用程序,这很好,但是需要在服务器重启后手动启动。 如果我使用可执行 jar的 方法正确,那么我正在寻找的是一般建议/指导或示例脚本。 问题答案: 以下内容适用于springboot

  • 我有一个Spring Boot应用程序,它使用Linux的systemd作为服务启动。 它基于以下文档:http://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html 使用默认脚本,jar文件将启动。它很好用。 /etc/systemd/system/myapp.service: 现在我想在

  • 我已经使用Spring初始值设定项、嵌入式Tomcat、Thymeleaf模板引擎和作为可执行JAR文件的包生成了一个Spring Boot web应用程序。 使用的技术: Spring启动2.0.0。M6,Java8, Maven 这是我的安全配置 在我的 但当我在http://localhost:1234/iberiaWebUtils,而不是去http://localhost:1234/ibe

  • 我试图在SpringMVC中运行SpringBoot应用程序,在SpringMVCPOM中添加SpringBoot应用程序依赖项,并扫描SpringBoot包,但我面临以下问题

  • 应用程序服务是一项基于 HTTP 的服务,用于托管 Web 应用程序、REST API 和移动后端。 应用程序服务是一项基于 HTTP 的服务,用于托管 Web 应用程序、REST API 和移动后端。支持 ASP.NET、ASP.NET Core、Java、Ruby、Node.js、PHP 或 Python等主流编程语言,用户可以无需管理底层基础设置,即可简单、高效、安全和灵活地对应用进行部署、

  • 完成干净的构建后,我将war文件复制到Tomcat的文件夹中。但是部署会发生两次,并且在上下文已经存在的情况下以异常结束。我错过了什么? 非常感谢您的帮助。