使用Supervisor来管理uwsgi和celery

介绍

Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。

 

安装

Supervisor是使用python开发的一个进程管工具,安装和使用都非常简单。使用 pip 或者 easy_install 安装会非常方便,自动解决依赖关系。

一、安装命令

pip install supervisor

easy_install supervisor

 

安装完成后系统会增加几个命令:

  • supervisord 用于启动supervisor服务。
  • supervisorctl 用于管理supervisor服务,管理使用supervisor启动的进程。

 

二、安装好supervisor后需要手动的生成配置文件。

echo_supervisord_conf > /etc/supervisord.conf

 

supervisor默认读取的配置文件为/etc/supervisord.conf。

生成配置文件后就可以启动了,如果需要指定配置文件启动的话 需要加上参数 -c,如:

supervisord -c /etc/supervisord/supervisord.conf

 

三、设置配置文件

执行完上面的操作后,配置文件/etc/supervisord.conf就已经生成了。

supervisord.conf 基本配置项说明,由于其参数比较多,这些只贴出一些常用的配置项,详细内容可参阅官网。 “;” 符号是表示该行配置被注释。

[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,如:

[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日志

 

[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了。

启动命令:

supervisord

supervisorctl
如果supervisord配置文件不再默认位置,使用supervisorctl工具时需要指定配置文件路径 

supervisordctl -c 配置文件路径

supervisordctl status                              #查看进程运行状态
supervisordctl start 进程名                      #启动进程   all 表示全部
supervisordctl stop 进程名                      #关闭进程  
supervisordctl restart 进程名                  # 重启进程
supervisordctl update                           # 重新载入配置文件
supervisordctl shutdown                       # 关闭supervisord
supervisordctl clear 进程名                    # 清空进程日志

 

posted @ 2019-06-21 15:09  rayh  阅读(560)  评论(1编辑  收藏  举报