1. ホーム
  2. linux

[解決済み】Spring Bootアプリケーションのサービス化

2022-04-21 12:55:08

質問

実行形式jarでパッケージされたSpring BootアプリケーションをLinuxシステムでサービスとしてうまく構成するにはどうしたらよいでしょうか。それとも、このアプリをwarに変換してTomcatにインストールするべきですか?

現在、Springブートアプリケーションは screen セッションで、サーバー再起動後に手動で起動する必要があるのは良いことです。

私が探しているのは、一般的なアドバイスや方向性、またはサンプルとなる init.d スクリプトは、もし私のアプローチが実行可能な ジャー が正しい。

解決方法は?

以下は、springboot 1.3以降で動作します。

init.d サービスとして

実行可能なjarは、通常のstart, stop, restart, statusコマンドを備えています。また、通常の/var/runディレクトリにPIDファイルを設定し、通常の/var/logディレクトリにログを記録するようにデフォルトで設定されています。

jarを/etc/init.dに以下のようにシンボリックリンクする必要があります。

sudo link -s /var/myapp/myapp.jar /etc/init.d/myapp

または

sudo ln -s ~/myproject/build/libs/myapp-1.0.jar /etc/init.d/myapp_servicename

その後、通常の

/etc/init.d/myapp start

次に、必要であれば、起動時にアプリを開始/停止させたいランレベルにリンクを設定します。


systemd サービスとして

var/myappにインストールしたSpring Bootアプリケーションを実行するには、/etc/systemd/system/myapp.serviceに以下のスクリプトを追加してください。

[Unit]
Description=myapp
After=syslog.target

[Service]
ExecStart=/var/myapp/myapp.jar

[Install]
WantedBy=multi-user.target


注意:この方法を使用する場合、jarファイル自体を実行可能にする(chmod +x)ことを忘れないでください、さもなければ、エラー "Permission denied" で失敗します。

参考文献

http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/html/deployment-install.html#deployment-service