使用Supervisor来管理uwsgi和celery
介绍
Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。
安装
Supervisor是使用python开发的一个进程管工具,安装和使用都非常简单。使用 pip 或者 easy_install 安装会非常方便,自动解决依赖关系。
一、安装命令
1 2 3 | pip install supervisor easy_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.log logfile_maxbytes=50MB ; 日志限制大小,超过会生成新文件,0表示不限制 logfile_backups=10 ; 日志备份数量默认10,0表示不备份 loglevel=info ; 日志级别 pidfile=/home/supervisor/supervisord.pid ; supervisord pidfile; default supervisord.pid ; pid文件 nodaemon= false ; 是否在前台启动,默认后台启动 false minfds=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=QUIT autostart= true autorestart= true redirect_stderr= true stdout_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的worker directory=/ var /www/project ; 项目目录 stopsignal=QUIT autostart= true autorestart= true redirect_stderr= true stdout_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 # 关闭supervisord supervisordctl clear 进程名 # 清空进程日志 |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步