经常能用的到,网上的资料有点混乱,所以在此记录一下。
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
。