用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。
安装supervisor
apt-get install supervisor
运行以查看运行状态, 现在还没有添加程序, 所以是空白的
supervisorctl status
启动
supervisord -c /etc/supervisor/supervisord.conf
添加程序
为nsq
程序开启守护, 编写nsq.conf
文件放到supervisort的默认配置文件夹 /etc/supervisor/conf.d
[program:nsqd]
command=/usr/program/nsq-1.0.0-compat.linux-amd64.go1.8/bin/nsqd --lookupd-tcp-address=127.0.0.1:4160
directory=/usr/program/nsq-1.0.0-compat.linux-amd64.go1.8/bin
autostart=true
redirect_stderr=true
stdout_logfile=/usr/program/nsq-1.0.0-compat.linux-amd64.go1.8/nsqd_std.out
[program:nsqlookupd]
command=/usr/program/nsq-1.0.0-compat.linux-amd64.go1.8/bin/nsqlookupd
directory=/usr/program/nsq-1.0.0-compat.linux-amd64.go1.8/bin
autostart=true
redirect_stderr=true
stdout_logfile=/usr/program/nsq-1.0.0-compat.linux-amd64.go1.8/nsqlookupd_std.out
这里我们就将nsqd和nsqlookupd两个程序都添加到supervisort了
在修改配置后需要使用一下代码重新加载配置文件
supervisorctl update
conf文件详解
[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
网友评论