いつも次のようなコマンドでアプリケーションを起動しているが、簡単に起動スクリプトが作れるみたいなので作った結果をメモしておく。

$ java -jar app.jar

起動スクリプトを作成することで以下の様に起動が可能になり、pidファイル、logファイル、設定ファイルも利用可能になります。

$ /etc/init.d/app start

基本的にspringドキュメントの内容です。

動作させているOSはCentOSです。他のOSの場合はコマンドが若干違うので読み替えてください。

設定

spring bootアプリであればなんでもOKなので以前作ったアプリを適当に選んで設定する。

設定はspring boot pluginのexecutableをtrueにするだけ。

mavenを使っている場合はpom.xmlに以下を記述。

<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>

gradleの場合は次の設定を追加する。

apply plugin: 'spring-boot'

springBoot {
executable = true
}

ビルド

ビルドするとtarget以下にjarが生成される。

$ ./mvnw clean package
$ ls target/
classes spring-boot-rest-api-sample-0.0.1-SNAPSHOT.jar
generated-sources spring-boot-rest-api-sample-0.0.1-SNAPSHOT.jar.original
generated-test-sources surefire-reports
maven-archiver test-classes
maven-status

設置

/varでも/optでも好きなところにjarを移動する。jarのシンボリックリンクをinit.d以下に作成する。これだけ。

$ sudo cp target/spring-boot-rest-api-sample-0.0.1-SNAPSHOT.jar /var/myapp/rest-api-sample.jar
$ sudo ln -s /var/myapp/rest-api-sample.jar /etc/init.d/rest-api-sample

確認

まず、起動スクリプトが動くかどうか確認する。

$ sudo /etc/init.d/rest-api-sample status
Not running
$ sudo /etc/init.d/rest-api-sample start
Started [11761]
$ sudo /etc/init.d/rest-api-sample stop
Stopped [11761]

実行はしてないですが、restartもあります。

ログファイルとpidファイルが生成されている。logファイルの中身はspring-boot:runで標準出力される内容と同じなので割愛。

$ ls /var/log/rest-api-sample.log 
/var/log/rest-api-sample.log
$ ls /var/run/rest-api-sample/rest-api-sample.pid
/var/run/rest-api-sample/rest-api-sample.pid

自動起動せってもできる。

$ chkconfig rest-api-sample on
$ chkconfig --list | grep rest-api
rest-api-sample 0:off 1:off 2:on 3:on 4:on 5:on 6:off

実行ユーザを作る場合はこちら。

$ useradd -s /sbin/nologin bootapp
$ chown bootapp:bootapp /var/myapp/rest-api-sample.jar
$ chmod 500 /var/myapp/rest-api-sample.jar

設定ファイルも作れる。

$ cat /var/myapp/rest-api-sample.conf
JAVA_OPTS=-Xmx1024M
LOG_FOLDER=/custom/log/folder

設定の詳細
上記の設定が起動ファイル関連で、アプリケーション独自の設定はできないっぽい。

簡単ですね。

おわり。

参考

  1. http://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html