每日一博 - Spring Boot Application as a Service
老路子
在Linux服务器上启动Spring Boot项目,都是通过nohup java -jar xxx
命令让程序作为后台进程执行的, 这… 也不错,但更好的方法是将Spring Boot作为Service启动
操作步骤
打包插件增加executable true
<packaging>jar</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.RELEASE</version>
</parent>
<dependencies>
....
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
</plugins>
</build>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
关键点说明
<packaging>jar</packaging>
- 1
<configuration>
<executable>true</executable>
</configuration>
- 1
- 2
- 3
标示该jar为可执行,否则启动Spring Boot服务会报错.
gradle构建的SpringBoot项目,则相应地需要增加如下配置
bootJar {
launchScript()
}
- 1
- 2
- 3
构建应用
$ mvn clean package
- 1
- 2
在应用程序的根目录中运行以下命令:
$ java -jar your-app.jar
- 1
- 2
此时,我们仍然需要使用-jar选项调用 Java 解释器。
为了增强安全性,我们首先创建一个特定用户artisan来运行服务并相应地更改可执行 JAR 文件的权限:
$ sudo useradd artisan
$ sudo passwd artisan
$ sudo chown artisan:artisan your-app.jar
$ sudo chmod 500 your-app.jar
- 1
- 2
- 3
- 4
- 5
一定要给jar包赋可执行权限
System V Init
sudo ln -s /path/to/your-app.jar /etc/init.d/your-app
- 1
上面的命令创建了一个指向可执行 JAR 文件的符号链接。您必须使用可执行 JAR 文件的完整路径,否则符号链接将无法正常工作。此链接使您能够将应用程序作为服务启动:
$ sudo service your-app start
- 1
该脚本支持标准的服务启动、停止、重启和状态命令。而且:
- 它启动在我们刚刚创建的用户artisan下运行的服务
- 它在/var/run/your-app/your-app.pid 中跟踪应用程序的进程 ID
- 它将控制台日志写入/var/log/your-app.log,可能需要检查一下,以防应用程序无法正常启动
开机启动Systemd
首先,我们使用以下示例创建一个名为your-app.service的脚本并将其放在/etc/systemd/system目录中:
[Unit]
Description=A Spring Boot application
After=syslog.target
[Service]
User=baeldung
ExecStart=/path/to/your-app.jar SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
请记住修改Description、User和ExecStart字段以匹配应用程序。此时应该能够执行上述标准服务命令。
自定义JVM参数
只需在jar包所在的同级目录下添加与jar包同名的配置文件,比如添加一个叫coder-xiaoming.conf的配置文件(名字要和jar的名字相同哦),然后在文件里面自定义JVM参数JAVA_OPTS:
export JAVA_OPTS="-Xmx256m -Xms256m"
- 1
文章来源: artisan.blog.csdn.net,作者:小小工匠,版权归原作者所有,如需转载,请联系作者。
原文链接:artisan.blog.csdn.net/article/details/120595346
- 点赞
- 收藏
- 关注作者
评论(0)