Flask + Gunicorn + Nginx 部署

WSGI协议

Web框架致力于如何生成HTML代码,而Web服务器用于处理和响应HTTP请求。Web框架和Web服务器之间的通讯,须要一套双方都遵照的接口协议。WSGI协议就是用来统一这二者的接口的。html

WSGI容器——Gunicorn

经常使用的WSGI容器有Gunicorn和uWSGI,但Gunicorn直接用命令启动,不须要编写配置文件,相对uWSGI要容易不少,因此这里我也选择用Gunicorn做为容器。python

安装

 

 

启动

 

module_name对应python文件,variable_name对应web应用实例。
以最简单的flask应用为例:nginx

启动代码:git

 

tips

开发flask应用时,经常使用flask-script添加一些命令扩展。而部署应用时,就不须要再从flask-script的Manager实例中启动应用了。
在项目中添加wsgi.py文件:github

  • 在wsgi文件中建立flask实例给gunicorn使用。
  • 建立实例后,注册上下文装饰器。

再经过gunicorn启动flask应用:web

 

Nginx

Gunicorn对静态文件的支持不太好,因此生产环境下经常使用Nginx做为反向代理服务器。flask

安装

 

 

启动

 

 

修改配置文件

先将配置文件备份:服务器

而后修改配置文件:app

这里将Nginx设置为代理模式,代理到本地的8000端口,以后就能够经过公网访问flask应用了。框架

总结

最后,总结下这几个部分的关系:


(nginx收到客户端发来的请求,根据nginx中配置的路由,将其转发给WSGI)
nginx:”WSGI,找你的来了!”厦门叉车租赁(WSGI服务器根据WSGI协议解析请求,配置好环境变量,调用start_response方法呼叫flask框架)WSGI服务器:”flask,快来接客,客户资料我都给你准备好了!”(flask根据env环境变量,请求参数和路径找到对应处理函数,生成html)flask:”!@#$%^……WSGI,html文档弄好了,拿去吧。”(WSGI拿到html,再组装根据env变量组装成一个http响应,发送给nginx)WSGI服务器:”nginx,刚才谁找我来着?回他个话,!@#$%^…..”(nginx再将响应发送给客户端)

相关文章
相关标签/搜索