システム開発に関する相談はこちら

virtualenv+python2/3+supervisorでプロセス管理を楽に行う

supervisorはプロセス管理ツールです。

これを使えばプロセスの開始やリロードなど管理が簡単に出来ます。

 

スポンサーリンク

Supervisorのセットアップ

virtualenvでpython2系が動く環境を作る

supervisorのバージョン3はpython2系でしか動かないのでpython3系でアプリケーションを開発している場合は、別に環境を作ります

開発中のバージョン4はpython3でも使えるみたいです。

mkdir processmanager

virtualenv processmanager --python=/usr/bin/python2.6 

 

出来たら仮想環境に入ります。

cd processmanager

source bin/activate
python -V

pythonのversionが2.6が入っていればOK

 

インストール

pipでインストールするのが簡単

pip install supervisor

 

supervisorの設定ファイルを作ります。

mkdir processmanager/etc

echo_supervisord_conf > processmanager/etc/supervisord.conf

echo_supervisord_confを使えばサンプルが書き込まれます。

 

スポンサーリンク

supervisord.confを設定

[unix_http_server]
file=processmanager/tmp/supervisor.sock

[supervisord]

logfile=processmanager/tmp/supervisord.log

pidfile=processmanager/tmp/supervisord.pid

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

socketとlogとpidを作った設定しましょう。

管理するプロセスは外部フォルダからincludeします。

 

スポンサーリンク

プロセスを設定

mkdir processmanager/etc/supervisord.d

vim processmanager/etc/supervisord.d/"process_name".ini

 

プロセス用のファイルを作成

[program: "process_name"]

command=/bin/cat

...

 

設定ファイルはsupervisord.confにあるのでそのままコピーして使えばOK

 

実行

起動

supervisord

 

開始

supervisorctl start "process_name"

 

“process_name”に入る部分は作成した.iniファイルの

[programe: ここの名前]になります。

 

停止

supervisorctl stop "process_name"

 

再起動

supervisorctl reload "process_name"

 

プロセスファイルを変更した場合、reloadだけでは反映されません。

supervisorctl reread // 読み込み

supervisorctl update //更新

 

設定ファイルを読み込ませてから更新する必要があります。

 

これで簡単にプロセス管理が出来るようになります。

 

http://supervisord.org/