Uwsgi的安装

简介:

运维平台的搭建已经提上日程,而我选用了大家比较常用的“Uwsgi+nginx+django”的架构,这里先记录一下安装Uwsgi的过程。


这里解释一下“Uwsgi+nginx+django”,我们整个流程如下图:

wKioL1jCfvjwVdOwAABh6l_kAmo460.png


这里我们可以看出,web server是无法与我们的app(django等等)进行直接对话,他需要通过uwsgi这个桥梁,这个桥梁很重要,虽然我们使用django的runserver功能也会打开一个页面,但是这个页面是很脆弱的,小规模使用还好,要是放在网络上供人点击,根本就是脆不经风。


uwsgi是啥,请查看文末的参考资料,写的已经非常好了。我这里就简单说下:


uwsgi 实际上也是一个 http 服务器,只不过它只面向 python 网络应用程序。虽然 uwsgi 也是 http 服务器,但是却不能直接使用它部署 python web 应用程序,否则会出错。

在本文中,uwsgi 所扮演的的角色是后端 http 服务器,nginx 扮演的角色是前端 http 服务器,hello.py 是客户端应用程序。 用户从网页浏览器中发出请求,nginx 服务器收到请求后,会通过它的 uwsgi 模块将用户的请求转发给 uwsgi 服务器,uwsgi 服务器处理完毕后将结果返回给 nginx,浏览器将最终的结果展现给用户。


Uwsgi的安装比较简单,推荐使用#yum install Uwsgi直接下载使用,而不推荐用#pip install uwsgi,因为pip 安装的话,虽然也能成功(如下图红框),是没有uwsgi.ini文件的,其实没有这个uwsgi.ini是无足轻重的,因为这个文件可以自己写,但是对于生手来说,没有这个文件可能会心里发毛,就无法按照攻略继续下去,所以我更推荐用yum安装,如图:

wKiom1jBAyHyBvlOAADOGu1p49Q766.png


为了纪念我们的金刚狼同志,我们就写一个叫logan.py,里面的内容是这样的:

1
2
3
def application( env , start_response):
         start_response( '200 OK' , [( 'Content-Type' , 'text/html' )])
         return  "good bye,Logan..."


然后我们就可以启动这个uwsgi看看效果,使用#uwsgi --http :8001 --wsgi-file logan.py,把端口设定为8001,同时指定协议是http,然后加载的文件就是logan.py,启动之后,如图:

wKiom1jBBZTwjCgnAABGF8BNBkA952.png


遇到这种情况,你就#yum install uwsgi-plugin-python,然后把命令做一点点修改,改成:#uwsgi --plugin python --http-socket :8001 --wsgi-file logan.py


屏幕会出现一大堆文字,然后提示,uwsgi已经启动成功了。在浏览器输入“服务器外网地址:8001”看一下效果,如图:

wKioL1jBBsryT6cuAABTRWKZMcM283.png


我们在root目录下再写一个测试的文件,这次我们写一个比较老实的python脚本来测试,这个脚本就叫test.py,里面的内容如图:

1
2
3
4
5
6
7
8
9
10
#!/usr/bin/python
#coding=utf-8
import  os
import  sys
def application(environ, start_response):
         status =  '200'
         output =  'this is a test for uwsgi,HOHO~'
         response_headers = [( 'Content-type' 'text/plain' ),( 'Content-Length' , str(len(output)))]
         start_response(status, response_headers)
         return  output


还是用刚才的方法,依旧可以打开网页,其实上面这个简单的uWSGI程序更好理解整个套路,只需要实现一个名为application的函数就可以了,该函数有两个参数,environ为包含有http请求的环境变量,start_response为一个函数,用来设置http头。在这个函数里,我们只需要调用一次start_response函数,设置一下HTTP返回头,再return一个HTTP body即可。


至此,整个uwsgi就安装成功了。




参考资料:http://xiaorui.cc/2017/02/16/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3uwsgi%E5%92%8Cgunicorn%E7%BD%91%E7%BB%9C%E6%A8%A1%E5%9E%8B%E4%B8%8A/


http://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html




 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1904804

相关文章
|
监控 网络协议 前端开发
uWsgi的安装和配置笔记
uWsgi的安装和配置笔记
1276 0
|
应用服务中间件 Linux 数据库
阿里云centos部署Django+nginx+uwsgi服务,安装mezzanine为例
阿里云centos部署Django+nginx+uwsgi服务,安装mezzanine。阿里云新机python web部署。
5380 0
|
6月前
|
负载均衡 应用服务中间件 nginx
Django通过Nginx和uWSGI实现负载均衡
Django通过Nginx和uWSGI实现负载均衡
|
4月前
|
小程序 前端开发 应用服务中间件
nginx,uwsgi get方法请求参数过长怎么办
nginx,uwsgi get方法请求参数过长怎么办
50 0
|
8月前
|
负载均衡 应用服务中间件 Linux
CentOS7下python3+Flask+uWSGI+Nginx+Supervisor环境搭建
在生产环境中通常用uwsgi作为Flask的web服务网关,通过nginx反向代理进行负载均衡,通过supervior进行服务进行的管理。这一套搭下来还是有一些坑要踩,本文通过一个简单的Flask web应用记录了CentOS7下python3+Flask+uWSGI+Nginx+Supervisor环境搭建的全过程,以及一些注意事项,以免遗忘。
177 0
|
数据可视化 前端开发 应用服务中间件
flask+nginx+uwsgi部署服务器(详细保姆级教程)
本次项目我利用flask写了接口需要部署到服务器供前端使用,一路走来爬了很多坑,所以这一次做了详细的记录,从零开始教大家将flask项目跑起来
987 1
flask+nginx+uwsgi部署服务器(详细保姆级教程)
|
11月前
|
负载均衡 Unix 应用服务中间件
知其所以然:flask + uwsgi不要nginx,应该怎么写配置文件?
知其所以然:flask + uwsgi不要nginx,应该怎么写配置文件?
139 0
|
负载均衡 网络协议 Ubuntu
|
应用服务中间件 nginx Python
【Django部署】Nginx+uWsgi部署Django项目
最近需要部署一个Django项目但是不能用宝塔面板!呜呜呜 不能懒人式一键部署了 那就学习一下黑框框部署吧
602 0
【Django部署】Nginx+uWsgi部署Django项目
|
应用服务中间件 nginx Python
Python编程:uWSGI+nginx配置flask实例
Python编程:uWSGI+nginx配置flask实例
157 0