一、使用背景
目前在公司搭建了一套基于Django的管理后台,同时使用了celery做了调度部分爬虫任务的定时调度,由于涉及到起到的进程指令过多,需要个工具来统一管理配置,找了半天…最后找了相对较火热的Supervisor(其实最开始使用的是docker,基于docker-compose本地都调测好了,但是公司服务器对容器管控严格,镜像源申请一眼难尽…)
二、工具简介
supervisor作用是对运行在类Linux系统上的指定进程进行管理,由python编写,可以理解是一个平台工具,不是一个简单的类库。支持像docker一样的对运行的程序启动、终止,重启等操作,也支持对进程运行的稳定性有很大的帮助,可以自动对异常终止的程序自动启动。
三、安装
找到两种相对简单的安装方式(本人比较懒…) 第一种是Mac带的brew安装
brew install supervisor
第二种是pip安装
pip install supervisor
四、配置文件
1. 位置
配置文件位置一般会在你pip的的安装目录下,一下是我电脑的位置 如果找不到自己的pip位置还有只简单的方法
2. 步骤
设置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客户端管理
客户端启动
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
|