🤔
【AWS】Javaアプリをデーモン化してPCの電源を落としてもアプリが稼働し続けるようにしよう!!
仕様
Spring Boot (2.6) (gradleを使用)
Java JDK
linux2(AWS EC2)
以下サイトを参照しました。
1 Spring Bootアプリのgradle.buildファイルに以下の文を追加。
tasks.named('bootJar') {
launchScript()
}
2 エディターやコンソールでjarファイルを作成する。
3 Linux2(AWS) で クローンする。
*公式サイトには、/verにmyappフォルダを作ったところにjarファイルを置いている。
4 linuxの/etc/systemd/systemに サービス名.serviceファイルを作る。作ったら以下コードを入力する。
[Unit]
Description=サービス名
After=syslog.target
[Service]
User=ユーザー名
ExecStart= jarファイルがあるディレクトリ (例:/var/myapp/myapp.jar)
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
5 systemctlに先ほど作ったserviceファイルが起動できるようにする
systemctl enable サービス名.service
6 serviceファイルを起動させる(先ほど記述したjarファイルを起動する)。
systemctl start サービス名.service
もし、すでに起動していたら、下記コードで再読み込みをする。
systemctl daemon-reload
7 しっかり機能しているか確認する
systemctl status サービス名.service
ここで現在の状況が表示される。
8 完了!
トラブルシューティング
systemctl statusでもしfailedと表記されていたら、問題点を探してみてください。
parmission deniedとなっていたらパーミッション(権限)のエラーです。
フォルダや.jarファイルのパーミッション(権限設定)に問題がある可能性があります。
ll ディレクトリ
または
ls -l ディレクトリ
でパーミッションの状態をみてください。
もし問題があった場合はchmod コマンドで変更を行ってみてください。
Discussion