まずpythonのpipをインストール
$ curl -O http://python-distribute.org/distribute_setup.py
$ python distribute_setup.py
$ sudo easy_install pip
次にpipでsupervisordをインストール
$ sudo pip install supervisor
とりあえず、次のようにsupervisordを設定
$ sudo mkdir -p /usr/local/etc/supervisor/conf.d
$ sudo mkdir -p /usr/local/var/log
$ sudo mkdir -p /usr/local/var/log
$ sudo vi /usr/local/etc/supervisor/supervisord.conf
$ cat /usr/local/etc/supervisor/supervisord.conf
[unix_http_server]
file=/usr/local/tmp/supervisor.sock
chmod=0700
[supervisord]
logfile = /usr/local/var/log/supervisord.log
logfile_maxbytes = 50MB
logfile_backups=10
loglevel = info
pidfile = /tmp/supervisord.pid
nodaemon = False
minfds = 1024
minprocs = 200
umask = 022
identifier = supervisor
directory = /usr/local/tmp
nocleanup = true
childlogdir = /usr/local/tmp
[supervisorctl]
serverurl = unix:///usr/local/tmp/supervisor.sock
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[include]
files = /usr/local/etc/supervisor/conf.d/*.conf
一度、コマンドラインからsupervisordを実行して、正しく動くことを確認する
$ sudo /usr/local/bin/supervisord -c /usr/local/etc/supervisor/supervisord.conf
.
.
.
.
^C
launchdを使ってOS起動時に実行するようにする
$ sudo vi /Library/LaunchDaemons/supervisord.plist
$ cat /Library/LaunchDaemons/supervisord.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>OnDemand</key><false/>
<key>RunAtLoad</key><true/>
<key>KeepAlive</key>
<dict>
<key>SuccessfulExit</key>
<false/>
</dict>
<key>Label</key>
<string>supervisord</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/python</string>
<string>/usr/local/bin/supervisord</string>
<string>-n</string>
<string>-c</string>
<string>/usr/local/etc/supervisor/supervisord.conf</string>
</array>
<!-- for debug -->
<!--
<key>StandardOutPath</key><string>/Users/yoggy/out.txt</string>
<key>StandardErrorPath</key><string>/Users/yoggy/err.txt</string>
-->
</dict>
</plist>
$ sudo launchctl load -w /Library/LaunchDaemons/supervisord.plist
$ sudo launchctl list supervisord
{
"LimitLoadToSessionType" = "System";
"Label" = "supervisord";
"TimeOut" = 30;
"OnDemand" = false;
"LastExitStatus" = 0;
"PID" = 22789; ← 正しく起動していることをチェックすること
"Program" = "/usr/bin/python";
"ProgramArguments" = (
"/usr/bin/python";
"/usr/local/bin/supervisord";
"-n";
"-c";
"/usr/local/etc/supervisor/supervisord.conf";
);
};
上記設定ファイルでは、/usr/local/etc/supervisor/conf.d/を想定
[include]
files = /usr/local/etc/supervisor/conf.d/*.conf
設定ファイルの位置を変えているので、aliasしておくといいかも?
$ alias supervisorctl="sudo supervisorctl -c /usr/local/etc/supervisor/supervisord.conf"