Skip to content

Instantly share code, notes, and snippets.

@yoggy
Last active May 24, 2018 08:01
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yoggy/21230e5eae5e7ee7ea59 to your computer and use it in GitHub Desktop.
Save yoggy/21230e5eae5e7ee7ea59 to your computer and use it in GitHub Desktop.

Macでsupervisordを動かす設定メモ.md

参考

手順

まず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";
        );
};

プログラム毎の*.confファイルを置く場所は?

上記設定ファイルでは、/usr/local/etc/supervisor/conf.d/を想定

[include]
files = /usr/local/etc/supervisor/conf.d/*.conf

supervisorctlを使うときは…

設定ファイルの位置を変えているので、aliasしておくといいかも?

$ alias supervisorctl="sudo supervisorctl -c /usr/local/etc/supervisor/supervisord.conf"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment