flask+gunicorn+supervisor部署项目
一、安装模块
pip install gunicorn gevent
# 如果使用python supervisor,需要安装模块
pip install supervisor
# 建议使用yum安装
yum install supervisor -y
systemctl start supervisord
二、gunicorn配置文件,gunicorn.py
# -*- coding: utf8 -*-
bind = "0.0.0.0:8080"
workers = 4
threads = 2
backlog = 2048
# 设置守护进程,将进程交给python - supervisor管理 daemon 设置为true,由系统安装的supervisor管理则设置为false
daemon = 'false'
# 工作模式协程
worker_class = 'gevent'
# 设置最大并发量
worker_connections = 2000
chdir = "/app/project/api"
pythonpath = "%(chdir)"
pidfile = "logs/gunicorn.pid"
accesslog = "logs/access.log"
errorlog = "logs/error.log"
timeout = 600
debug = False
capture_output = True
reload = True
三、测试gunicorn flask对外接口manage.py
gunicorn -c gunicorn_conf.py manage:app
访问接口测试
测试完kill掉,下面用supervisor部署项目
四、生成supervisor配置文件(如果由pip安装的supervisor管理则需要以下步骤)
cd /app/project/api/
mkdir supervisor
echo_supervisord_conf > supervisor/supervisord.conf
五、配置 supervisor管理的项目配置文件
SIT [root@hmy supervisord.d]# pwd
/etc/supervisord.d
SIT [root@hmy supervisord.d]# cat ops_sys.ini
[program:ops_sys]
directory = /app/project/
command=/app/project/venv/bin/gunicorn -c sys-service/gunicorn_conf.py manage:app
user=root
autostart=true
startsecs=5
startretries=3
autorestart=true ; 程序崩溃时自动重启,重启次数是有限制的,默认为3次
redirect_stderr=true ; 重定向输出的日志
stdout_syslog=true
stdout_logfile=/app/project/supervisor/sys_stdout.log ; stdout log path, NONE for none; default AUTO
stderr_logfile=/app/project/supervisor/sys_stderr.log
stdout_logfile_backups=5
stderr_logfile_backups=5
六、启动项目
supervisorctl start all