使用 supervisor
安装
我用的是高版本的 supervisor-3.3.1,利用python安装的
yum install python-setuptools
easy_install supervisor
也可以直接使用yum install supervisor安装,
但是centos上默认的是2.1版本,自己的想实现的需求,半天没有配置成功,所有使用了高版本的supervisord。
安装后配置文件在 /etc/supervisord.conf
开始配置
可以直接在supervisord.conf配置文件里写
[program:saveAvator]
command=php /home/wwwroot/laravel42/artisan queue:listen --queue=saveAvatorQueue
也可以使用子配置方式
[include]
files=/home/wwwroot/laravel/app/config/supervisord/.*conf(.conf和.ini都行)
然后在/home/wwwroot/laravel/app/config/supervisord/目录下添加各种 .conf 的文件
例如添加一个 saveAvator.conf内容还是
[program:saveAvator]
command=php /home/wwwroot/laravel42/artisan queue:listen --queue=saveAvatorQueue
检测配置的program:saveAvator是否成功
使用 ps -ef
看到进程已经有了配置的让supervisord管理的saveAvator子进程
管理supervisord命令
/etc/init.d/supervisord start 开启
/etc/init.d/supervisord stop 停止
常用配置:
[program:usercenter]
directory = /home/leon/projects/usercenter ; 程序的启动目录
command = gunicorn -c gunicorn.py wsgi:app ; 启动命令,可以看出与手动在命令行启动的命令是一样的
autostart = true ; 在 supervisord 启动的时候也自动启动
startsecs = 5 ; 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart = true ; 程序异常退出后自动重启
startretries = 3 ; 启动失败自动重试次数,默认是 3
user = leon ; 用哪个用户启动
redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 20MB ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 20 ; stdout 日志文件备份数
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile = /data/logs/usercenter_stdout.log
; 可以通过 environment 来添加需要的环境变量,一种常见的用法是修改 PYTHONPATH
; environment=PYTHONPATH=$PYTHONPATH:/path/to/somewhere