Spring Boot の推奨されるデプロイメント方法は、Tomcat を内部に含む実行可能な jar ファイルを使用することです。
それは単純なから始まりますjava -jar myapp.jar
。
今、その jar を EC2 上の Linux サーバーにデプロイしたいのですが、何かが足りないのでしょうか、それともアプリケーションをデーモンとして適切に起動するために init スクリプトを作成する必要があるのでしょうか?
単に呼び出すと、java -jar
ログアウト時にアプリケーションが停止します。
screen または nohup で起動することもできますが、これはあまりエレガントではなく、サーバーを再起動するとログインしてプロセスを手動で開始する必要が生じます。
それで、Spring Boot にはすでにタスク用の何かがあるのでしょうか?
ベストアンサー1
Spring Boot 1.3.0.M1 以降では、Maven と Gradle を使用して完全に実行可能な jar をビルドできることに注意してください。
Maven の場合は、 に次の内容を含めるだけですpom.xml
。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
Gradle の場合は、次のスニペットを に追加しますbuild.gradle
。
springBoot {
executable = true
}
完全に実行可能な jar には、ファイルの先頭に追加のスクリプトが含まれており、これにより、Spring Boot jar をシンボリックリンクしたりinit.d
、スクリプトを使用したりできますsystemd
。
init.d
例:
$ln -s /var/yourapp/yourapp.jar /etc/init.d/yourapp
これにより、次のようにアプリケーションを起動、停止、再起動できるようになります。
$/etc/init.d/yourapp start|stop|restart
またはsystemd
スクリプトを使用します:
[Unit]
Description=yourapp
After=syslog.target
[Service]
ExecStart=/var/yourapp/yourapp.jar
User=yourapp
WorkingDirectory=/var/yourapp
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
詳細については、次のリンクをご覧ください。