[工具&笔记]supervisor

supervisor是一个在类UNIX操作系统下,以C/S架构来对进程进行管理的工具。

参考:Supervisor: A Process Control System使用 supervisor 管理进程

组成

    1. 服务端(Server)
      supervisord
    1. 命令行客户端(Client)
      supervisorctl
    1. Web界面(Client)
    1. XML-RPC接口(Client)
      详见XML-RPC API Documentation

配置

安装好后,可以执行命令echo_supervisord_conf来获取默认的配置项,进行参考。
由于服务端和客户端使用的是同一个配置文件,所以在配置文件中包含它们各自的配置项,除此之外,还包含对应被supervisor管理的应用的配置。
配置文件一般命名为supervisord.conf,其中使用 ; 对配置项进行注释。

    1. supervisord配置
[unix_http_server]
file=/tmp/supervisor.sock   ; UNIX socket 文件,supervisorctl 会使用
;chmod=0700                 ; socket 文件的 mode,默认是 0700
;chown=nobody:nogroup       ; socket 文件的 owner,格式: uid:gid

[inet_http_server]         ; HTTP 服务器,提供 web 管理界面
port=127.0.0.1:9001        ; Web 管理后台运行的 IP 和端口,如果开放到公网,需要注意安全性
;username=user              ; 登录管理后台的用户名
;password=123               ; 登录管理后台的密码

[supervisord]
logfile=/tmp/supervisord.log ; 日志文件,默认是 $CWD/supervisord.log
logfile_maxbytes=50MB        ; 日志文件大小,超出会 rotate,默认 50MB
logfile_backups=10           ; 日志文件保留备份数量默认 10
loglevel=info                ; 日志级别,默认 info,其它: debug,warn,trace
pidfile=/tmp/supervisord.pid ; pid 文件
nodaemon=true               ; 是否在前台启动,默认是 false,即以 daemon 的方式启动
minfds=1024                  ; 可以打开的文件描述符的最小值,默认 1024
minprocs=200                 ; 可以打开的进程数的最小值,默认 200

; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

; 包含其他的配置文件
;[include]
;files = relative/directory/*.ini    ; 可以是 *.conf 或 *.ini

其中inet_http_server需要时才配置。
nodamon配置项决定是否以 daemon 的方式启动。
其他一般不变。

    1. supervisorctl配置
[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; 通过 UNIX socket 连接 supervisord,路径与 unix_http_server 部分的 file 一致
serverurl=http://127.0.0.1:9001 ; 通过 HTTP 的方式连接 supervisord

由于我希望使用Web界面,所以在这里给了两种连接方式。

    1. 应用配置
[program:cat]
command=/bin/cat

[program:redis-server]
command=/usr/local/bin/redis-server
priority=500
autostart=true
autorestart=true
startretries=3
exitcodes=0
stdout_logfile=/tmp/redis-server/server.log
stderr_logfile=/tmp/redis-server/server.err
stdout_logfile_maxbytes=5MB
stderr_logfile_maxbytes=5MB
stdout_logfile_backups=10
stderr_logfile_backups=10

这里我启动了两个应用(program),program冒号后为定义的标识,须唯一。
主要的是定义 command ,即执行的命令。若对启动目录有要求,则添加 directory 项。
proority小的应用启动时提前,杀死时滞后。反之则反。

命令

    1. 启动supervisord
      supervisord -c supervisord.conf
      查询是否运行:ps aux | grep supervisord
      并没有提供停止功能。
    1. 启动supervisorctl
      supervisorctl -c supervisord.conf
      以上两个命令均有自动寻找配置文件的功能,可以不加 -c
      执行之后,进入supervisorctl shell,如果不想进入,可以直接在supervisorctl后跟以下几个命令:status, stop xx, start xx, restart xx/all, reread, update, exit
      其中reread只是重新获取配置文件,update才是依据配置文件对应用进行操作。
    1. web界面
      浏览设置的 http serverurl 即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值