天天看点

Supervisor的作用与配置

​​supervisor​​

supervisor管理进程,是通过fork/exec的方式将这些被管理的进程当作supervisor的子进程来启动,所以我们只需要将要管理进程的可执行文件的路径添加到supervisor的配置文件中就好了。此时被管理进程被视为supervisor的子进程,若该子进程异常中断,则父进程可以准确的获取子进程异常中断的信息,通过在配置文件中设置autostart=ture,可以实现对异常中断的子进程的自动重启。

安装完supervisor后,输入以下命令可得到配置文件:

或者:

配置文件如下(分号;表示注释):

以上配置文件用到几个部分:

[unix_http_server]:这部分设置HTTP服务器监听的UNIX domain socket

file: 指向UNIX domain socket,即file=/var/run/supervisor.sock

chmod:启动时改变supervisor.sock的权限

[supervisord]:与supervisord有关的全局配置需要在这部分设置

logfile: 指向记录supervisord进程的log文件

pidfile:pidfile保存子进程的路径

childlogdir:子进程log目录设为AUTO的log目录

[supervisorctl]:

serverurl:进入supervisord的URL, 对于UNIX domain sockets, 应设为 unix:///absolute/path/to/file.sock

[include]:如果配置文件包含该部分,则该部分必须包含一个files键:

files:包含一个或多个文件,这里包含了/etc/supervisor/conf.d/目录下所有的.conf文件,可以在该目录下增加我们自己的配置文件,在该配置文件中增加[program:x]部分,用来运行我们自己的程序,如下:

[program:x]:配置文件必须包括至少一个program,x是program名称,必须写上,不能为空

command:包含一个命令,当这个program启动时执行

directory:执行子进程时supervisord暂时切换到该目录

user:账户名

startsecs:进程从STARING状态转换到RUNNING状态program所需要保持运行的时间(单位:秒)

redirect_stderr:如果是true,则进程的stderr输出被发送回其stdout文件描述符上的supervisord

stdout_logfile:将进程stdout输出到指定文件

stdout_logfile_maxbytes:stdout_logfile指定日志文件最大字节数,默认为50MB,可以加KB、MB或GB等单位

stdout_logfile_backups:要保存的stdout_logfile备份的数量

示例如下,在目录/etc/supervisor/conf.d/下创建awesome.conf,并加入:

配置完后,先进入/srv/awesome/目录下创建log目录,之后启动supervisor:

supervisor基本命令(后四个命令可以省略“-c supervisor.conf”):

执行服务(运行app.py):

如果supervisor遇到错误,可以在/var/log/supervisor/supervisord.log中查看日志;

如果app运行出现问题,可以在/srv/awesome/log/app.log中查看日志。