本文共 2495 字,大约阅读时间需要 8 分钟。
配置Supervisor以监控和管理生产环境中的应用程序是一个常见的任务。以下是优化后的文档,提供一个清晰且易于理解的安装和配置指南。
通过Terminal安装Python的Supervisor包:
sudo pip install supervisor
根据文档生成默认配置文件:
echo_supervisord_conf > supervisord.conf
打开配置文件(使用vim):
vim supervisord.conf
在文件末尾添加以下内容:
[include]files = /etc/supervisor/*.conf
将配置文件复制到/etc目录:
sudo cp supervisord.conf /etc/
创建/etc/supervisor文件夹来存储项目配置:
sudo mkdir /etc/supervisorsudo chmod 755 /etc/supervisor
进入文件夹并创建项目配置文件:
cd /etc/supervisortouch 项目名.conf
在配置文件中添加监控组(例如backend组)和相关程序设置:
[group:backend]programs=3dvserver[program:3dvserver]command=/etc/supervisor/scripts/3dv_script.shdirectory=/home/tanzhihao/3dview_remoteuser=rootautorestart=trueredirect_stderr=falseloglevel=infostopsignal=KILLstopasgroup=truekillasgroup=true
继续创建脚本目录并添加脚本:
sudo mkdir /etc/supervisor/scriptssudo chmod 777 /etc/supervisor/scripts
创建并编辑脚本文件(例如3dv_script.sh):
#!/bin/bashsource ~/.bashrcexport FLASK_ENV=productioncd /home/tanzhihao/3dview_remoteexec gunicorn -w 2 -b 127.0.0.1:5005 --workers 2 --timeout 30 --bind 127.0.0.1:5005 --workers 2 --tclient 2 'gevent' manage:app
赋予脚本执行权限:
sudo chmod +x /etc/supervisor/scripts/3dv_script.sh
启动Supervisor并进入管理界面:
sudo supervisord -c /etc/supervisor/supervisord.confsupervisorctl
如果连接到/var/run/supervisor/supervisor.sock失败,可以手动创建该文件:
sudo touch /var/run/supervisor/supervisor.socksudo chmod 777 /var/run/supervisor/supervisor.sock
并在配置文件中修改socket路径:
[unix_http_server]file=/var/run/supervisor/supervisor.sock
然后更新配置:
sudo supervisorctl update
检查文件夹和文件权限是否正确:
sudo chmod 777 /var/run/supervisorsudo chmod 777 /var/log/supervisor.log
使用ps命令检查进程:
ps aux | grep supervisorps aux | grep gunicorn
如果状态显示为“STATE: STARTING”,确保所有进程已停止后重新启动:
supervisorctl stop allsupervisord -c /etc/supervisor/supervisord.confsupervisorctl start all
在manage.py所在目录创建gunicorn.conf,添加以下内容:
import multiprocessingpreload_app = Trueworkers = 2threads = 2bind = '127.0.0.1:5005'daemon = 'false'worker_class = 'gevent'worker_connections = 2000pidfile = '/var/run/gunicorn.pid'accesslog = '/home/tanzhihao/3dview_remote/gunlog/access.log'errorlog = '/home/tanzhihao/3dview_remote/gunlog/error.log'loglevel = 'warning'
/etc/supervisor/scripts内的脚本文件内容:
#!/bin/bashsource ~/.bashrcexport FLASK_ENV=productioncd /home/tanzhihao/3dview_remote# 执行Gunicorn命令,可使用以下命令:# exec gunicorn -c gunicorn.conf manage:app
配置文件内容无需更改以适用于Gunicorn。
通过以上步骤,成功配置并运行了Gunicorn和Supervisor。监控进程状态:
supervisorctl status
确保配置文件路径和权限正确,遇到异常情况时及时排查。
转载地址:http://xyvnz.baihongyu.com/