Edit
Supervisor とは?

デーモン動作に対応していないプログラムを root ではなく、ユーザー権限で起動・監視・停止などの管理を行うツールである。Pythonによって記述されており、安定した動作で可動する。

Edit
インストール方法

# git clone https://github.com/Supervisor/supervisor
# cd supervisor
# python setup.py install                                         <- 但し python 2.7 以上が必要
# ln -s /usr/local/bin/supervisord /usr/bin/supervisord
# ln -s /usr/local/bin/supervisorctl /usr/bin/supervisorctl
# cp skel/sample.conf /etc/supervisord.conf

Edit
supervisor本体をデーモン登録する。

# mkdir /etc/supervisord.d
# vi /etc/supervisord.conf    <- 必要に応じて修正
[supervisord]
logfile=/var/log/supervisor/supervisord.log
pidfile=/var/run/supervisord.pid

[include]
files = supervisord.d/*.ini

以下の設定を行うとWEBから管理できるようになる。

[inet_http_server]
port=127.0.0.1:9001

[supervisorctl]
serverurl=unix:///var/tmp/supervisor.sock
serverurl=http://127.0.0.1:9001

Edit
サービスとしての登録

Centos6

# git clone https://github.com/Supervisor/initscripts
# cd initscripts
# cp redhat-init-equeffelec /etc/rc.d/init.d/supervisord
# chmod 755 /etc/rc.d/init.d/supervisord
# chkconfig --add supervisord
# service supervisord start
# service supervisord status
# service supervisord stop

Centos7

# vi /etc/systemd/system/supervisord.service
[Unit]
Description=Supervisor process control system for UNIX
Documentation=http://supervisord.org
After=network.target

[Service]
ExecStart=/usr/bin/supervisord -n -c /etc/supervisord.conf
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=50s

[Install]
WantedBy=multi-user.target

起動と停止と登録

# systemctl start supervisord
# systemctl status supervisord
# systemctl stop supervisord 
# systemctl enable supervisord.service

Edit
logローテート設定

# sh -c "echo '/var/log/supervisor/*.log {
      missingok
      weekly
      notifempty
      nocompress
}' > /etc/logrotate.d/supervisor"

Edit
コントロールコマンド

システム管理コマンドの機能一覧を表示する。

# supervisorctl help

Edit
各機能の紹介

Suprvisorでは設定ファイルに登録したプロセス毎に管理される。以後それらを設定プロセスと呼ぶ。

機能概要
addsupervisorctl add myappデーモンの管理対象として設定プロセスを追加
availsupervisorctl availSupervisorが管理している設定プロセスの詳細を確認
clearsupervisorctl clear myapp設定プロセスのログをクリア
fgsupervisorctl fg myapp設定プロセスをフォアグラウンドに切り替える。※基本禁止
tailsupervisorctl tail myapp設定プロセスのログを表示。mailtail にすると supervisorのログ表示
pidsupervisorctl pid all設定プロセスのPIDを表示
reloadsupervisorctl reloadSupervisor自身を再起動。各登録設定プロセスもすべて再起動
removesupervisorctl remove myappaddで登録された設定プロセスの登録を削除
restartsupervisorctl restart myapp指定した設定プロセスの再起動を行う
shutdownsupervisorctl shutdownsupervisor自身のデーモンを終了させる
startsupervisorctl start myapp設定プロセスの実行開始
stopsupervisorctl stop myapp設定プロセスの実行終了
statussupervisorctl status myapp設定プロセスのステータス確認
updatesupervisorctl update myapp設定プロセスの設定を読み直す

Edit
参考リンク