flask gunicorn 部署

377 阅读2分钟

flask gunicorn 部署

之前部署python的web项目都是用的uwsgi进行部署的,昨天晚上看大佬的文章,看到人家大佬使用的gunicorn进行部署的,今天就来研究下gunicorn部署

flask gunicorn 部署简介安装gunicornflask服务配置首先配置nginx配置gunicorn安装supervisor并启动supervisor配置守护进程

简介

部署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 www.cnblogs.com/Dicky-Zhang…