supervisor を使ってみた

ちょっと tornado 使って WebSocket うひょーとかやりたくなったので色々調べていて、こいつプロセス立てて daemon にしなきゃいけないわけですよ。

んで、運用環境に行った後にプロセス管理とかめんどくせーなーなどと思っていた訳なのですが、 supervisor が結構よさそうということでメモ。

suervisor を入れる

ビルド管理はいつも通り buildout を使うので buildout.cfg に入れるだけ。

buildout で supervisor を使うには collective.recipe.supervisor っつーのを使えばいいらしい。

で、プログラムに管理したいプログラム(この場合は tornado で作ったアプリケーション)を追加してあげる。

programs = 
         10 tornado ${buildout:bin-directory}/ttest

という行がそれ。

で、この状態で buildout すると bin/supervisorctl, bin/supervisord という二つのファイルが作られる。

オプションはこれ以外にも色々あるけど詳しくは ここらへん を見た方がよい。

supervisor の起動と管理

で、作られた supervisor のアプリを使う。

$ bin/supervisord

で supervisor の管理プロセスが立ち上がる。
こいつはコマンドを打つだけで daemon になってしまうので、デバッグ時などは

$ bin/supervisord -n

してあげるとコンソールに残ってくれる。

この状態で http://localhost:9001 (ポートはデフォルト) にアクセスすると管理画面が現れて、設定したプログラムごとに起動・停止・再起動などができる。

Web からでなくコンソールからも操作できる。

$ bin/supervisorctl start tornado # tornado の開始
$ bin/supervisorctl stop tornado # tornado の終了
$ bin/supervisorctl start all # 全てのプロセスの開始
$ bin/supervisorctl stop all # 全てのプロセスの終了

こいつを使えば色々と管理が楽そうなのでこれでとりあえずがんばってみようそうしよう。