在Linux中安装和运行Spring Boot服务指南

x33g5p2x  于2022-10-25 转载在 Spring  
字(2.0k)|赞(0)|评价(0)|浏览(594)

让我们学习如何在Linux中安装和运行Spring Boot服务。

使jar成为可执行文件

可以使用命令java -jar hello-world.jar启动Spring引导应用程序。我们在文章中看到了这种行为。如何使用脚本启动和停止Spring引导程序?和Spring引导hello world web应用程序。但也可以通过在pom.xml中做一个简单的调整,将其作为独立的可执行文件启动。
为了这个改变你的pom。xml来添加以下配置条目。

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <executable>true</executable>
    </configuration>
</plugin>
Code language: HTML, XML (xml)

运行mvn package之后,您可以通过调用./hello-world-0.0.1-SNAPSHOT.jar来运行JAR文件。这里的技巧是spring-boot-maven-plugin添加了一小段代码,因此当configuration.executable标志设置为TRUE时,接收上述命令的系统将其视为可执行文件。
请注意,一些操作系统(如FreeBSDOSX)可能完全不支持此功能。

配置spring boot linux服务

一旦你有了可执行的jar文件,你就可以把它符号链接到/etc/init.d目录,所有的服务通常都在Linux系统中配置。
假设您的可执行jar文件位于路径/var/applications/hello-world.jar中,运行以下命令在init.d下创建符号链接。

sudo ln -s /var/applications/hello-world.jar /etc/init.d/hello-service
Code language: JavaScript (javascript)

在某些Linux变体上,需要使用以下命令启用服务。

sudo systemctl daemon-reload

如果一切正常,可以使用以下命令启动服务。

sudo service hello-service start

通过上述设置,

  • 您可以startstoprestart,并检查Spring Boot服务的status
  • 服务的当前PID将在/var/run/hello-service/hello-service.pid中捕获。
  • 稍后可以使用此ID来终止进程,但已经有一个stop命令参数。
  • stop命令将尝试使用SIGTERM优雅地终止进程。如果进程没有在60 seconds内停止,它将被强制终止。这个超时是可配置的。
  • 正在运行的进程将具有与文件相同的所有权。也就是说,如果文件归springadmin所有,那么进程也将使用springadmin创建。
  • 如果未配置记录器,控制台日志将自动写入/var/log/hello-service.log。如果应用程序无法启动,此日志文件还将包含错误的详细信息。

确保服务安全

任何服务可执行文件都将使用与该可执行文件所有者相同的用户启动进程。考虑到这一点,

  • 为了安全起见,不要使用root帐户运行spring-boot应用程序或任何其他应用程序服务。这是一种糟糕的做法。为了处理这一点,
  • 使用命令adduser springrunner --shell=/bin/false创建一个名为springrunner的单独用户。此命令将创建一个没有登录的系统用户。如果有兴趣,可以搜索一下/bin/false
  • 使用chown springrunner:springrunner /var/applications/hello-world.jar更改可执行jar的所有者
  • 为了使jarfile不被其他人访问,chmod 500 /var/applications/hello-world.jar

自定义Spring Boot服务

默认情况下,此spring boot服务将在具有相同名称的hello-world.jar旁边查找hello-world.conf文件。.conf文件的名称应与jar名称相同。该文件应包含一些基本服务参数,如PID_FOLDERLOG_FOLDERRUN_ARGSJAVA_OPTS。下面是一个示例配置。

RUN_ARGS=arg1,arg2
JAVA_OPTS=-Xmx2048M
LOG_FOLDER=/path/to/log/file.txt
STOP_WAIT_TIME=10
Code language: JavaScript (javascript)

但这个.conf文件是完全可选的。
您可以在这个GitHub repository找到一个示例项目。

相关文章

微信公众号

最新文章

更多