UmamiをSupervisorでプロセス管理する

2 min read

こんにちは、無能です。
Umami公式ではpm2でのプロセス管理を推奨しておりますが、よりかんたんに古くから存在するSupervisorを使用してUmamiのプロセス管理を行いたいと思います。

Supervisorとは

プロセスをデーモン化しクラッシュしたときのログファイルの設定を容易に*.confで設定することが可能です。
一時は開発もストップしていたようですが、Systemd Free運動からまた少し盛り上がり元々他のinitで稼働していたプロセスをSupervisorでデーモン化を行い管理することが可能です。

すでにインストールしているのでインストール方法については割愛します。

設定

umami.confとして設定ファイルを作成します。

sudo vim /etc/supervisor/conf.d/umami.conf

以下のように記述しました。

[program:umami]
command=npm start
directory=/var/www/html/umami         ; アプリケーションのディレクトリ
autostart=true                        ; サーバー起動時に自動的にプロセスを開始
autorestart=true                      ; プロセスが終了した場合に自動的に再起動をする
stderr_logfile=/var/log/umami.err.log ; 標準エラーログファイルの場所
stderr_logfile_maxbytes=1MB           ; ログファイルの最大ファイルサイズ
stdout_logfile=/var/log/umami.out.log ; 標準出力ログファイルの場所
stdout_logfile_maxbytes=1MB           ; ログファイルの最大ファイルサイズ
environment=DATABASE_URL="YourDB",APP_SECRET="YourSecret",PORT="YourPort",HOSTNAME="YourHost" ;
user=test_user                          ; 実行するユーザー

今更ですけど、本来/var/www/umamiに配置するべきだったな。。。

実行

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start umami
sudo supervisorctl status umami

としたら

umami                            RUNNING   pid 801, uptime 0:19:12

と表示が出れば正常に稼働している状態です。 もし、それ失敗していれば

view /var/log/umami.err.log
view /var/log/umami.out.log

で起動ができない原因を確認しましょう。

Supervisorはいいぞ

楽に*.confファイルだけで楽に管理が出来るのでとても良いです。
とは言えどpm2もメモリ使用率の表示もしてくれるのですがこれからのnpm周りのライブラリ依存に関して不安を感じているためsupervisordくらいシンプルにできてくれた方が個人的には好みです。
そして、プロセス管理にわざわざJavaScript環境で稼働させている必要性を感じないからです。 それではまた。
よろしくお願いします。