uWSGI的 介绍 参考地址
Nginx
- Nginx是一个Web服务器,其中的HTTP服务器功能和uWSGI功能很类似
- 但是Nginx还可以用作更多用途,比如最常用的反向代理、负载均衡、拦截攻击等,而且性能极高
Django
- Django是一个Web框架,框架的作用在于处理request和 reponse,其他的不是框架所关心的内容。
- 所以如何部署Django不是Django所需要关心的。
这里举个小例子:
我们的浏览器是 出生在海外的华侨,通过HTTP(飞机) 从 Nginx(日本) 回到 (Python 中国)
下飞机 到了之后发现语言不通,急忙的找到了我。
他说日语(uwsgi)“こんにちは“
我会日语啊 我把这句话 转换成了 汉语(uWSGI)给 别人听
这样就可以 在 中国(Python) 让日本人(浏览器) 生活了。
但是 博主是东北人 光会转义 日语->普通话 还不行 还要和我的家人们说东北话(WSGI)
此时 就已经非常完美的解决了语言不通的问题了。
12345678
- 请求处理整体流程
- nginx接收到浏览器发送过来的http请求,将包进行解析,分析url
- 静态文件请求:就直接访问用户给nginx配置的静态文件目录,直接返回用户请求的静态文件
- 动态接口请求:那么nginx就将请求转发给uWSGI,最后到达django处理
- 各模块作用
-
nginx:是对外的服务器,外部浏览器通过url访问nginx,nginx主要处理静态请求
-
uWSGI:是对内的服务器,主要用来处理动态请求
-
uwsgi:是一种web协议,接收到请求之后将包进行处理,处理成wsgi可以接受的格式,并发给wsgi
-
wsgi:是python专用的web协议,根据请求调用应用程序(django)的某个文件,某个文件的某个函数
-
django:是真正干活的,查询数据等资源,把处理的结果再次返回给WSGI, WSGI 将返回值进行打包,打包成uwsgi能够接收的格式
-
uwsgi接收wsgi发送的请求,并转发给nginx,nginx最终将返回值返回给浏览器
Django + uwsgi方案
- 没有nginx而只有uwsgi的服务器,则是Internet请求直接由uwsgi处理,并反馈到web项目中。
- nginx可以实现安全过滤,防DDOS等保护安全的操作,并且如果配置了多台服务器,nginx可以保证服务器的负载相对均衡。
- 而uwsgi则是一个web服务器,实现了WSGI协议(Web Server Gateway Interface),http协议等,它可以接收和处理请求,发出响应等。
所以只用uwsgi也是可以的。
nginx和uWSGI特点
- nginx的作用
- 反向代理,可以拦截一些web攻击,保护后端的web服务器
- 负载均衡,根据轮询算法,分配请求到多节点web服务器
- 缓存静态资源,加快访问速度,释放web服务器的内存占用,专项专用
- uWSGI的适用
-
单节点服务器的简易部署
-
轻量级,好部署
Django + Uwsgi + Nginx 的生产环境部署
在centos 7中安装python3环境
# 1、yum更新yum源
yum update
# 2、安装Python 3.7所需的依赖否则安装后没有pip3包
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel gcc make
# 3、在官网下载所需版本,这里用的是3.7.0版本
wget https://www.python.org/ftp/3.7.0/Python-3.7.0.tgz
123456
# 1、yum更新yum源
yum update