1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

EC2でsystemdによるサービス化で詰まった件

Last updated at Posted at 2024-03-05

Spring bootで作成したWebアプリをEC2にデプロイしたが、systemd にサービス登録して起動するとエラーになり起動しない。

でも手動でコマンドをたたくと起動する・・・なぜ?

sudo vi /usr/lib/systemd/system/~.service を下記の通り作成

[Unit]
Description=[Webアプリ名]
After=syslog.target

[Service]
User=ec2-user
ExecStart=/usr/bin/java -jar /home/ec2-user/app/[Webアプリ名]-0.0.1-SNAPSHOT.jar
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

systemd再読み込み, サービス開始, サービス状態確認

sudo systemctl daemon-reload
sudo systemctl start [サービス名]
sudo systemctl -l status [サービス名]

image.png
エラーになる

手動で起動すると普通に動作する

java -jar /home/ec2-user/app/[Webアプリ名]-0.0.1-SNAPSHOT.jar

image.png

どうやらDB接続関係でエラーッポイ

DBはH2をファイルベースで使用しているため、DBファイルの読み書き関係な気がする。

手動で起動した時下記のファイルが作成されていた。

/home/ec2-user/database.mv.db

このファイルに権限をとりあえず与えてみる

sudo chmod 777 /home/ec2-user/database.mv.db

結果、状況は変わらずエラー

実行ステータスを見比べてみると

手動
(/home/ec2-user/app/[Webアプリ名]-0.0.1-SNAPSHOT.jar started by ec2-user in /home/ec2-user)

自動
(/home/ec2-user/app/[Webアプリ名]-0.0.1-SNAPSHOT.jar started by ec2-user in /)

作業ディレクトリが違う?

sudo vi /usr/lib/systemd/system/~.service を下記に変更

[Unit]
Description=[Webアプリ名]
After=syslog.target

[Service]
User=ec2-user
ExecStart=/usr/bin/java -jar /home/ec2-user/app/[Webアプリ名]-0.0.1-SNAPSHOT.jar
WorkingDirectory=/home/ec2-user/app ←作業ディレクトリ追加
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start ~.service
sudo systemctl status ~

Active: active (running) since Tue 2024-03-05 12:05:47 JST; 11s ago

問題なく稼働した!

EC2のアドレスにアクセスしてみる。

http://[EC2パブリックIP]:8080

image.png

問題なく表示された。
原因はおそらく、作業ディレクトリが [ / ] となっていたため、DBファイルを出力しようとしてもできずにエラーとなっていたっポイ。

今回の反省は、作業ディレクトリはきちんと設定する & アプリ起動時に作成されるファイルの作成先は認識しておくか決めておく。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?