让我们学习如何在Linux中安装和运行Spring Boot服务。
可以使用命令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
时,接收上述命令的系统将其视为可执行文件。
请注意,一些操作系统(如FreeBSD
和OSX
)可能完全不支持此功能。
一旦你有了可执行的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
通过上述设置,
start
、stop
和restart
,并检查Spring Boot服务的status
。PID
将在/var/run/hello-service/hello-service.pid
中捕获。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的所有者chmod 500 /var/applications/hello-world.jar
默认情况下,此spring boot
服务将在具有相同名称的hello-world.jar
旁边查找hello-world.conf
文件。.conf
文件的名称应与jar名称相同。该文件应包含一些基本服务参数,如PID_FOLDER
、LOG_FOLDER
,RUN_ARGS
和JAVA_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找到一个示例项目。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://springhow.com/installing-spring-boot-applications-as-linux-service/
内容来源于网络,如有侵权,请联系作者删除!