目前在公司搭建了一套基于Django的管理后台,同时使用了celery做了调度部分爬虫任务的定时调度,由于涉及到起到的进程指令过多,需要个工具来统一管理配置,找了半天…最后找了相对较火热的Supervisor(其实最开始使用的是docker,基于docker-compose本地都调测好了,但是公司服务器对容器管控严格,镜像源申请一眼难尽…)
supervisor作用是对运行在类Linux系统上的指定进程进行管理,由python编写,可以理解是一个平台工具,不是一个简单的类库。支持像docker一样的对运行的程序启动、终止,重启等操作,也支持对进程运行的稳定性有很大的帮助,可以自动对异常终止的程序自动启动。
找到两种相对简单的安装方式(本人比较懒…)
第一种是Mac带的brew安装
brew install supervisor
第二种是pip安装
pip install supervisor
配置文件位置一般会在你pip的的安装目录下,一下是我电脑的位置
如果找不到自己的pip位置还有只简单的方法
设置supervisor配置目录
mkdir -p /etc/supervisor/conf.d
cd到安装目录,执行命令,生成配置文件
./echo_supervisord_conf > /etc/supervisor/conf.d/supervisored.conf
supervisored.conf配置文件修改
配置项有点多但是实际配置内容不多,需要注意的是网上有许多教程只设置了图一的配置,也能运行,但是由于后面几个文件路径配置morning的设置为/tmp临时文件目录,这个目录容易被删除,导致后面在启动时容易出现pid文件,sock文件找不到的异常,强烈建议修改位置
进程管理配置文件目录设置,将上面创建的配置目录设置好,以后的进程配置文件都要放在这个文件夹里面
supervisor.sock文件位置设置
supervisor.d配置项文件设置
supervisorctl配置项文件设置
supervisord -c /etc/supervisor/supervisored.conf #注意:要以配置文件的方式开启服务
客户端启动
supervisorctl -c /etc/supervisor/supervisored.conf #注意:要以配置文件的方式启动客户端
指令 | 说明 |
---|---|
重启 | restart 进程名 |
开启 | start 进程名 |
终止 | stop 进程名 |
状态查看 | status |
编辑一个进程配置,以一个flask程序为例,首先配置一个flask.conf文件到设置的conf.d文件目录
进程文件配置如下:
[program:flask_run]
command=/Users/ywt/.local/share/virtualenvs/owner-2UBBwPbN/bin/python server.py
user=ywt
directory=/Users/ywt/PycharmProjects/owner
autostart=false
autorestart=true
startsecs=20
startretries=3
redirect_stderr=true
stdout_logfile=/var/log/supervisor
std_logfile_maxbytes=20MB
std_logfile_backups=20