supervisor 使用

2017-11-22  本文已影响0人  bysir

用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

引用

上一篇下一篇

猜你喜欢

热点阅读