flask gunicorn 部署
之前部署python的web项目都是用的uwsgi进行部署的,昨天晚上看大佬的文章,看到人家大佬使用的gunicorn进行部署的,今天就来研究下gunicorn部署
简介
部署web项目的大致结构,nginx比较擅长处理接收客户端发送给服务器的请求,gunicorn处理flask的请求,提高并发量,设置进程数量等等,Supervisor负责监控gunicorn是否挂掉了,如果挂掉了就拉起来继续干。
安装gunicorn
# 我这里是在虚拟环境下进行的哈,没有的pip install virtualenv,当然你也可以选择不
pip3 install gunicorn
flask服务
# 这里是flask的测试服务,直接copy代码演示就行了,节约时间,时间和宝贵的。
from flask import Flask
app = Flask(__name__)
@app.route('/', methods=['GET'])
def index():
return 'test gunicorn---hello world---\n'
if __name__ == '__main__':
app.run()
配置
首先配置nginx
这里直接添加一个代理就可以了
server {
listen 5000;
location / {
proxy_pass http://127.0.0.1:5001;
}
}
配置gunicorn
gunicorn这个玩意儿可以直接gunicorn -w 3 -b 127.0.0.1:5001 main:app 这样直接启动的,不过麻烦。所以我直接录配置文件的
# 项目目录下创建一个.py 结尾的文件,因为这里要获取cup数量之类的操作
from gevent import monkey
monkey.patch_all()
import multiprocessing
debug = True
loglevel = 'debug'
bind = '127.0.0.1:6800'
pidfile = '/home/practice_gunicron/gunicorn.pid'
logfile = '/home/practice_gunicron/gunicorn.log'
workers = multiprocessing.cpu_count() * 2 + 1
worker_class = 'gevent'
安装supervisor并启动supervisor
# 还是老配方
pip3 install supervisor
# 初始化配置文件
echo_supervisord_conf > /etc/supervisor/supervisord.conf
# 启动supervisor服务
supervisord -c /etc/supervisor/supervisord.conf
配置守护进程
守护进程配置放在/etc/supervisor下面并以conf结尾
配置文件修改下,引入的文件
[include]
files = /etc/supervisor/*.ini
[program:demo]
command=/www/demo/venv/bin/gunicorn -c /pushy/blog/gconfig.py run:app
directory=/www/demo //项目目录
user=root
autorestart=true //设置自动重启
startretires=3 //重启失败3次
最后supervisorctl start demo 启动相应的守护进程就可以了
参考 supervisor https://www.cnblogs.com/Dicky-Zhang/p/6171954.html