1.进程管理工具的安装:
sudo pip install supervisor
2.创建配置文件:
切换到home文件下创建 自定义配置文件:my_supervisor.conf,然后执行echo_supervisord_conf > ./my_supervisor.conf
3.切换到home路径下创建自定义配置文件夹:
mkdir /home/user/supervisor
mkdir /home/user/log
4.对创建的默认的配置文件进行修改
[unix_http_server]
file=/tmp/supervisor.sock; (the path to the socket file)
修改为 /home/user/supervisor 目录,上面自己创建的目录,避免被系统删除.
file=/home/user/supervisor/supervisor.sock; (the path to the socket file)
把下面4行前面的注释符;去掉,这样就可以开启web页面来管理supervisor
[inet_http_server] ; inet (TCP) server disabled by default
port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for ;alliface)
username=user ; (default is no username (open server))
password=123 ; (default is no password (open server))
....
[supervisord]
logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
修改为 /home/user/log 目录,上面自己创建的目录,避免被系统删除
logfile=/home/user/log/supervisord.log; (main log file;default $CWD/supervisord.log)
日志文件多大时进行分割
logfile_maxbytes=50MB; (max main logfile bytes b4 rotation;default 50MB)
最多保留多少份日志文件
logfile_backups=10; (num of main logfile rotation backups;default 10)
日志记录等级
loglevel=info; (log level;default info; others: debug,warn,trace)
pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
修改为 /home/user/supervisor 目录,自定义目录,避免被系统删除
pidfile=/home/user/supervisor/supervisord.pid; (supervisord pidfile;default supervisord.pid)
...
[supervisorctl]
必须和unix_http_server里面的设定匹配
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket
修改为 /home/user/supervisor 目录,自定义目录避免被系统删除
serverurl=unix:///home/user/supervisor/supervisor.sock ; use a unix:// URL for a unix socket
要开启web页面来管理supervisor必须把下面3行前面的注释符;去掉 而且username要与上面的[inet_http_server]设置一致
serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
username=user; should be same as http_username if set
password=123; should be same as http_password if set
...
进程的配置样例
设置进程的名称,使用 supervisorctl来管理进程时需要使用该进程名 app(自定义名称)
[program:app]
command=python app.py; 指定路径版 command=python /home/user/app.py
;numprocs=1; 默认为1 把;去掉可修改
;process_name=%(program_name)s ; 默认为 %(program_name)s,即 [program:x] 中的 x
directory=/home/user ; 执行 command 之前,先切换到工作目录
程序崩溃时自动重启,重启次数是有限制的,默认为3次
autorestart=true
redirect_stderr=true ; 重定向输出的日志
stdout_logfile = /home/log/app.log ; 必须先创建这个日志文件再指定
loglevel=info ; 日志等级
启动 supervisord
使用自定义的配置文件 /home/user/my.conf
supervisord -c ./my_supervisor.conf
上面命令成功以后,输入 supervisorclt 会提示输入用户名和密码输入默认的即可
supervisorctl 命令介绍
查看进程运行状态
supervisorctl status
停止某一个进程,program_name 为 [program:x] 里的 x即自定义的名称
supervisorctl stop program_name
启动某个进程
supervisorctl start program_name
重启某个进程
supervisorctl restart program_name
结束所有属于名为 groupworker 这个分组的进程 (start,restart 同理)
supervisorctl stop groupworker:
结束 groupworker:name1 这个进程 (start,restart 同理)
supervisorctl stop groupworker:name1
停止全部进程,注:start、restart、stop 都不会载入最新的配置文件
supervisorctl stop all
载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程
supervisorctl reload
根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启
supervisorctl update