本番環境で Spring Boot 実行可能 jar を実行するにはどうすればよいですか? 質問する

本番環境で Spring Boot 実行可能 jar を実行するにはどうすればよいですか? 質問する

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

詳細については、次のリンクをご覧ください。

おすすめ記事