python后端web开发三件套nginx+uwsgi+flask 简单部署记录

nginx+uwsgi+flask 简单部署记录备忘

nginx & uwsgi & flask三者的关系

先看下这个结构图


web- cgi结构图.jpg

图中的几个地方解释:
nginx : 前端服务器 就是第一级 用来直接接受用户请求的http服务器。 一般收到请求常见的处理是转发给本机的cgi(不管是古老的cgi还是fast cgi还是wsgi协议)处理或者转发给其他机器上的nginx继续路由处理。

cgi / fast cgi /wsgi 协议层: 本质上都是类似cgi的东西,本质就是规定了前端服务器(nginx)如何和cgi服务沟通。 其中fast cgi是现在比较常见的改良版cgi(具体先不展开)。 wsgi是python专用的一个cgi协议(虽然感觉就是python版的fast cgi,据说性能吊打fast cgi 我差点就信了- , - )。

uwsgi : 一个wsgi协议的实现。 入口是一个可执行程序。常用命令有三个

1 uWSGI 启动(以这个ini配置开始运行):
uwsgi --ini xxx.ini
2 uwsgi 重启:
uwsgi --reload xxx.pid
3 uwsgi 停止:
uwsgi --stop xxx.pid

通过这个东西,我们只要准备一个ini文件和一个符合规范的py入口文件就可以起来一个wsgi协议的cgi或者http服务器了。可以作为cgi(后端服务器)也可以直接作为http服务器

flask : 这个是web编程框架。 本质上uwsgi + py入口文件就可以搞完了。但是flask只是封装了一些东西(写uwsgi的py入口文件的时候加载这个包会更方便一些),比如web框架层的复杂路由规则处理(每次都在nginx那里配了reload不是很麻烦嘛~),比如支持一些其他的扩展啥的。 但是本质还是封装,核心Flask这个类的重写了call方法,使其可以作为py入口文件被uwsgi使用而已。下面会再说到.

先从uwsgi开始

首先pip安装uwsgi,然后敲 which uwsgi 你会看到uwsgi的位置


image.png

这个就是uwsgi了 ,怎么用呢。
要开始用uwsgi起一个cgi或者http服务。 你需要准备2个东西。
一个是启动一个uwsgi的配置文件(本篇使用ini)
一个是启动一个uwsgi的py入口文件,里面需要包含一个包含2个参数的方法(不配置的话方法名默认是application, 这个可以改 后面再看)

先看配置文件,简单注释了下

image.png

其中 如果你起来是做cgi和nginx配合的就配置socket 如果是独立做http服务就配置http项
wsgi-file 就是你的py入口文件
其他看注释 = =
uwsgi的配置项有很多,详情可以看文档
官方文档
https://uwsgi-docs.readthedocs.io/en/latest/Configuration.html
中文文档
https://www.bookstack.cn/read/uwsgi-docs-2.0-zh/e7d161bfa19cced5.md

再看py文件

py文件是有规范的.比如这个


image.png

就是要有一个方法,像上面那个ini没有配置入口方法名,这里的默认名字就是application
return就是你吐回去的http报文了,这里测试随便写个字符串测试用的。

启动

uwsgi --ini xxx.ini 上面提到的这个命令即可 xxx.ini 就是你的配置文件,启动参数都配在里面了。
然后如果你是用http方式启动的话,你可以直接浏览器拼ip:port访问了
如果你是配socket项 接着往下走

nginx部分

首先安装nginx
然后你需要一个配置,比如这样的


image.png

这里nginx用的1234端口
启动参数同样在配置里了,比较重要的就是一些log目录,还有2个uwsgi的路由配置
上图 /hhh 表示: 本机ip:1234/hhh 的url都转发给对应配置的wsgi,其中include部分是一个路径,nginx安装完后/etc/nginx/这个目录下会给你备好 fastcgi_params , uwsgi_params 之类的几个文本,里面写了一些对应协议的环境变量名字约定我们引用就好.
uwsgi_pass 就是转发的uwsgi监听的端口路径(和你上面起的uwsgi一致就好)
然后就nginx -c xx.conf 就可以按这个配置启动了就vans了。 = =
nginx 常用命令就是
nginx -c xx.conf 指定配置启动
nginx -s reload 重新reload配置
nginx -s stop 快速退出
nginx -s quit 优雅退出(请求处理完了退出)

好了好了 然后你会发现本机ip:1234/hhh 已经可以请求到你的uwsgi了(链路是先到1234端口的nginx,然后nginx转发给监听9090端口uwsgi)

终于到flask了

抄完上面的作业,web服务已经起来了 。 但是我们写业务代码还是很麻烦。
比如一些url路由逻辑(你自己获取url自己实现也可以,但是每次都写一遍就很麻烦 = =,nginx也可以配但是你不会想每次加个新接口都去nginx里改配置reload一下这么搞的),还有一些flask给你封装好 or 引入的模块。 比如通过jinja2模版方便的渲染一个html返回,再比如flask-login 之类的,加上flask这个web框架你可以少写很多代码。
下面是flask的作业:
准备工作和uwsgi一样(flask只是一个web框架和业务代码我觉得可以算同一层= =,还是用uwsgi添加py入口启动的)
首先 一个配置


image.png

可以看到和单纯裸的uwsgi版本其实是一样的配置项目
关键的区别在于入口文件引入flask框架


image.png

可以看到 py文件里需要的就是创建一个Flask对象(这里起的名字叫app)然后配置里callable项填这个名字告诉uwsgi收到消息传给这个方法执行就好了。app.route装饰器用来生命每个接口对应的url 和 get/post那些。
flask文档快速入门

http://docs.jinkan.org/docs/flask/quickstart.html#a-minimal-application

over

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

推荐阅读更多精彩内容