サーバーアプリを作成したら、サービスとしてサーバの再起動があっても起動時にアプリが稼働するように設定する。
設定方法についてまとめる。
Linuxでは、いくつかの方法があるが、systemctl を使う方法をとる。
サービス設定ファイルの作成
/etc/systemd/system に サービス名.service というファイルを作成する。
様々な定義が可能だが、以下のような最低限な定義をしておけばOK。
サービスとして起動させたいアプリを起動するためのスクリプトをstart.sh として定義し、終了時の処理を stop.sh として定義しておく。そのパスをそれぞれExecStart, ExecStop に設定する。
[Unit]
Description= example service
After=networking.service
[Service]
User=name
ExecStart=path_to/start.sh
ExecStop=path_to/stop.sh
Restart=always
Type=simple
SyslogIdentifier=example
[Install]
WantedBy=multi-user.target
サービスの有効化
sudo systemctl enable サービス名.service
を実行してサービスとして有効化する
サービスの起動
sudo systemctl start サービス名.service
を実行して起動する。
start のところを stop、restart のように変更すれば各種動作ができる。
サービスの状態確認
sudo systemctl status ex.service
とコマンドを実行したら、以下のような情報が表示される。
Active が active(running)になっていたらサービスは起動できている。
● ex.service - ex service
Loaded: loaded (/etc/systemd/system/ex.service; enabled; vendor preset: enabled)
Active: active (running) since Sat JST; 2h 21min ago
Main PID: 109452 (start.sh)
Tasks: 9 (limit: 2303)
Memory: 8.1M
CPU: 174ms
CGroup: /system.slice/ex.service
├─109452 /bin/bash path_to/start.sh
サービスを自動再起動させる その他の方法
アプリをdockerで起動させている場合には、docker-compose.yaml に restart:always を設定しておくとコンテナが自動で再起動する。
version: '3'
services:
mysql:
image: mysql:・・・
restart: always
environment:
:
:
Xserver が お友達紹介割引 で申込みが可能になります。
コメント