1、什么是Supervisor?
Supervisor 是基于 Python 的进程管理工具,只能运行在 Unix-Like 的系统上,也就是无法运行在 Windows 上。Supervisor 官方版目前只能运行在 Python 2.4 以上版本,但是还无法运行在 Python 3 上,不过已经有一个 Python 3 的移植版 supervisor-py3k。在一个分布式环境中,每台机器上可能需要启动和停止多个进程,使用命令行方式一个一个手动启动和停止非常麻烦,而且查看每个进程的状态也很不方便。如果有一个工具能够实现每台机器上多个进程的简单高效中心化管理将是非常方便的。于是Supervisord工具应运而生。其实supervisor这东西,其实就是用来管理进程的。
2、如何使用
2.1 安装
pip install supervisor
安装完成之后就有了echo_supervisord_conf这个命令,使用 echo_supervisord_conf > supervisord.conf # 创建配置文件,可以放在你自己的项目目录下,也可以放在/etc/supervisor/supervisor.conf中
2.2 添加自己的配置文件内容(celery为例)
[program:celeryd] # 程序名称,终端控制时需要的标识
command=/root/.virtualenvs/full_education/bin/celery -A celery_tasks.main worker -P eventlet --loglevel=INFO --concurrency=15 # 运行程序的命令, 需要找到自己安装celery的目录
stdout_logfile=/var/log/celery/celeryd.log # 输出日志文件,文件目录需要自己创建
stderr_logfile=/var/log/celery/celeryd.log # 错误日志文件
autostart=true # 自动启动
autorestart=true # 程序意外退出时自动重启
startsecs=10
2.3 常用命令
supervisorctl -c ./supervisord.conf ;启动supervisor,找到自己的supervisor.conf的目录
supervisorctl shutdown ;停止supervisor
supervisorctl reload ;重启supervisor
supervisorctl restart <application name> ;重启指定应,application name 就是配置文件的celeryd
supervisorctl stop <application name> ;停止指定应用
supervisorctl start <application name> ;启动指定应用,
supervisorctl restart all ;重启所有应用
supervisorctl stop all ;停止所有应用
supervisorctl start all ;启动所有应用
supervisorctl status ;查看运行状态
3、适用场景
1、后台启动celery异步任务
2、启动uwsgi
[program:uwsgi] # 程序名称,终端控制时需要的标识
command=/root/.virtualenvs/full_education/bin/ --ini uwsgi.ini # 运行程序的命令, 需要找到自己安装celery的目录
directory=/opt/full_education/ ;命令执行的目录
stdout_logfile=/var/log/celery/celeryd.log # 输出日志文件,文件目录需要自己创建
stderr_logfile=/var/log/celery/celeryd.log # 错误日志文件
autostart=true # 自动启动
autorestart=true # 程序意外退出时自动重启
startsecs=10