0、旁白
Supervisor是个父进程,你要守护的进程会以Supervisor的子进程形式存在,所以老子才可以管儿子
1、安装
easy_install supervisor
2、配置
echo_supervisord_conf > /etc/supervisord.conf #生成配置文件
3、启动
supervisord -c /etc/supervisord.conf # 启动Supervisor进程,父进程不起来,什么都不要说了
# 父进程起来之后,就用【supervisorctl】这个工具管理子进程
supervisorctl -c /etc/supervisord.conf status 查看状态
supervisorctl -c /etc/supervisord.conf reload 重新载入配置文件
supervisorctl -c /etc/supervisord.conf start [all]|[x] 启动所有/指定的程序进程
supervisorctl -c /etc/supervisord.conf stop [all]|[x] 关闭所有/指定的程序进程
4、参数
[unix_http_server]
参数选项 | 中文白话 |
---|---|
file=/tmp/supervisor.sock | socket文件的路径,supervisorctl用XML_RPC和supervisord通信就是通过它进行的。如果不设置的话,supervisorctl也就不能用了不设置的话,默认为none。 非必须设置 |
;chmod=0700 | 这个简单,就是修改上面的那个socket文件的权限为0700不设置的话,默认为0700。 非必须设置 |
;chown=nobody:nogroup | 这个一样,修改上面的那个socket文件的属组为user.group不设置的话,默认为启动supervisord进程的用户及属组。非必须设置 |
;username=user | 使用supervisorctl连接的时候,认证的用户不设置的话,默认为不需要用户。 非必须设置 |
;password=123 | 和上面的用户名对应的密码,可以直接使用明码,也可以使用SHA加密如:{SHA}82ab876d1387bfafe46cc1c8a2ef074eae50cb1d默认不设置。非必须设置 |
;[inet_http_server]
侦听在TCP上的socket,Web Server和远程的supervisorctl都要用到他 不设置的话,默认为不开启。非必须设置
参数选项 | 中文白话 |
---|---|
;port=127.0.0.1:9001 | 这个是侦听的IP和端口,侦听所有IP用 :9001或*:9001。 这个必须设置,只要上面的[inet_http_server]开启了,就必须设置它 |
;username=user | 这个和上面的uinx_http_server一个样。非必须设置 |
;password=123 | 这个也一个样。非必须设置 |
[supervisord]
这个主要是定义supervisord这个服务端进程的一些参数的这个必须设置,不设置,supervisor就不用干活了
参数选项 | 中文白话 |
---|---|
logfile=/tmp/supervisord.log | 这个是supervisord这个主进程的日志路径,注意和子进程的日志不搭嘎。默认路径$CWD/supervisord.log,$CWD是当前目录。。非必须设置 |
logfile_maxbytes=50MB | 这个是上面那个日志文件的最大的大小,当超过50M的时候,会生成一个新的日志文件。当设置为0时,表示不限制文件大小默认值是50M,非必须设置。 |
logfile_backups=10 | 日志文件保持的数量,上面的日志文件大于50M时,就会生成一个新文件。文件数量大于10时,最初的老文件被新文件覆盖,文件数量将保持为10当设置为0时,表示不限制文件的数量。默认情况下为10。。。非必须设置 |
loglevel=info | 日志级别,有critical, error, warn, info, debug, trace, or blather等。默认为info。。。非必须设置项 |
pidfile=/tmp/supervisord.pid | supervisord的pid文件路径。默认为$CWD/supervisord.pid。。。非必须设置 |
nodaemon=false | 如果是true,supervisord进程将在前台运行。默认为false,也就是后台以守护进程运行。。。非必须设置 |
minfds=1024 | 这个是最少系统空闲的文件描述符,低于这个值supervisor将不会启动。系统的文件描述符在这里设置cat /proc/sys/fs/file-max。默认情况下为1024。。。非必须设置 |
minprocs=200 | 最小可用的进程描述符,低于这个值supervisor也将不会正常启动。ulimit -u这个命令,可以查看linux下面用户的最大进程数。默认为200。。。非必须设置 |
;umask=022 | 进程创建文件的掩码。默认为022。。非必须设置项 |
;user=chrism | 这个参数可以设置一个非root用户,当我们以root用户启动supervisord之后。我这里面设置的这个用户,也可以对supervisord进行管理。默认情况是不设置。。。非必须设置项 |
;identifier=supervisor | 这个参数是supervisord的标识符,主要是给XML_RPC用的。当你有多个supervisor的时候,而且想调用XML_RPC统一管理,就需要为每个supervisor设置不同的标识符了。默认是supervisord。。。非必需设置 |
;directory=/tmp | 这个参数是当supervisord作为守护进程运行的时候,设置这个参数的话,启动supervisord进程之前,会先切换到这个目录。默认不设置。。。非必须设置 |
;nocleanup=true | 这个参数当为false的时候,会在supervisord进程启动的时候,把以前子进程产生的日志文件(路径为AUTO的情况下)清除掉。有时候咱们想要看历史日志,当然不想日志被清除了。所以可以设置为true。默认是false,有调试需求的同学可以设置为true。。。非必须设置 |
;childlogdir=/tmp | 当子进程日志路径为AUTO的时候,子进程日志文件的存放路径。默认路径是这个东西,执行下面的这个命令看看就OK了,处理的东西就默认路径python -c "import tempfile;print tempfile.gettempdir()"。非必须设置 |
;environment=KEY="value" | 这个是用来设置环境变量的,supervisord在linux中启动默认继承了linux的环境变量,在这里可以设置supervisord进程特有的其他环境变量。supervisord启动子进程时,子进程会拷贝父进程的内存空间内容。 所以设置的这些环境变量也会被子进程继承。小例子:environment=name="haha",age="hehe"。默认为不设置。。。非必须设置 |
;strip_ansi=false | 这个选项如果设置为true,会清除子进程日志中的所有ANSI 序列。什么是ANSI序列呢?就是我们的\n,\t这些东西。默认为false。。。非必须设置 |
[rpcinterface:supervisor]
这个选项是给XML_RPC用的,当然你如果想使用supervisord或者web server 这个选项必须要开启的
[supervisorctl]
参数选项 | 中文白话 |
---|---|
serverurl=unix:///tmp/supervisor.sock | 这个是supervisorctl本地连接supervisord的时候,本地UNIX socket路径,注意这个是和前面的[unix_http_server]对应的默认值就是unix:///tmp/supervisor.sock 非必须设置 |
;serverurl=http://127.0.0.1:9001 | 这个是supervisorctl远程连接supervisord的时候,用到的TCP socket路径注意这个和前面的[inet_http_server]对应。默认就是http://127.0.0.1:9001 非必须项 |
;username=chris | 用户名默认空。非必须设置 |
;password=123 | 密码默认空。。非必须设置 |
;prompt=mysupervisor | 输入用户名密码时候的提示符默认supervisor。。非必须设置 |
;history_file=~/.sc_history | 这个参数和shell中的history类似,我们可以用上下键来查找前面执行过的命令。默认是no file的。。所以我们想要有这种功能,必须指定一个文件。。。非必须设置 |