转载

Supervisor全攻略

supervisord的配置文件主要由几个配置段构成,配置项以K/V格式呈现,下面就看看各个配置端需要怎样配置:

[unix_http_server]

在该配置块的参数项表示的是一个监听在socket上的HTTP server,如果[unix_http_server]块不在配置文件中,则不会启动基于socket的HTTP server。

file:一个unix domain socket的文件路径,HTTP/XML-RPC会监听在这上面 chmod:在启动时修改unix domain socket的mode chown:修改socket文件的属主 username:HTTP server在认证时的用户名 password:认证密码

eg:

[unix_http_server] file = /tmp/supervisor.sock chmod = 0777 chown= nobody:nogroup username = user password = 123

[inet_http_server]

在该配置块的参数项表示的是一个监听在TCP上的HTTP server,如果[inet_http_server]块不在配置文件中,则不会启动基于TCP的HTTP server。

port:TCP监听的地址和端口(ip:port),这个地址会被HTTP/XML-RPC监听 username:HTTP server在认证时的用户名 password:认证密码

eg:

[inet_http_server] port = 127.0.0.1:9001 username = user password = 123

[supervisord]

该配置块的参数项是关于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列表

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

serverurl:这个url是用来访问supervisord服务的(http://localhost:9001),或者是个sockets文件(unix:///absolute/path/to/file.sock) username:supervisorctl连接supervisord的认证用户 password:认证密码 prompt:默认是supervisor history_file:history文件路径

eg:

[supervisorctl] serverurl = unix:///tmp/supervisor.sock username = chris password = 123 prompt = mysupervisor

[program:x]

该配置块包含一个或者多个program段,program来表明supervisord要控制哪些程序。该配置块的头部是有固定格式的,一个关键字program,后面跟着一个冒号,接下来才是程序名。例如:[program:foo],foo就是程序名,在使用supervisorctl来操作程序的时候,就是以foo来标明的。

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

eg:

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

[include]

该配置段里面设置可以包含其他配置文件

files:其他配置文件

下面这几个配置段,LZ不打算翻译了,因为我暂时还用不上,哈哈.....

[group:x]
[fcgi-program:x]
[eventlistener:x]
[rpcinterface:x]

正文到此结束
Loading...