supervisor 进程管理工具 (监听、启动、停止、重启一个或多个进程或自动重启)

Author Avatar
天才在左疯子在后 7月8日
  • 在其它设备中阅读本文章

教程方向: 快速上手, 解决使用中遇到的一些问题
使用环境: 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.ini
user=root
autostart=true
autorestart=true
stderr_logfile=/home/vagrant/frp/frp/err.log
stdout_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     ; 启动失败自动重试次数,默认是 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

注意: 配置中所指向的文件需要提前存在, 否则会遇到错误.

启动并运行

  • 执行:
    supervisord -c /etc/supervisord.conf
    启动supervisord服务端

    查看 supervisord 是否在运行:
    ps aux | grep supervisord

    可能会碰到的错误:

    • python 不推荐使用的包

return pkg_resources.EntryPoint.parse("x="+spec).load(False)

这个打印并不影响使用,如果想解决这个错误可以参考 [github issues](https://github.com/Supervisor/supervisor/issues/617)
    - 重复启动错误
`supervisorctl unix:///var/run/supervisor.sock refused connection`
说明 已经启动 需要执行 `supervisorctl shutdown`终止进程再启动


- 开启了`supervisord`后需要使用 `supervisorctl` 管理
    开启所有进程守护
    `supervisorctl start all` 
    再执行 `supervisorctl status`
    会看到:
[root@localhost supervisord_conf]# supervisorctl status

frpc 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    # 重启配置文件修改过的程序
```




参考资料
官方文档
摘抄
摘抄
感觉不错

本文链接:https://fenxiangy.com/note/supervisor-jin-cheng-guan-li-gong-ju-jian-ting-qi.html
文章属于博主原创,转载请注明本文链接

评论已关闭