Supervisord快速上手说明

安装

如果服务器上有pip,则直接运行命令pip install supervisor安装,如果没有,则需要下载安装文件,之后运行命令python setup.py install安装。

以上都需要能连接到互联网。

配置

安装完成之后,执行命令echo_supervisord_conf > /etc/supervisord.conf即可生成默认配置文件,如果没有root权限,也可以把配置文件保存在用户自己的目录下,运行supervisord时使用-c参数指定配置文件路径即可。

supervisor启动时如果没有使用-c参数,则会自动在当前目录下查找配置文件。

示例如下:

supervisord -c supervisord.conf

运行

这里会使用到一个名称为BINDIR的目录,和系统中python的安装目录相关。比如,安装python时通过./configure --prefix=/usr/local/py; make; make install命令,则BINDIR就是/usr/local/py/bin。你也可通过查看setup.py install命令的输出来确认在你的系统中这个目录具体是什么。

运行$BINDIR/supervisord就可以启动了。它会自动进入后台进程,关闭当前终端也不会退出。默认会在当前目录下生成一个日志文件($CWD/supervisor.log)。

在启动时自动运行

如果你是通过安装包来安装的,supervisord就已安装到系统服务里了。

这里有很多用户提供的适用于多种操作系统的脚本。

这里还有一些有用的问答。

配置文件

配置文件的详细说明,可以看官网,这里只给出基本说明。

如果在启动supervisord时没有通过-c参数提供配置文件的路径,supervisord会通过以下顺序去查找名为supervisord.conf的配置文件。

1. $CWD/supervisord.conf
2. $CWD/etc/supervisord.conf
3. /etc/supervisord.conf
4. /etc/supervisor/supervisord.conf(since Supervisor 3.3.0)
5. ../etc/supervisord.conf (Relative to the executable)
6. ../supervisord.conf (Relative to the executable)

文件格式

supervisord.conf使用Windows的ini配置文件格式。

环境变量

可以在配置文件中使用环境变量,使用python的字符串表达式语法%(ENV_X)s,示例如下:


[program:example] 
command=/usr/bin/example --loglevel=%(ENV_LOGLEVEL)s 

在上面的例子中%(ENV_LOGLEVEL)s 会被替换成环境变量LOGLEVEL的值。

注意:这个特性只在3.2版本及更高版本中支持,之前的版本只能部分支持,需要查看对应版本的文档。

配置块

[supervisord]

[supervisord]配置块是全局配置。

配置项 必须 说明 默认值
logfile 日志文件路径 $CWD/supervisord.log
logfile_maxbytes 日志文件最大大小(后缀可以是KBMBGB) ,设置成0表示不限制 50MB
logfile_backups 日志文件备份数量,设置为0表示不备份 10
loglevel 日志级别,可设置为critical, error, warn, info, debug, trace, 或 blather之一,设置为debug级别时,会记录下子进程的`stderr/stdout输出,这对调试有问题的进程很有用 info
user user用户的身份执行操作,切换用户身份失败时不会运行程序,必须是以root用户身份启动supervisord
environment 设置supervisord及其子进程运行时的环境变量,格式KEY="val",KEY2="val2"

示例:


[supervisord] 
logfile = /tmp/supervisord.log 
logfile_maxbytes = 50MB 
logfile_backups=10 
loglevel = info 
pidfile = /tmp/supervisord.pid 
nodaemon = false 
minfds = 1024 
minprocs = 200 
umask = 022 
user = chrism 
identifier = supervisor 
directory = /tmp 
nocleanup = true 
childlogdir = /tmp 
strip_ansi = false 
environment = KEY1="value1",KEY2="value2"

[program:x]配置块

配置文件中必须包含至少一个program配置块,supervisord通过这个配置块知道要启动和管理的进程信息。冒号后面的x表示要启动的程序的名称,比如[program:foo]表示一个名称为foo的程序。这个名称会在supervisorctl或网页管理界面中显示,名称当中不能包含冒号和括号等特殊字符。

配置项 必须 说明 默认值
command 要执行的命令,示例:/path/to/program/name -p "foo bar"
startsecs 程序启动后需要保持在运行状态的时长(单位:秒)。注意:即使程序运行正常退出了,如果不到设置的时长,也会被认为是启动失败 。 1
startretries 尝试启动次数,超过设置的次数后,程序会被标记为FATAL状态 3
autorestart 当处于RUNNING状态的程序退出后,supervisord是否自动重启之。可选值:false, unexpectedtruefalse表示不重启,unexpected表示当程序非正常退出时重启,true表示总是重启。 unexpected
exitcodes 表示程序正常退出的退出码 0
user user用户的身份执行操作,切换用户身份失败时不会运行程序,必须是以root用户身份启动supervisord

示例:


[program:cat] 
command=/bin/cat 
process_name=%(program_name)s 
numprocs=1 
directory=/tmp 
umask=022 
priority=999 
autostart=true 
autorestart=unexpected 
startsecs=10 
startretries=3 
exitcodes=0 
stopsignal=TERM 
stopwaitsecs=10 
stopasgroup=false 
killasgroup=false 
user=chrism 
redirect_stderr=false 
stdout_logfile=/a/path 
stdout_logfile_maxbytes=1MB 
stdout_logfile_backups=10 
stdout_capture_maxbytes=1MB 
stdout_events_enabled=false 
stderr_logfile=/a/path 
stderr_logfile_maxbytes=1MB 
stderr_logfile_backups=10 
stderr_capture_maxbytes=1MB 
stderr_events_enabled=false 
environment=A="1",B="2" 
serverurl=AUTO

[include]配置块

[include]配置块表示要包含的外部配置文件,

配置项 必须 说明 默认值
files 空格分隔的路径,可以包含* ?通配符,可以是绝对路径或相对路径

示例:


[include] 
files = /an/absolute/filename.conf /an/absolute/*.conf foo.conf config??.conf

你可能感兴趣的:(Supervisord快速上手说明)