经常能用的到,网上的资料有点混乱,所以在此记录一下。

1.安装

# yum install python-setuptools
# easy_install supervisor

2.生成配置文件(supervisord.conf):

# echo_supervisord_conf > /etc/supervisord.conf

3.修改配置文件(/etc/supervisord.conf)

;[include]
;files = relative/directory/*.ini

修改为

[include]
files = /yourdir/*.conf

将配置文件中的 /tmp 目录,全部修改为你自己的目录,例如 /home/supervisor

4.启动supervisor

# supervisord -c /etc/supervisord.conf  
# supervisorctl //打开命令行

5.示例配置(/yourdir/test.conf)

[program:test]
user = www                     ; 用哪个用户启动
directory = /home/wwwroot/test ; 程序的启动目录
command = php think queue:work --daemon  ; 启动命令,与在命令行启动的命令是一样的
autostart = true                         ; 在 supervisord 启动的时候也自动启动
startsecs = 5                            ; 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart = true                       ; 程序异常退出后自动重启
startretries = 3                         ; 启动失败自动重试次数,默认是 3
redirect_stderr = true                   ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 10MB           ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 20              ; stdout 日志文件备份数
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile = /home/supervisor/test/stdout.log

如果修改了 /etc/supervisord.conf ,需要执行 supervisorctl reload 来重新加载配置文件,否则不会生效。

此篇只针对 centos进行过测试,其他linux版本未知

暂未做supervisord的开机启动,当系统重启的时候 需要手动运行 supervisord 来启动 supervisor服务

1.起因

Supervisor 是一个非常好用的进程监控软件,但是在使用过程中,经常会出现一段时间之后 执行 supervisorctl status 的时候会提示 unix:///tmp/supervisor.sock no such file ,最终发现原因为 linux 系统会不定期的清理 tmp 文件夹导致。

2.解决方案

更改 Supervisor 启动时的配置文件路径。
1.停止 Supervisor 所有的监控对象

supervisorctl stop all

2.停止 kill -9 supervisord 进程

3.修改配置文件

vim /etc/supervisord.conf

4.修改 tmp 路径,我常用的路径为 /home/supervisor ,最终结果为

/tmp/supervisor.sock => /home/supervisor/supervisor.sock

5.重新启动 supervisord