安装
1 预备环境
安装supervisor之前,需要安装python的相关环境。
yum -y install python-pip
2 下载源码
在实际部署过程中,发现使用yum安装可能会出现很多问题,因此,建议使用源码安装。可从github上下载源码:
git clone https://github.com/Supervisor/supervisor.git
3 程序安装
源码中存在setup.py文件,只需执行如下命令便可完成supervisor的安装:
python ./setup.py install
配置
echo_supervisord_conf > /etc/supervisord.conf
在/etc 目录下生成配置文件
; 包含其他的配置文件
[include]
files = relative/directory/*.ini ; 可以是 *.conf 或 *.ini
修改/etc/supervisord.conf [include] 自己的项目配置
[program:usercenter]
directory = /home/leon/projects/usercenter ; 程序的启动目录
command = gunicorn -c gunicorn.py wsgi:app ; 启动命令,可以看出与手动在命令行启动的命令是一样的
process_name=%(program_name)s ; process_name expr (default %(program_name)s)
numprocs=1 ; number of processes copies to start (def 1)
autostart = true ; 在 supervisord 启动的时候也自动启动
startsecs = 1 ; 启动 1 秒后没有异常退出,就当作已经正常启动了
autorestart = true ; 程序异常退出后自动重启
startretries = 3 ; 启动失败自动重试次数,默认是 3
user = leon ; 用哪个用户启动
redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 20MB ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 10 ; stdout 日志文件备份数
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile = /data/logs/usercenter_stdout.log
;这一配置项的作用是:如果supervisord管理的进程px又产生了若干子进程,使用supervisorctl停止px进程,停止信号会传播给px产生的所有子进程,确保子进程也一起停止。这一配置项对希望停止所有进程的需求是非常有用的。
stopasgroup=true
; 可以通过 environment 来添加需要的环境变量,一种常见的用法是修改PYTHONPATH ;process environment additions
; environment=PYTHONPATH=$PYTHONPATH:/path/to/somewhere
编辑配置文件
命令
【启动supervisord】
supervisord -c /etc/supervisord.conf 或 supervisord
【停止supervisord】
supervisorctl shutdown
【重新加载配置文件】
supervisorctl reload
【进程管理】
1、启动supervisord管理的所有进程
supervisorctl start all
2、停止supervisord管理的所有进程
supervisorctl stop all
3、启动supervisord管理的某一个特定进程
supervisorctl start program-name // program-name为[program:xx]中的xx
4、停止supervisord管理的某一个特定进程
supervisorctl stop program-name // program-name为[program:xx]中的xx
5、重启所有进程或所有进程
supervisorctl restart all // 重启所有supervisorctl reatart program-name // 重启某一进程,program-name为[program:xx]中的xx
6、查看supervisord当前管理的所有进程的状态
supervisorctl status