美文网首页
Ubuntu 16.04 Supervisor 配置使用

Ubuntu 16.04 Supervisor 配置使用

作者: 观星汉 | 来源:发表于2018-12-19 15:53 被阅读0次
    • 安装 Supervisor

    Ubuntu 16.04 可以直接安装 Supervisor, 非常方面

    sudo apt-get install supervisor

    leo@uLinux:~$ sudo apt-get install supervisor
    

    • 配置说明

    Supervisor 配置文件可以存放的地方比较多. 通常使用系统默认的地方存放就好. 不要搞那么复杂. 系统默认存放配置文件的目录为: /etc/supervisor/conf.d/, 可以为每个脚本配置一个配置文件. 方便管理.

    Supervisor 本身也有一个标准的配置文件. 这个有必要了解一下. 具体路径为: /etc/supervisor/supervisord.conf

    ; supervisor config file
    
    [unix_http_server]
    file=/var/run/supervisor.sock   ; (the path to the socket file)
    chmod=0700                       ; sockef file mode (default 0700)
    
    [supervisord]
    logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
    pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
    childlogdir=/var/log/supervisor            ; ('AUTO' child log dir, default $TEMP)
    
    ; 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
    
    [supervisorctl]
    serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket
    
    ; The [include] section can just contain the "files" setting.  This
    ; setting can list multiple files (separated by whitespace or
    ; newlines).  It can also contain wildcards.  The filenames are
    ; interpreted as relative to this file.  Included files *cannot*
    ; include files themselves.
    
    [include]
    files = /etc/supervisor/conf.d/*.conf
    

    supervisord.conf 文件配置格式为段落式, 以 [] 声明一个段落. 核心段落 包含了 [unix_http_server], [supervisord], [rpcinterface:supervisor], [supervisorctl], [include] 等几个, 需要管理的程序以 [program:program_name] 段落来声明注册.


    • [unix_http_server]
      unix_http_serversupervisord 的unix socket服务配置, 配置此部分可为后面的管理工具 supervisorctl 方便管理 Supervisord.
    配置项 必选 默认值 说明
    file 必选 file=/var/run/supervisor.sock socket 文件保存位置
    chmod 可选 chmod=0700 supervisord进程启动的时候, 对上面 file 的文件权限进行配置
    chown 可选 supervisord进程启动的时候, 对上面 file 配置的文件用户和用户组进行修改, 默认为谁启动supervisord进程的用户信息, 也可以特别配置为: chown=nobody:nogroup
    username 可选 此项为后面的 [supervisorctl] 服务, 使用 supervisorctl 命令操作管理进程的时候, 需要进行身份验证用到的账号.
    password 可选 此项和 username 功能一样, 密码可以使用明文或者SHA加密的密码.

    严格来说, file 也可以不用配置, 那么 supervisorctl 就不能用了.


    • [inet_http_server]
      inet_http_server 可以为 Supervisor 配置一个简单 web 管理界面. 通常 supervisorctl 来管理, 若不是特别需要, 不会启用此配置段.
    配置项 必选 默认值 说明
    port 必选 web 管理平台地址: 127.0.0.1:9001
    username 可选 web 管理平台登录账户
    password 可选 web 管理平台登录密码
    [inet_http_server]
    port = 127.0.0.1:9001
    username = user
    password = 123
    

    usernamepassword 不配置可以直接通过网页访问web管理平台


    • [supervisord]
      supervisord部分为 Supervisor 核心配置. 配置项比较多.
    配置项 必选 默认值 说明
    logfile 可选 $CWD/supervisord.log 日志存放路径. 默认保存在当前目录.
    logfile_maxbytes 可选 50MB 日志文件最大值, 设置为0不切割日志.
    logfile_backups 可选 10 日志文件最多保留个数. 设置 0 不保存.
    loglevel 可选 info 日志等级, 通用标准等级.
    pidfile 可选 $CWD/supervisord.pid PID文件路径
    umask 可选 022 进程创建文件的掩码
    nodaemon 可选 false 是否在前台运行.
    minfds 可选 1024 设置启动时需要的系统最少可用文件描述符数量, cat /proc/sys/fs/file-max 查看当前系统的配置.
    minprocs 可选 200 设置启动时需要的系统最小可用的进程描述符数量, ulimit -u 查看当前的配置.
    nocleanup 可选 false 启动时是否清理之前的子进程的日志. 设置true可用保留之前的日志, 方便调试.
    childlogdir 可选 tempfile.get_tempdir()
    user 可选
    directory 可选 supervisord启动后切换到该目录.
    strip_ansi 可选 false 设置为 true 清理日志中的 ASNI 换行\n, \t等字符.
    environment 可选 设置环境变量
    identifier 可选 supervisor 设置 supervisord 的标识符, RPC可能会用到.

    • [rpcinterface:supervisor]
      使用supervisord或者web server 这个选项要开启.
    [rpcinterface:supervisor]
    supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
    

    • [supervisorctl]
      supervisorctl 管理工具配置.
    配置项 必选 默认值 说明
    serverurl 必选 http://localhost:9001 本地使用 UNIX socket 连接, 配置为 unix_http_server 段的 file 值, 远程使用TCP连接使用 inet_http_server段的port
    username 可选 账户
    password 可选 密码
    prompt 可选 supervisor 身份验证弹出框标题
    history_file 可选 保留历史命令文件, 类似: .bash_history

    • [include]
      include 配置可以到指定目录把相关的配置载入到主配置文件.
    配置项 必选 默认值 说明
    files 必选 要载入的文件, 可以使用通配符 * 载入多个配置文件.

    关键配置段 [program:x]

    • [program:x] 通常使用 supervisord 管理的脚本都单独写成配置文件保存在默认的 /etc/supervisor/conf.d/ 目录下. 每个文件就是一个 [program:program_name] 配置. 方便管理.
    配置项 必选 默认值 说明
    command 必选 需要执行的脚本, 比如: php /root/test.php
    process_name 可选 %(program_name)s 进程名, 就是 [program:program_name]program_name
    numprocs 可选 1 建议设置为1, 可以设置大于1, 做成多进程. 简单的脚本如果要运行多份, 复制几个配置文件, 来执行, 方便管理.
    numprocs_start 可选 0 numprocs=1的时候, 无视此配置.
    priority 可选 999 进程启动关闭优先级,优先级的,最先启动,关闭的时候最后关闭
    autostart 可选 true 是否设置随supervisord自动启动
    startsecs 可选 1 子进程启动多少秒之后,此时状态如果是running, 判定为启动成功.
    startretries 可选 3 子进程启动失败重试次数.
    autorestart 可选 unexpected 子进程挂掉后自动重启的情况, 可配置: false, unexpected, true. false:无论什么情况下, 都不会被重新启动. unexpected: 当进程的退出码不在exitcodes里面定义的退出码的时候, 才会被自动重启. true: 只要子进程挂掉, 无条件的重启
    exitcodes 可选 0, 2 正常退出码
    stopsignal 可选 TERM 进程停止信号, 可选TERM, HUP, INT, QUIT, KILL, USR1, USR2等. 当用设定的信号去干掉进程, 退出码会被认为是expected
    stopwaitsecs 可选 10 向子进程发送stopsignal信号后,到系统返回信息给supervisord, 所等待的最大时间. 超过这个时间, supervisord会向该子进程发送一个强制kill的信号.
    stopasgroup 可选 false 多子进程使用
    killasgroup 可选 false 多子进程使用
    user 可选
    redirect_stderr 可选 false 设置truestderr的日志会被写入stdout日志文件中.
    stdout_logfile 可选 AUTO 日志路径
    stdout_logfile_maxbytes 可选 50MB
    stdout_logfile_backups 可选 10
    stdout_capture_maxbytes 可选 0
    stdout_events_enabled 可选 0
    stderr_logfile 可选 AUTO
    stderr_logfile_maxbytes 可选 50MB
    stderr_logfile_backups 可选 10
    stderr_capture_maxbytes 可选 0
    stderr_events_enabled 可选 0
    environment 可选
    directory 可选
    umask 可选
    serverurl 可选 AUTO

    对应一般监控脚本来说. 配置太多, 太复杂. 参考下面的一份大部分脚本使用的简要配置.

    [program:test]
    command=php /tmp/test.php
    autostart=true
    autorestart = true
    stdout_logfile=/tmp/test_stdout.log
    stderr_logfile=/tmp/test_stderr.log
    

    保存上面的内容到 /etc/supervisor/conf.d/test.conf 文件中. 在/tmp 目录下创建 test.php 脚本

    <?php
    // file: /tmp/test.php
    while(true) {
        echo date('r') . PHP_EOL;
        sleep(1);
    }
    

    使用 supervisorctl 管理脚本.

    sudo supervisorctl reload #重载配置文件.
    sudo supervisorctl status #查看当前的进程状态.
    sudo supervisorctl stop test #停止 test 进程.
    sudo supervisorctl start test #启动 test 进程.

    相关文章

      网友评论

          本文标题:Ubuntu 16.04 Supervisor 配置使用

          本文链接:https://www.haomeiwen.com/subject/vxgrkqtx.html