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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342