supervisor 进程管理工具 (监听、启动、停止、重启一个或多个进程或自动重启)
教程方向: 快速上手, 解决使用中遇到的一些问题 使用环境: Centos7.2
安装:
yum install supervisor
配置
安装好后在/etc/会生成一个supervisord.conf文件及一个supervisord.d文件目录
Supervisord.conf是一些默认配置,可自行参考一些配置文件教程修改
我们主要修改 /etc/supervisord.conf 文件的最后一行:
[include]files = relative/directory/*.ini ;可以指定一个或多个以.ini结束的配置文件这里配置的是引入型配置, 会自动引入配置的目录下的配置文件
注意:[include]默认配置是制定_.ini,因个人习惯命名为_.conf文件,因此修改配置如下:
我们将配置目录改为自己想要的目录下后, 在目录下建立配置文件, 以frpc 为例.
/root/supervisord_conf/frpc.ini
[program:frpc]command=/home/vagrant/frp/frp/frpc -c /home/vagrant/frp/frp/frpc.iniuser=rootautostart=trueautorestart=truestderr_logfile=/home/vagrant/frp/frp/err.logstdout_logfile=/home/vagrant/frp/frp/out.log其他配置文件对应参考注释:
[program:usercenter]directory = /home/Leon/projects/usercenter ; 程序的启动目录command = gunicorn -w 8 -b 0.0.0.0:17510 wsgi:app ; 启动命令autostart = true ; 在 supervisord 启动的时候也自动启动Startsecs = 5 ; 启动 5 秒后没有异常退出,就当作已经正常启动了autorestart = true ; 程序异常退出后自动重启Startretries = 3 ; 启动失败自动重试次数,默认是 3user = Leon ; 用哪个用户启动redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 falsestdout_logfile_maxbytes = 20MB ; stdout 日志文件大小,默认 50MBstdout_logfile_backups = 20 ; stdout 日志文件备份数; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)stdout_logfile = /data/logs/usercenter_stdout.log注意: 配置中所指向的文件需要提前存在,否则会遇到错误.
启动并运行
-
执行:
supervisord -c /etc/supervisord.conf启动supervisord服务端查看 supervisord 是否在运行:
ps aux | grep supervisord可能会碰到的错误:
-
python 不推荐使用的包
/usr/lib/python2.7/site-packages/supervisor/options.py:383: PkgResourcesDeprecationWarning: Parameters to load are deprecated. Call .resolve and .require separately.return pkg_resources.EntryPoint.parse("x="+spec).load(False)这个打印并不影响使用,如果想解决这个错误可以参考 github issues
-
重复启动错误
supervisorctl unix:///var/run/supervisor.sock refused connection说明 已经启动 需要执行supervisorctl shutdown终止进程再启动
-
-
开启了
supervisord后需要使用supervisorctl管理 开启所有进程守护supervisorctl start all再执行supervisorctl status会看到:[root@localhost supervisord_conf]# supervisorctl statusfrpc RUNNING pid 7989, uptime 0:10:15 -
其他命令
$ supervisorctl status$ supervisorctl stop frpc$ supervisorctl start frpc$ supervisorctl restart frpc$ supervisorctl reread$ supervisorctl update解释:> status # 查看程序状态> stop usercenter # 关闭 usercenter 程序> start usercenter # 启动 usercenter 程序> restart usercenter # 重启 usercenter 程序> reread # 读取有更新(增加)的配置文件,不会启动新添加的程序> update # 重启配置文件修改过的程序
部分信息可能已经过时