supervisor

supervisor 是一个类 unix 操作系统下的进程监控管理工具,比如安装了redis-server,就可以使用supervisor管理redis-server

安装

Supervisor 是由 Python 写成,可用 Python 的包安装管理工具pip直接安装: sudo pip install supervisor

配置

Supervisor 服务启动的时候默认会在一下这几个目录位置查找配置文件 supervisord.conf。supervisor 也提供参数 "-c" 来指定配置文件的目录路径 $CWD/supervisord.conf $CWD/etc/supervisord.conf /etc/supervisord.conf

在终端输入 "echo_supervisord_conf" 命令可查看 Supervisor 的默认配置的内容。

生成一份默认的配置文件 echo_supervisord_conf > /etc/supervisord.conf 这里有选择的设置了一些配置,基本够用,配置如下:

[unix_http_server]
file=/var/run//supervisor.sock   ; (the path to the socket file)
chmod=0700                       ; sockef file mode (default 0700)

[supervisord]
logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor            ; ('AUTO' child log dir, default $TEMP)

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

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

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

/etc/supervisor/conf.d/mux.ugc.ini的配置如下

[program:php] ;进程名
directory = path/to/project/ves
command = php -f start.php
autostart=true ;自启动
autorestart=unexpected
startsecs=3
startretries=3
stopsignal=TERM
stopwaitsecs=5
user=www-data   ; 用户需要对directory, start.php有所属组权限,否则会自动退出,code为127
stopasgroup=true ; 关闭进程内的所有子进程
killasgroup=true
stdout_logfile=/tmp/mux.web.ugc.stdout.log ; 程序运行日志,需要事先生成
stderr_logfile=/tmp/mux.web.ugc.stderr.log ; 程序错误日志

启动

supervisord -c /etc/supervisord.conf

开机自启动

<?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>KeepAlive</key>
    <dict>
        <key>SuccessfulExit</key>
        <false/>
    </dict>
    <key>Label</key>
    <string>dengjoe.supervisord</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/supervisord</string>
        <string>-n</string>
        <string>-c</string>
        <string>/etc/supervisord.conf</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

启动 Supervisor 服务: launchctl load ~/Library/LaunchAgents/dengjoe.supervisord.plist supervisorctl 是 Supervisor 自带的后台进程控制工具,下面是该命令的一些用法:

使用supervisorctl: supervisorctl start/restart/status/stop/update program

重新load 所有的supervisor服务 sudo supervisorctl reload

results matching ""

    No results matching ""