Flask+Gunicorn+Nginx+Supervisor部署高并发web工程。

服务器系统:ubuntu 16.04 LTS python环境:3.6

Flask 

Flask是一个使用python代码编写的轻量级web框架,可以通过简易的配置快速实现各类web服务功能。常用于web_api、个人博客、中小型服务网站搭建。

flask的搭建流程就不细说了,大致如下: 1 通过pip 安装flask 依赖

        pip install flask

2 新建run.py文件 引入flask模块

        flask import Flask,request

        import json #通常还会引入json模块

        from flask_cors import CORS #跨域访问 cors 按需要配置

        app = Flask(__name__)

        CORS(app, supports_credentials=True) #可去除

        @app.route('/') 

        def hello_world():

             return 'Hello World!'

        @app.route('/test', methods=['GET'])

        def test():  # 导入:

        # 取参数

            text = request.args.get('text')

            return json.dumps(text)

        if __name__ == '__main__':

            app.run(debug=True,port=5000)

然后执行 python run.py 就可以在本地的5000端口看到helloworld界面了。

Gunicorn

这是一个被广泛使用的高性能的Python WSGI UNIX HTTP服务器,也有人选择uWsgi可以达到同样的效果。

首先安装:

pip install gunicorn

然后在flask 配置文件中添加如下代码:

        from werkzeug.contrib.fixers import ProxyFix

            app.wsgi_app = ProxyFix(app.wsgi_app)

这时候便在flask工程中引入了wsgi代理。gunicorn支持多种worker模式,包括:

1 sync - 默认,使用同步阻塞的网络模型

2 gevent - Requires gevent >= 0.13

3 tornado - Requires tornado >= 0.2 等

本教程选用gevent模式:

pip install gevent

使用下面命令便可通过gunicorn启动flask:

gunicorn -w 4 -b 0.0.0.0:5000 -k gevent run:app

(-w 4 表示启动4个worker -k gevent 表示选择gevent模式)

Nginx的对应配置 详见本博客另一篇教程,简单说就是把5000端口映射到nignx代理就行了,就可以实现通过nginx转发http请求。

supervisor 服务端运维的重点,系统中各类进程的守护者。由于不支持python3的环境,所以配置会稍微麻烦一点,我们需要通过virtualenv 创建一个python2虚拟环境。

pip install virtualenv

首先在自定义目录下创建 super 虚拟环境

virtualenv --distribute -p /usr/bin/python2 super

cd super

source bin/activate    #激活虚拟环境

./bin/pip install supervisor# 安装supervier

echo_supervisord_conf > supervisor.conf  # 生成 supervisor 默认配置文件

#热后便可以通过以下命令对supervisor进行操作:

supervisord -c supervisor.conf #通过配置文件启动supervisor

supervisorctl -c supervisor.conf status #察看supervisor的状态

supervisorctl -c supervisor.conf reload 重新载入 #配置文件

supervisorctl -c supervisor.conf start [all]|[appname] #启动指定/所有 supervisor管理的程序进程

supervisorctl -c supervisor.conf stop [all]|[appname] 关闭指定/所有 supervisor管理的程序进程

supervisor.conf中配置对应的gunicorn应用,其他类型的应用配置也类似,比如java的springboot。

[program:start_gunicorn]

command=/your/bin/path/to/gunicorn -w 4 -b 0.0.0.0:5000 -k gevent run:app

directory:/home/ubuntu/project/test1/ #run.py所在的目录

autostart=true

redirect_stderr=true

user=root

directory=/usr/local/qs-project/web

stdout_logfile=/var/log/test_test.log

如果要启用supervisor的web端:9001端口.

需要注释掉 配置文件中

[inet_http_server] 的所有子配置项

以及

[supervisorctl] 中的前四项

deactivate  #退出环境

至此,Flask的服务端部署教程结束。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,511评论 1 330
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,495评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,595评论 0 225
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,558评论 0 190
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,715评论 3 270
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,672评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,112评论 2 291
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,837评论 0 181
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,417评论 0 228
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,928评论 2 232
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,316评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,773评论 2 234
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,253评论 3 220
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,827评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,440评论 0 180
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,523评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,583评论 2 249

推荐阅读更多精彩内容