1. 安装supervisor
[root@ilaus app]# pip install supervisorctl
2. 创建配置文件
一旦Supervisor安装完成,运行 echo_supervisord_conf
。将打印一个“示例”Supervisor配置文件到终端的stdout。
一旦您看到文件回显到您的终端,再 root 权限下请调用命令: echo_supervisord_conf > /etc/supervisord.conf
。
如果没有root访问权限,或者您不想将 supervisord.conf
文件放在 /etc/supervisord.conf
中,则可以将其放在当前目录(echo_supervisord_conf > supervisord.conf
)中,并使用 -c
标志来启动 supervisord 以指定配置文件位置。
创建号配置文件后就可以修改工作了。
3. 运行supervisor
修改BINDIR, 在安装 python 时通过 ./configure --prefix=/usr/local/py; make; make install 来指定python 解释器使用不同的bindir,修改--prefix 的值可以修改bindir, eg: 当前的 bindir 为 /usr/local/py/bin
添加program
[program:foo]
command=/bin/cat
启动supervisor
[root@ilaus etc]# supervisord
配置文件
supervisor的配置文件通常命名为supervisord.conf, 它被supervisord和supervisorctl使用。任一应用程序在没有 -c 的选项下启动, 则按照下列方式依次查找 supervisord.conf 文件。supervisord.conf 的文件风格为 Windows - INI 风格。它具有部分键/值对。
$CWD/supervisord.conf
$CWD/etc/supervisord.conf
/etc/supervisord.conf
/etc/supervisor/supervisord.conf (自Supervisor 3.3.0之后)
../etc/supervisord.conf (相对于可执行文件)
../supervisord.conf (相对于可执行文件)
supervisord 启动时存在于环境中的环境变量可以在配置文件中使用 Python 字符串表达式语法 %(ENV_X)s
[program:example]
command=/usr/bin/example --loglevel=%(ENV_LOGLEVEL)s
supervisord 配置文件, 具体参数情况查看 supervisor 配置文件 RD 文档
[unix_http_server] 节设置:
supervisord.conf 文件包含一个名为 [unix_http_server] 的节, 应该插入在 unix (socket) 套接字上监听 HTTP 服务器的配置参数。
[inet_http_server] 节设置:
supervisord.conf 文件包含一个名为 [inet_http_server] 的节, 应插入在tcp 套接字上监听http服务器的配置参数。
[supervisord] 节设置
[supervisord] 是于supervisord 进程相关的全局设置。eg:
[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"
[supervisorctl
] 节设置
包含 supervisorctl 交互式 shell 程序的设置。
[supervisorctl]
serverurl = unix:///tmp/supervisor.sock
username = chris
password = 123
prompt = mysupervisor
[program:x]
节设置
设置supervisord 启动和控制的程序。
command 启动时运行的命令, command
的值可以包括Python字符串表达式,例如 /path/to/programname --port=80%(process_num)02d
可能在运行时扩展为 /path/to/programname --port=8000
。字符串表达式将根据包含密钥 group_name
,host_node_name
,process_num
,program_name
,here
(超级用户配置文件的目录)的字典以及所有以 ENV_
为前缀的环境变量进行求值。
eg:
[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,2
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