最新消息:

Supervisor 安装教程和软件配置说明

个人宝藏 澄色香味 73浏览 0评论

Supervisord是用Python实现的一款非常实用的进程管理工具,类似于monit,monit和supervisord的一个比较大的差异是supervisord管理的进程必须由supervisord来启动,monit可以管理已经在运行的程序;supervisord还要求管理的程序是非daemon程序,supervisord会帮你把它转成daemon程序。

安装

debian/ubuntu

apt-get install supervisor

redhat/centos

yum install python-setuptools
easy_install supervisor

创建配置文件
已Root身份

echo_supervisord_conf > /etc/supervisord.conf

配置文件说明
增加web管理界面

[inet_http_server]
port=0.0.0.0:9001
username=your_username           ; (default is no username (open server))
password=your_password           ; (default is no password (open server))

添加服务

[supervisorctl]
serverurl=unix:///tmp/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 http_username if set
;password=123                ; should be same as http_password if set
;prompt=mysupervisor         ; cmd line prompt (default "supervisor")
;history_file=~/.sc_history  ; use readline history if available

添加单个进程

; 管理单个进程的配置,可创建多个,下面是所有可能的配置选项
;[program:theprogramname]
;command=/bin/cat              ; 启动进程的命令 使用相对路径,可以加参数
;process_name=%(program_name)s ; 进程名称 表达式 (默认 %(program_name)s)
;numprocs=1                    ; 进程数目 (def 1)
;directory=/tmp                ; 执行命令所在的目录 (def no cwd)
;umask=022                     ; 进程默认权限 (default None)
;priority=999                  ; 进程启动相对优先权 (default 999)
;autostart=true                ; 跟随supervisor启动时启动 (default: true)
;autorestart=unexpected        ; 计划启动 (default: unexpected)
;startsecs=1                   ; 延时启动 (def. 1)
;startretries=3                ; 最多连续启动失败 (default 3)
;exitcodes=0,2                 ; 进程结束代码 (default 0,2)
;stopsignal=QUIT               ; signal used to kill process (default TERM)
;stopwaitsecs=10               ; 最长结束等待时间,否则使用 SIGKILL (default 10)
;stopasgroup=false             ; 是否想UNIX进程组发送结束信号 (default false)
;killasgroup=false             ; SIGKILL UNIX 进程组 (def false)
;user=chrism                   ; 设置启动此程序的用户
;redirect_stderr=true          ; 重定向程序的标准错误到标准输出 (default false)
;stdout_logfile=/a/path        ; 标准输出的日志路径, NONE for none; default AUTO
;stdout_logfile_maxbytes=1MB   ; 日志文件最大值,否则循环写入 (default 50MB)
;stdout_logfile_backups=10     ; 标准输出日志备份数目 (default 10)
;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
;stdout_events_enabled=false   ; emit events on stdout writes (default false)
;stderr_logfile=/a/path        ; 标准错误输出日志路径, NONE for none; default AUTO
;stderr_logfile_maxbytes=1MB   ; 日志文件最大值,否则循环写入 (default 50MB)
;stderr_logfile_backups=10     ; 标准错误日志备份数目 (default 10)
;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
;stderr_events_enabled=false   ; emit events on stderr writes (default false)
;environment=A="1",B="2"       ; 进程附加环境 (def no adds)
;serverurl=AUTO                ; override serverurl computation (childutils)

添加事件监听器

; The below sample eventlistener section shows all possible
; eventlistener subsection values, create one or more 'real'
; eventlistener: sections to be able to handle event notifications
; sent by supervisor.
; 下面是事件监听器的可选配置, supervisor能够处理事件通知.
;
; ** 译者注: 和上面相同的解释没有翻译 **

;[eventlistener:theeventlistenername]
;command=/bin/eventlistener    ; the program (relative uses PATH, can take args)
;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
;numprocs=1                    ; number of processes copies to start (def 1)
;events=EVENT                  ; event notif. types to subscribe to (req'd)
;buffer_size=10                ; 事件缓冲队列的大小 (default 10)
;directory=/tmp                ; directory to cwd to before exec (def no cwd)
;umask=022                     ; umask for process (default None)
;priority=-1                   ; the relative start priority (default -1)
;autostart=true                ; start at supervisord start (default: true)
;autorestart=unexpected        ; whether/when to restart (default: unexpected)
;startsecs=1                   ; number of secs prog must stay running (def. 1)
;startretries=3                ; max # of serial start failures (default 3)
;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)
;stopsignal=QUIT               ; signal used to kill process (default TERM)
;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)
;stopasgroup=false             ; send stop signal to the UNIX process group (default false)
;killasgroup=false             ; SIGKILL the UNIX process group (def false)
;user=chrism                   ; setuid to this UNIX account to run the program
;redirect_stderr=true          ; redirect proc stderr to stdout (default false)
;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO
;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)
;stdout_events_enabled=false   ; emit events on stdout writes (default false)
;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO
;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
;stderr_logfile_backups        ; # of stderr logfile backups (default 10)
;stderr_events_enabled=false   ; emit events on stderr writes (default false)
;environment=A="1",B="2"       ; process environment additions
;serverurl=AUTO                ; override serverurl computation (childutils)

添加进程组

; The below sample group section shows all possible group values,
; create one or more 'real' group: sections to create "heterogeneous"
; process groups.
; 下面是进程组的可选配置,可以创建一个或多个进程组。

;[group:thegroupname]
;programs=progname1,progname2  ; 这里的进程名是上文 [program:theprogramname] 定义的theprogramname
;priority=999                  ; the relative start priority (default 999)

命令行工具 supervisorctl

$ supervisorctl help

default commands (type help ):
=====================================
add    clear  fg        open  quit    remove  restart   start   stop  update
avail  exit   maintail  pid   reload  reread  shutdown  status  tail  version

命令功能

supervisord,初始启动Supervisord,启动、管理配置中设置的进程。
supervisorctl stop programxxx,停止某一个进程(programxxx),programxxx为[program:chatdemon]里配置的值,这个示例就是chatdemon。
supervisorctl start programxxx,启动某个进程
supervisorctl restart programxxx,重启某个进程
supervisorctl stop groupworker: ,重启所有属于名为groupworker这个分组的进程(start,restart同理)
supervisorctl stop all,停止全部进程,注:start、restart、stop都不会载入最新的配置文件。
supervisorctl reload,载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程。
supervisorctl update,根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。
注意:显示用stop停止掉的进程,用reload或者update都不会自动重启。

转载请注明:SkyTs » Supervisor 安装教程和软件配置说明

发表我的评论
取消评论

:wink: :-| :-x :twisted: :) 8-O :( :roll: :-P :oops: :-o :mrgreen: :lol: :idea: :-D :evil: :cry: 8) :arrow: :-? :?: :!:

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址