supervisor 是Python开发的一套进程管理工具,被管理的进程是作为supervisor的子进程来启动,可以实现进程的监听,重启等功能。
supervisor 安装
1:easy_install 安装:
easy_install supervisor
2:pip 安装:
pip install supervisor
3:Debian / Ubuntu可以直接通过apt安装:
apt-get install supervisor
生成supervisor 的配置文件
echo_supervisord_conf > 可以重定向到指定的文件目录
修改配置文件
修改unix:///tmp/supervisor.sock 不要指定在tmp目录下,以免被删除
配置文件介绍
; supervisor config file
[unix_http_server]
file=/var/run/supervisor.sock ; (the path to the socket file)
chmod=0700 ; sockef file mode (default 0700)
[supervisord]
logfile=/var/log/supervisor/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)
; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[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
; The [include] section can just contain the "files" setting. This
; setting can list multiple files (separated by whitespace or
; newlines). It can also contain wildcards. The filenames are
; interpreted as relative to this file. Included files *cannot*
; include files themselves.
[inet_http_server] #设置端口 登录账户信息
port=ip:9001
username=tigerzhou
password=123456
[include]
files = /etc/supervisor/conf.d/*.conf (需要管理的进程的配置文件默认.ini结尾,可以自己指定)
被管理的进程配置文件
[program:flower]
command=celery -A excutor.ModelExcutor flower --broker='sentinel://ip:26380;sentinel://ip:26381;sentinel://ip:26382'
directory=/home/supdev/pro/mypro
user=supdev
numprocs=1
stdout_logfile=/home/supdev/pro/celery-worker.log
stdout_logfile_maxbytes=200MB
stdout_logfile_backups=2
stderr_logfile=/home/supdev/pro/celery-worker.log
stderr_logfile_maxbytes=200MB
stderr_logfile_backups=2
autostart=true
autorestart=true
startsecs=10
stopwaitsecs = 600
stopasgroup=true
priority=1000
启动supervisor supervisorctl 命令可以不用指定配置文件
supervisord -c supervisor.conf 通过配置文件启动supervisor
supervisorctl -c supervisor.conf status 查看状态
supervisorctl -c supervisor.conf reload 重新载入配置文件
supervisorctl -c supervisor.conf start [all]|[x] 启动所有/指定的程序进程
supervisorctl -c supervisor.conf stop [all]|[x] 关闭所有/指定的程序进程