ubuntu-server下安装配置supervisor进程管理

目的:使用supervisor进行进程管理,方便使用。

操作:

> sudo apt-get install supervisor # 安装supervisor

  1、安装完成后,/etc/supervisor/supervisord.conf 是supervisor的主要配置文件。

    supervisor的配置文件默认是不全的,不过在大部分默认的情况下,上面说的基本功能已经满足。

    supervisor的配置参数较多,详细的配置及说明请百度。

    注:分号(;)开头的配置表示注释

    [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,如果设成0,表示不限制大小
    logfile_backups=10           ;日志文件保留备份数量默认10,设为0表示不备份
    loglevel=info                ;日志级别,默认info,其它: debug,warn,trace
    pidfile=/tmp/supervisord.pid ;pid 文件
    nodaemon=false               ;是否在前台启动,默认是false,即以 daemon 的方式启动
    minfds=1024                  ;可以打开的文件描述符的最小值,默认 1024
    minprocs=200                 ;可以打开的进程数的最小值,默认 200
 
    [supervisorctl]
    serverurl=unix:///tmp/supervisor.sock ;通过UNIX socket连接supervisord,路径与unix_http_server部分的file一致
    ;serverurl=http://127.0.0.1:9001 ; 通过HTTP的方式连接supervisord
    
    [program:xxx] # 这个是我们配置被管理进程的参数,xxx是进程名,也可以将其单独卸载[include]下指定的目录中,并以指定的后缀结尾
    省略....(下面会写)
    
    ;包含其它配置文件
    [include]
    files = relative/directory/*.ini    ;可以指定一个或多个以.ini结束的配置文件
    # files = /etc/supervisor/conf.d/*.conf  ;这样写也是ok的,由自己指定,以后就可以将自己的进程配置文件放在这个目录下
 
  2、/etc/supervisor/conf.d/*.conf 这个地方就是上面管理进程所放的文件夹
    开始给自己需要的脚本程序编写一个子进程配置文件,让supervisor来管理它,
    放在/etc/supervisor/conf.d/目录下,以.conf作为扩展名(每个进程的配置文件都可以单独分拆也可以把相关的脚本放一起)。
    如任意定义一个和脚本相关的项目名称的选项组(/etc/supervisor/conf.d/test.conf)  

      #项目名
      [program:blog]
      #脚本目录
      directory=/opt/bin
      #脚本执行命令
      command=/usr/bin/python /opt/bin/test.py
      #supervisor启动的时候是否随着同时启动,默认True
      autostart=true
      #当程序exit的时候,这个program不会自动重启,默认unexpected
      #设置子进程挂掉后自动重启的情况,有三个选项,false,unexpected和true。如果为false的时候,无论什么情况下,都不会被重新启动,如果为unexpected,只有当进程的退出码不在下面的exitcodes里面定义的
      autorestart=false
      #这个选项是子进程启动多少秒之后,此时状态如果是running,则我们认为启动成功了。默认值为1
      startsecs=1
      #日志输出
      stderr_logfile=/tmp/blog_stderr.log
      stdout_logfile=/tmp/blog_stdout.log
      #脚本运行的用户身份
      user = zhoujy
      #把 stderr 重定向到 stdout,默认 false
      redirect_stderr = true
      #stdout 日志文件大小,默认 50MB
      stdout_logfile_maxbytes = 20M
      #stdout 日志文件备份数
      stdout_logfile_backups = 20

> supervisord # 启动supervisor服务

  注意:执行supervisord时出现supervisor error :Another program is already listening on a port that one of our HTTP servers is,说明你的supervisord已经启动了,通过 ps -ef | grep supervisord 来查看进程,可以kill他再重新起。

附上一些命令:

  supervisord -c /etc/supervisord.conf   # supervisor服务启动

  supervisorctl # 服务客户端管理(在supervisorctl客户端下help一下)

    supervisorctl status //查看状态

    supervisorctl start web_server // 开启一个进程(web_server=你配置中写的程序名称)

    supervisorctl stop web_server //停止一个进程

    supervisorctl restart web_server //重启一个进程

    supervisorctl reload # 重新启动配置中的所有程序,更改了supervisor的配置后执行一下

    supervisorctl reread // 重新加载配置,更改了进程配置后

    supervisorctl update // 更新启动列表,更改了进程配置后

参考:

https://www.cnblogs.com/xuezhigu/p/7660203.html

http://www.cnblogs.com/taek/p/8465393.html

........

  

原文地址:https://www.cnblogs.com/enochmeng/p/9779112.html