Linux環境でAPIアプリケーションを運用する際、システムの起動と共に自動的にアプリケーションを起動させたいことがあります。systemdを使用してAPIアプリケーションをLinuxサービスとして設定することで、安定した運用が可能となります。本記事では、JavaベースのAPIアプリケーションを例に、その手順を紹介します。

前提条件 見出しへのリンク
  • Linux環境(本記事ではUbuntuを利用している)
  • Javaがインストールされていること
  • APIアプリケーションのJARファイルが存在すること
サービスファイルの作成 見出しへのリンク

まず、サービスファイルを作成します。このファイルには、サービスの起動方法や動作設定を記述します。

1
sudo nano /etc/systemd/system/yourapp.service

以下の内容をサービスファイルに記述します:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
[Unit]
# サービスの説明と起動の順序を指定します
Description=APP Service
After=network.target

[Service]
# サービスの実行に関する設定を行います
User=sme
ExecStart=/usr/bin/java -jar /home/sme/live/public/yourapp.jar
SuccessExitStatus=143
Restart=on-failure
RestartSec=10
WorkingDirectory=/home/yourappuser/live/public

[Install]
# サービスのインストールに関する設定を行います
WantedBy=multi-user.target
サービスのリロードと起動 見出しへのリンク

サービスファイルを作成したら、systemdに新しいサービスを認識させ、サービスを起動します。

1
2
3
sudo systemctl daemon-reload  # systemdの設定をリロード
sudo systemctl start yourapp.service  # サービスを起動
sudo systemctl enable yourapp.service  # サービスを自動起動に設定
サービスの状態確認 見出しへのリンク

サービスの状態を確認して、正常に動作しているかどうかを確認します。

1
sudo systemctl status yourapp.service
最後 見出しへのリンク

APIアプリケーションをLinuxサービスとして設定することで、システム起動時に自動的にアプリケーションが起動し、安定した運用が可能になります。この手順を参考に、自身の環境でも試してみてください。