1.简介
Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它可以很方便的监听、启动、停止、重启一个或多个进程。
用Supervisor 管理的进程,当一个进程意外被杀死,supervisort 监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写 shell 脚本来控制。
用户访问域名 –> nginx –> 应用服务器 gunicorn <– supervisord 负责管理
2.安装
Supervisor不支持windows
①Debian/Ubuntu可通过apt安装
apt-get install supervisor
②Centos可通过yum安装
yum install supervisor
③pip安装
pip install supervisor
④easy_install安装
easy_install supervisor
3.使用
生成 supervisor 默认配置文件,首先生产一个supervisor目录,默认放在/etc/目录下
echo_supervisord_conf > /etc/supervisor/supervisor.conf
这里我们放在/etc/supervisor/目录下,文件名为supervisor.conf,可以取其他名字。
项目的配置文件根据项目需求单独写,你需要修改一些配置,将你的配置文件的路径加到include下
sudo vim /etc/supervisor/supervisor.conf
[include]
files =/etc/supervisor.d/*.conf
下面我们开始写配置文件
[program:back]
directory=/data/python/aigc-python
command = /data/python/aigc-python/venv/bin/python /data/python/aigc-python/app/chatgpt_manager/background_task_relate.py
autostart=true
autorestart=true
stdout_logfile=/data/log/python/knowledge_graph/super.log
stdout_logfile_maxbytes = 5MB ;
stdout_logfile_backups = 3 ;
redirect_stderr=true
stopsignal=QUIT
stopasgroup=true
killasgroup=true
启动命令
supervisord -c /etc/supervisord.conf
supervisorctl一些常见的命令:
systemctl restart supervisord # 启动默认加载的配置文件位置 /etc/supervisord.conf
systemctl start supervisord
systemctl stop supervisord
supervisorctl # 会进入到管理界面
supervisorctl stop program_name # 停止某一个进程,program_name 为 [program:x] 里的 x
supervisorctl start program_name # 启动某个进程
supervisorctl restart program_name # 重启某个进程
supervisorctl stop groupworker: # 结束所有属于名为 groupworker 这个分组的进程 (start,restart 同理)
supervisorctl stop groupworker:name1 # 结束 groupworker:name1 这个进程 (start,restart 同理)
supervisorctl stop all # 停止全部进程,注:start、restartUnlinking stale socket /tmp/supervisor.sock、stop 都不会载入最新的配置文件
supervisorctl reload # 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程
supervisorctl update # 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启