アプリのサービス化

サーバーアプリを作成したら、サービスとしてサーバの再起動があっても起動時にアプリが稼働するように設定する。
設定方法についてまとめる。
Linuxでは、いくつかの方法があるが、systemctl を使う方法をとる。

Xserver が お友達紹介割引 で申込みが可能になります。

サービス設定ファイルの作成

/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 が お友達紹介割引 で申込みが可能になります。

コメント

タイトルとURLをコピーしました