
外部サービスで提供されていたアプリサーバーをUbuntu上で永続化させたかったので、
実際に永続化させてみました。
サーバーにアクセスして手動でアプリサーバーを立ち上げるとサーバーから抜け出せなくなってしまうので、systemdユニットを活用して永続化させたいと思います。
それでは早速やっていきましょう。
アプリサーバーを永続化させるOS情報
1 2 |
Description: Ubuntu 22.04.2 LTS Release: 22.04 |
初めにUnitファイルを作成します。
1 |
/etc/systemd/system/ |
この階層にUnitファイルを作成します。
1 |
touch [name].service |
※[name]とある部分はアプリ名やプロジェクト名など分かりやすいものに変更して作成してください。
Unitファイルの中身はこのような感じです。
1 2 3 4 5 6 7 8 9 10 |
[Unit] Description=My App After=network.target [Service] ExecStart=/path/to/実行するファイル Restart=always [Install] WantedBy=multi-user.target |
それぞれのセクションについて説明をしていきます。
Unitセクション
ユニットの説明や依存関係を設定します。
Afterディレクティブは、指定したターゲットやユニットが起動した後に
このユニットを起動することを示しています。
Serviceセクション
サービスの設定を行います。
ExecStartディレクティブには実行するコマンドや実行可能ファイルパスを指定します。
Restartディレクティブはサービスが異常終了した場合に自動的に再起動するように設定します。
Installセクション
サービスのインストール設定を指定します。
WantedByディレクティブはこのユニットがどのターゲットに関連付けられるかを指定します。
Unitファイルのパーミッションを変更
1 |
chmod 644 /etc/systemd/system/[作成したUnitファイル] |
適当なパーミッションに変更します。
Unitファイルを有効化
作成したUnitファイルをsystemdに認識させます。
1 |
systemctl daemon-reload |
1 |
systemctl enable [作成したUnitファイル名] |
これで先ほど作成したUnitファイルが有効になりました。
下記コマンドで一通りサービスの確認・実行が行えるようになります。
1 |
systemctl start [ユニットファイル名] |
1 |
systemctl stop [ユニットファイル名] |
1 |
systemctl status [ユニットファイル名] |
1 |
systemctl restart [ユニットファイル名] |
※[ユニットファイル名]とある箇所は”.service”の部分は無しで実行できます。
最後に
以上でアプリサーバーの永続化が出来上がりました。
こうしてみると意外と簡単にアプリサーバーを永続化できるものですね。
今回は外部サービスから提供されていたものを永続化させただけですので、永続化後は特にアプリ側の設定やミドルウェアの設定などは入れていません。
NodeJSなどのアプリサーバーを永続化させる場合は別途Nginx等の設定が必要になりますので、ご注意ください。