文章目录

[隐藏]

  • 一、介绍
  • 二、安装
  • 三、配置文件
  • 四、修改配合文件
  • 五、supervisord配置块详解
  • 六、program配置详解
  • 七、执行
一、介绍

supervisor 是用 Python 开发的一个 C/S 服务。是 Linux/Unix 系统下的进程管理工具。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。

注意:只能用在Unix系统中,Windows用不了

二、安装

yum 方式

#更新yum源  wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo    #yum安装  yum install supervisor -y  
三、配置文件

cat /etc/supervisord.conf

[unix_http_server]  file=/opt/supervisor.sock   ; supervisorctl 使用的 socket 文件  chmod=0700                 ; socket 文件权限  ;chown=nobody:nogroup       ; socket file uid:gid owner  ;username=user              ; default is no username (open server)  ;password=123               ; default is no password (open server)    [inet_http_server]         ; web 管理界面,即在页面做重启、停止等操作  port=*:9001                ; 监听端口  username=admin             ; 用户  password=123               ; 密码    [supervisord]  logfile=/var/log/supervisord.log ; supervisor日志文件 $CWD/supervisord.log  logfile_maxbytes=50MB        ; 日志文件大小,默认 50MB  logfile_backups=1           ; 默认保留1个文件  loglevel=info                ; 日志级别,默认info; 其他格式: debug,warn,trace  pidfile=/var/run/supervisord.pid ; pid 文件  nodaemon=false               ; 是否在前台运行,默认false,以 daemon模式运行  minfds=1024                  ; 可以打开文件描述符的最小值  minprocs=200                 ; 可以打开进程数最小值  ;umask=022                   ; process file creation umask; default 022  ;user=chrism                 ; default is current user, required if root  ;identifier=supervisor       ; supervisord identifier, default is 'supervisor'  ;directory=/opt              ; default is not to cd during start  ;nocleanup=true              ; don't clean up tempfiles at start; default false  ;childlogdir=/opt            ; 'AUTO' child log dir, default $TEMP  ;environment=KEY="value"     ; key value pairs to add to environment  ;strip_ansi=false            ; strip ansi escape codes in logs; def. false      [supervisorctl]  serverurl=unix:///opt/supervisor.sock ; use a unix:// URL  for a unix socket  ;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket  ;username=chris              ; should be same as in [*_http_server] if set  ;password=123                ; should be same as in [*_http_server] if set  ;prompt=mysupervisor         ; cmd line prompt (default "supervisor")  ;history_file=~/.sc_history  ; use readline history if available      [include]  files = /etc/supervisord.d/*.conf ;子文件  
四、修改配合文件

vim /etc/supervisord.conf

   [inet_http_server] ; inet (TCP) server disabled by default    port=0.0.0.0:9001 ; ip_address:port specifier, *:port for all iface    username=user ; default is no username (open server)    password=123 ; default is no password (open server)    [include]    files = /etc/supervisord.d/*.conf    创建.conf目录   mkdir /etc/supervisord.d    创建nginx配置文件vim nginx.conf    [program:nginx]    autorestart=True    autostart=True    redirect_stderr=True    ;environment=PATH=""    command=/usr/sbin/nginx -g 'daemon off;';  sbin/nginx这条命令默认是后台启动,但是supervisor不能监控后台程序,所以supervisor就一直执行这个命令,导致nginx一直在重启,加上-g 'daemon off;'这个参数可解决这问题,这个参数的意思是在前台运行    user=root    ;process_name = %(program_name)s%(process_num)d    ;numprocs=3    ;directory=/root/    stdout_logfile_maxbytes=20MB    stdout_logfile_backups=20    ;stdout    stdout_logfile=/var/log/supervisor/nginx.log    stderr_logfile=/var/log/supervisor/nginx_error.log  
五、supervisord配置块详解
- logfile:log文件路径  - logfile_maxbytes:log文件达到多少后自动进行轮转,单位是KB、MB、GB。如果设置为0则表示不限制日志文件大小  - logfile_backups:轮转日志备份的数量,默认是10,如果设置为0,则不备份  - loglevel:error、warn、info、debug、trace、blather、critical  - pidfile:pid文件路径  - umask:umask值,默认022  - nodaemon:如果设置为true,则supervisord在前台启动,而不是以守护进程启动  - minfds:supervisord在成功启动前可用的最小文件描述符数量,默认1024  - minprocs:supervisord在成功启动前可用的最小进程描述符数量,默认200  - nocleanup:防止supervisord在启动的时候清除已经存在的子进程日志文件  - childlogdir:自动启动的子进程的日志目录  - user:supervisord的运行用户  - directory:supervisord以守护进程运行的时候切换到这个目录  - strip_ansi:消除子进程日志文件中的转义序列  - environment:一个k/v对的list列表  
六、program配置详解
- command:启动程序使用的命令,可以是绝对路径或者相对路径  - process_name:一个python字符串表达式,用来表示supervisor进程启动的这个的名称,默认值是%(program_name)s  - numprocs:Supervisor启动这个程序的多个实例,如果numprocs>1,则process_name的表达式必须包含%(process_num)s,默认是1  - numprocs_start:一个int偏移值,当启动实例的时候用来计算numprocs的值  - priority:权重,可以控制程序启动和关闭时的顺序,权重越低:越早启动,越晚关闭。默认值是999  - autostart:如果设置为true,当supervisord启动的时候,进程会自动重启。  - autorestart:值可以是false、true、unexpected。false:进程不会自动重启,unexpected:当程序退出时的退出码不是exitcodes中定义的时,进程会重启,true:进程会无条件重启当退出的时候。  - startsecs:程序启动后等待多长时间后才认为程序启动成功  - startretries:supervisord尝试启动一个程序时尝试的次数。默认是3  - exitcodes:一个预期的退出返回码,默认是0,2。  - stopsignal:当收到stop请求的时候,发送信号给程序,默认是TERM信号,也可以是 HUP, INT, QUIT, KILL, USR1, or USR2。  - stopwaitsecs:在操作系统给supervisord发送SIGCHILD信号时等待的时间  - stopasgroup:如果设置为true,则会使supervisor发送停止信号到整个进程组  - killasgroup:如果设置为true,则在给程序发送SIGKILL信号的时候,会发送到整个进程组,它的子进程也会受到影响。  - user:如果supervisord以root运行,则会使用这个设置用户启动子程序  - redirect_stderr:如果设置为true,进程则会把标准错误输出到supervisord后台的标准输出文件描述符。  - stdout_logfile:把进程的标准输出写入文件中,如果stdout_logfile没有设置或者设置为AUTO,则supervisor会自动选择一个文件位置。  - stdout_logfile_maxbytes:标准输出log文件达到多少后自动进行轮转,单位是KB、MB、GB。如果设置为0则表示不限制日志文件大小  - stdout_logfile_backups:标准输出日志轮转备份的数量,默认是10,如果设置为0,则不备份  - stdout_capture_maxbytes:当进程处于stderr capture mode模式的时候,写入FIFO队列的最大bytes值,单位可以是KB、MB、GB  - stdout_events_enabled:如果设置为true,当进程在写它的stderr到文件描述符的时候,PROCESS_LOG_STDERR事件会被触发  - stderr_logfile:把进程的错误日志输出一个文件中,除非redirect_stderr参数被设置为true  - stderr_logfile_maxbytes:错误log文件达到多少后自动进行轮转,单位是KB、MB、GB。如果设置为0则表示不限制日志文件大小  - stderr_logfile_backups:错误日志轮转备份的数量,默认是10,如果设置为0,则不备份  - stderr_capture_maxbytes:当进程处于stderr capture mode模式的时候,写入FIFO队列的最大bytes值,单位可以是KB、MB、GB  - stderr_events_enabled:如果设置为true,当进程在写它的stderr到文件描述符的时候,PROCESS_LOG_STDERR事件会被触发  - environment:一个k/v对的list列表  - directory:supervisord在生成子进程的时候会切换到该目录  - umask:设置进程的umask  - serverurl:是否允许子进程和内部的HTTP服务通讯,如果设置为AUTO,supervisor会自动的构造一个url  
七、执行
# supervisord -c /etc/supervisord.conf  # supervisorctl    # 重启supervisor  # supervisorctl reload  

原文出处:cnblogs -> https://www.cnblogs.com/angelyan/p/10984390.html

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。
超哥软件库 » supervisor 简单使用