supervisorをCentOS6.5にインストールしたメモ

supervisor自体は、pythonで作られたプロセス管理ツール的なやつですね。
pythonはすでにインストールされてたんで、easy_installのインストールから。

setuptools(easy_install)のインストール

この辺(setuptools 18.2 : Python Package Index)から、OSにあったのを探した結果

wget https://bootstrap.pypa.io/ez_setup.py -O - | python

上記のコマンドでインストールできました。

# バージョン確認
easy_install --version

supervisorのインストール

easy_installがインストールができたので、supervisorのインストール。

easy_install supervisor

お手軽っすね。

# バージョンの確認
supervisord -v

supervisorの設定

echo_supervisord_confってコマンドが追加されてるんで、こいつでconfの雛形を作ります。

echo_supervisord_conf > /etc/supervisord.conf

supervisord.confの編集

defaultのままだと、.sock.logやら、.pid辺りが全部/tmp/に入ってしまうので、適時修正。

;file=/tmp/supervisor.sock
file=/var/run/supervisor.sock

;logfile=/tmp/supervisord.log
logfile=/var/log/supervisord.log

;pidfile=/tmp/supervisord.pid
pidfile=/var/run/supervisord.pid

;serverurl=unix:///var/tmp/supervisor.sock ; use a unix:// URL  for a unix socket
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket

あとは、プロセスを管理したいアプリ毎の設定ファイルをわける為に、

[include]
;files = relative/directory/*.ini
files=/etc/supervisord.d/*.ini

ファイルの置き場所はどこでもいいですが、/etc/supervisord.d/の下に入れるのが一般的な模様。
ここに置いたファイルの中身は後ほど追記。
追加しました:plackアプリをsupervisorで永続化

supervisorの操作

起動

supervisor自体が落ちると意味ないので、upstartで起動。

description     "supervisord"

start on runlevel [2345]
stop on runlevel [!2345]

respawn
exec /usr/bin/supervisord -n

upstartコマンド

# 起動
initctl start supervisord

# 再読み込み(kill -HUP)
initctl reload supervisord

# 再起動
initctl restart supervisord

# 停止
initctl stop supervisord

# 一覧
initctl list

supervisorコマンド

# appの登録(設定の再読み込み)
supervisorctl reread && supervisorctl update

# appの起動(ex: my-app)
supervisorctl start my-app

# appの再起動(ex: my-app)
supervisorctl update my-app

# appの停止(ex: my-app)
supervisorctl stop my-app

# ステータス
supervisorctl status

まとめ

これで、supervisorのインストールと設定ができました。
アプリ毎の設定(/etc/supervisord.d/*)は後ほど追記(予定)です。
アプリ毎の設定については別エントリーで:plackアプリをsupervisorで永続化