使用Supervisor来管理uwsgi和celery
介绍
Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。
安装
Supervisor是使用python开发的一个进程管工具,安装和使用都非常简单。使用 pip 或者 easy_install 安装会非常方便,自动解决依赖关系。
一、安装命令
|
1
2
3
|
pip install supervisoreasy_install supervisor |
安装完成后系统会增加几个命令:
- supervisord 用于启动supervisor服务。
- supervisorctl 用于管理supervisor服务,管理使用supervisor启动的进程。
二、安装好supervisor后需要手动的生成配置文件。
|
1
|
echo_supervisord_conf > /etc/supervisord.conf |
supervisor默认读取的配置文件为/etc/supervisord.conf。
生成配置文件后就可以启动了,如果需要指定配置文件启动的话 需要加上参数 -c,如:
|
1
|
supervisord -c /etc/supervisord/supervisord.conf |
三、设置配置文件
执行完上面的操作后,配置文件/etc/supervisord.conf就已经生成了。
supervisord.conf 基本配置项说明,由于其参数比较多,这些只贴出一些常用的配置项,详细内容可参阅官网。 “;” 符号是表示该行配置被注释。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
[unix_http_server]file=/home/supervisor/supervisor.sock ; supervisorctl使用的 socket文件的路径;chmod=0700 ; 默认的socket文件权限0700;chown=nobody:nogroup ; socket文件的拥有者[inet_http_server] ; 提供web管理后台管理相关配置port=0.0.0.0:9001 ; web管理后台运行的ip地址及端口,绑定外网需考虑安全性 ;username=root ; web管理后台登录用户名密码;password=root[supervisord]logfile=/var/log/supervisord.log ; 日志文件,默认在$CWD/supervisord.loglogfile_maxbytes=50MB ; 日志限制大小,超过会生成新文件,0表示不限制logfile_backups=10 ; 日志备份数量默认10,0表示不备份loglevel=info ; 日志级别pidfile=/home/supervisor/supervisord.pid ; supervisord pidfile; default supervisord.pid ; pid文件nodaemon=false ; 是否在前台启动,默认后台启动falseminfds=1024 ; 可以打开文件描述符最小值minprocs=200 ; 可以打开的进程最小值[supervisorctl]serverurl=unix:///home/supervisor/supervisor.sock ; 通过socket连接supervisord,路径与[include];files = /etc/supervisor/conf.d/*.ini ;指定了在当前目录supervisor.d文件夹下配置多个配置文件 |
在配置文件中,我们需要做的在后面加上需要被管理的uwsgi和celery,如:
|
1
2
3
4
5
6
7
8
9
10
|
[program:uwsgi]command=uwsgi --ini /var/www/project/app01/uwsgi.ini ; 启动uwsgi,路径改为项目的路径directory=/var/www/project ;项目目录stopsignal=QUITautostart=trueautorestart=trueredirect_stderr=truestdout_logfile=/var/www/project/uwsgi.log ; uwsgi日志 |
|
1
2
3
4
5
6
7
8
9
10
|
[program:celery]command=celery -A project worker --loglevel=info --pool=solo ; 启动celery的workerdirectory=/var/www/project ; 项目目录stopsignal=QUITautostart=trueautorestart=trueredirect_stderr=truestdout_logfile=/var/www/project/logs/celery.log ; celery日志 |
四、启动
设置完配置文件后启动supervisor就可以管理uwsgi和celery了。
启动命令:
|
1
|
supervisord |
supervisorctl
如果supervisord配置文件不再默认位置,使用supervisorctl工具时需要指定配置文件路径
|
1
2
3
4
5
6
7
8
9
|
supervisordctl -c 配置文件路径supervisordctl status #查看进程运行状态supervisordctl start 进程名 #启动进程 all 表示全部supervisordctl stop 进程名 #关闭进程 supervisordctl restart 进程名 # 重启进程supervisordctl update # 重新载入配置文件supervisordctl shutdown # 关闭supervisordsupervisordctl clear 进程名 # 清空进程日志 |
转自:https://www.cnblogs.com/ray-h/p/11064665.html

浙公网安备 33010602011771号