我尝试将使用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

bannerAds