我尝试将使用SpringBoot创建的jar文件作为init.d服务来运行
总结
从SpringBoot1.3开始,可以构建为可完全执行的Jar,并且可以轻松地在Linux上注册为服务。
以前我们是通过创建启动脚本并将其注册到服务中来处理这些事情,但现在似乎可以简化这些步骤。
设定的步骤
Gradle准备中
在`build.gradle`文件中添加以下内容。
springBoot {
executable = true
}
建筑
通过常用的Gradle构建就足够了
$ gradle build
设备或系统的安装和设置。
您可以创建一个conf文件来设置与个人资料和执行环境相关的配置。
默认情况下,conf文件会在与jar文件相同的位置查找名为“与jar文件同名.conf”的文件。
实际上,如果在vim或类似软件中查看创建的jar文件,会发现在文件开头自动生成了启动脚本。通过查看这个脚本的内容,我们可以了解它调用了哪个conf文件,因此可以进行一次阅读。
假设我们将jar文件和配置文件放置在名为deploy的文件夹中。
$ mkdir deploy
$ cp -p /xxxx/build/libs/spring-boot.jar /xxxx/deploy/spring-boot.jar
在与jar相同的位置上放置一个名为[jar的名称].conf的文件。
但是,请不要把conf文件放置在与jar的符号名或符号链接相同的位置。
将实际的jar文件和位置进行配置。
$ vi spring-boot.conf
.......
export JAVA_HOME=/usr/local/jdk1.8
export JAVA_OPTS="-Dspring.profiles.active=production"
export LANG="ja_JP.utf8"
-
- JAVA_HOME-> service起動する際にJAVA_HOMEが見つかるように指定しておく
-
- JAVA_OPTS-> ここにprofileやxmxなどを設定することができる
- LANG->メッセージリソースをLANG指定で切り替えている場合とか。service起動時LANGは引き継がれないので。
注意事项
如果将配置文件设置为环境变量而不是在JAVA_OPTS中,logback将无法正确接收。
最好是通过JAVA_OPTS传递配置文件。
请预先调整文件权限。
$ chmod u+x spring-boot.jar
$ chmod o+r spring-boot.conf
注意事项:
服务的启动和停止需要使用root用户执行。
jar本身会以该jar文件的所属用户的身份执行。
配置文件需要设置为root用户可访问。
申请注册服务
只需在/etc/init.d创建一个符号链接即可。
$ sudo ln -s /xxxx/deploy/spring-boot.jar /etc/init.d/spring-boot
启动和关闭
# サービスの起動
$ sudo service spring-boot start
# サービスの停止
$ sudo service spring-boot stop
# サービスの自動起動ON
$ sudo chkconfig spring-boot on
执行日志等
標準輸出默認輸出至/var/log/[服務名].log。若要將輸出至其他資料夾或檔案,需在配置檔中進行以下設定。
通常情况下,通过SpringBoot输出的logback日志等会被输出到指定位置的jar文件起始点。
export LOG_FOLDER=/xxxxxx/deploy
请参考以下网站:
只需要一个选择的话,请将以下内容用中文进行本地化:
参考1