flask-发布web服务
Gunicorn + Nginx + CentOS 7
部署方案是:
Web 服务器采用 Gunicorn host Flask
用 Supervisor 引用 Gunicorn 作常规启动服务
基于 Nginx 作代理
- nginx 做为代理服务器:负责静态资源发送(js、css、图片等)、动态请求转发以及结果的回复;
- uWSGI 做为后端服务器:负责接收 nginx 请求转发并处理后发给 Flask 应用以及接收 Flask 应用返回信息转发给 nginx;
- Flask 应用收到请求后处理数据并渲染相应的返回页面给 uWSGI 服务器。
设置完毕后,整个执行流程如下:
设置flask环境变量用于设置配置文件
export FLASK_CONFIG=”production”先进入进入python虚拟环境
source ./gisWebsite/bin/activate然后运行gunicorn
gunicorn run:app -p gisWebserver.pid -c gunicorn_config.py
Supervisor相关参见博文”Supervisor的使用”。
gunicorn配置文件
gunicorn_config.py
# coding=utf-8 |
在配置文件里面设置日志等相关信息gunicorn run:app -p gisWebserver.pid -c gunicorn_config.py
重启
kill -HUP masterpid
配置nginx
先备份配置文件
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
修改为
server { |
重启nginx服务
sudo service nginx restart
这个时候就能访问gunicorn监听的本地地址了。
下面信息尚未操作,有待证实。
将 Gunicorn 作为服务运行
这就是最后一步了,我们在此将采用 UpStart 配置Flask程序作为服务程序在Linux起动时运行。首先建立起动配置文件:
sudo nano /etc/init/myflask.conf
然后加入如下配置
description "The myflask service" |
启动 myflask 服务sudo service myflask start
独立的 WSGI 容器
- Gunicorn:是一个 unix 上被广泛使用的高性能的 WSGI HTTP 服务器,和大多数的web框架兼容,并具有实现简单,轻量级,高性能等特点。Gunicorn 会开启大量进程,等待并处理接收到的请求,每个单独进程能同时处理它们接收到的请求,避免进程启动和销毁的开销。
- Tornado:是一款开源的可伸缩、非阻塞式的 Web 服务器和工具集,在高并发的应用场景中有不错的效果。同样,要想通过 Tornado 来部署 Flask 也是很简便的。
- Gevent:是一个基于协同程序的python库,与tornado的部署方式类似,通过gevent部署flask也是十分的便利。