1.一些重要概念

https://www.cnblogs.com/xiaonq/p/8932266.html

1.1web容器

  • 什么是web容器

    1.web容器是帮助我们部署java丶php丶python丶vue等项目的
  • 作用(处理请求,返回数据)

    1.第一,帮助django服务端处理客户端连接,官方号称可以处理10万(实现高并发)

    2.第二,帮助处理静态资源请求(html、css、JS),返回给客户端浏览器(django等web服务器处理静态资源能力差)

    *常见web容器

    1.nginx(python、php)

LNMP

  *L : linux
*N : nginx
*M : mysql
*P : php `apache(php)`

LAMP

  *L : linux
*A : apache
*M : mysql
*P : php `3.Tomcat(JAVE)`

1.2 什么是WSGI(web协议)

*1.WSGI是一种 python专用 的web协议 和http类似

*2.WSGI实质:WSGI是一种描述web服务器(如 nginx,uWSGI web服务器 )如何与 web框架 (如用Django、Flask框架写的程序)通信的规范、协议

*3.WSGI定义了使用 python编写的web app(django)与web server(uWSGI)之间接口格式

为什么需要web协议

  *1)不同的框架有不同的开发方式,但是无论如何,开发出的 应用程序(django)都要和服务器 (nginx)程序配合 ,才能为用户提供服务。
*2) 这样, 服务器程序(nginx) 就需要为不同的框架提供不同的支持,只有支持它的服务器才能被开发出的应用使用,显然这是不可行的。
*3)web协议本质:就是定义了 Web服务器和Web应用程序或框架之间的一种简单而通用的接口规范 。

1.3 uWSGI (web服务器 和nginx类似)

  *什么是uWSGI: uWSGI是一个全功能的HTTP服务器,实现了 WSGI协议 、 uwsgi协议 、 http协议等
*uWSGI作用:它要做的就是把HTTP协议转化成语言支持的网络协议,比如把 HTTP协议转化成WSGI 协议,让Python可以直接使用 。
*uWSGI特点:轻量级,易部署,性能比nginx差很多,支持多种协议

1.4 Nginx

  *Nginx是一个Web服务器,其中的HTTP服务器功能和 uWSGI功能很类似
*但是Nginx还可以用作更多用途,比如最常用的 反向代理、负载均衡、拦截攻击 等,而且 性能极高
*单台nginx号称可以处理10万并发

1.5 Django

  *Django是一个Web框架,框架的作用在于处理request和 reponse,其他的不是框架所关心的内容。
*所以如何部署Django不是Django所需要关心的。

2.nginx+uwsgi+django部署各模块作用

2.1 Django + Uwsgi + Nginx方案

1.请求处理整体流程

  *nginx接收到浏览器发送过来的http请求,将包进行解析,分析url
1.静态文件请求: 就直接访问用户给nginx配置的静态文件目录 (html/css/js/图片) ,直接返回用户请求的静态文件
2.动态接口请求: 那么nginx就将请求转发给uWSGI,最后到达django处理

2.各模块作用

  *nginx :是对外的服务器,外部浏览器通过url访问nginx,nginx主要处理静态请求(html/css/js/图片)
*uWSGI :是对内的服务器,主要用来 处理动态请求 。(从mysql、redis、es等中动态查询到的数据)
*uwsgi :是一种web协议,接收到请求之后将包进行处理,处理成wsgi可以接受的格式,并发给wsgi
*wsgi :是python专用的web协议,根据请求调用应用程序(django)的某个文件,某个文件的某个函数
*django :是真正干活的,查询数据等资源,把处理的结果再次返回给WSGI, WSGI 将返回值进行打包,打包成uwsgi能够接收的格式
*uwsgi :接收wsgi发送的请求,并转发给nginx,nginx最终将返回值返回给浏览器

2.2Django + uWSGI方案特点

*没有nginx而只有uwsgi的服务器,则是Internet请求直接由uwsgi处理,并反馈到web项目中。

*nginx可以实现安全过滤,防DDOS等保护安全的操作,并且如果配置了多台服务器,nginx可以保证服务器的负载相对均衡。

*而uwsgi则是一个web服务器,实现了WSGI协议(Web Server Gateway Interface),http协议等,它可以接收和处理请求,发出响应等。

所以只用uwsgi也是可以的。

2.3nginx和uWSGI特点

  1.nginx的作用
反向代理,可以拦截一些web攻击,保护后端的web服务器
负载均衡,根据轮询算法,分配请求到多节点web服务器
缓存静态资源,加快访问速度,释放web服务器的内存占用,专项专用

  2.uWSGI的适用
单节点服务器的简易部署
轻量级,好部署

nginx,wsgi项目部署的更多相关文章

  1. 阿里云安装Nginx+vue项目部署

    阿里云安装Nginx+vue项目部署 nginx安装包下载 http://nginx.org/en/download.html nginx安装 首先先安装PCRE pcre-devel 和Zlib,因 ...

  2. django+nginx+uwsgi 项目部署

    Django虽然自带一个Server,但只能作为开发时测试使用,我们需要一个可以稳定而持续的服务器对网站进行部署,比如Apache, Nginx, lighttpd等,本篇将利用nginx和uWSGI ...

  3. Django之nginx+wsgi后台部署(最新版)

    0-部署准备 1.要使用安全组打开腾讯云的80端口 腾讯云的80端口不能访问​www.jianshu.com 以实际项目部署为例 项目名称api_learn: Python版本:python 3.6. ...

  4. nginx+gunicorn项目部署

    1.1安装虚拟环境 创建文件夹 mkdir data 目录文件夹 cd data 进入data文件夹 mkdir nginx 创建安装nginx的文件夹 mkdir server 存放代码的文件夹 m ...

  5. Gunicorn+Nginx+Flask项目部署

    安装python3.6 1)前往用户根目录 >: cd ~ 2)下载 或 上传 Python3.6.7 >: wget https://www.python.org/ftp/python/ ...

  6. 基于腾讯云CentOS7.4+MySQL5.7+Python3+uwsgi+nginx的Django项目部署

    准备知识 1.django一个基于python的开源web框架,请确保自己熟悉它的框架目录结构. 2.uWSGI一个基于自有的uwsgi协议.wsgi协议和http服务协议的web网关 3.nginx ...

  7. CentOS 下用 Nginx 和 uwsgi 部署 flask 项目

    前几天利用flask 写了几个调用salt-api 的接口,需要上线到正式环境,搜了一下 都是 用 nginx + uwsgi 来部署,这里记录下关键的配置项. 1.首先将代码上传到服务器上目录为: ...

  8. nginx+uwsgi+djangos部署项目完整

    1.基本信息 Linux 版本:SentOS7.4 Python 版本:3.7.1 2.下载 uWSGI pip3 install uwsgi uwsgi 主要的任务是座位分发路由的服务器. 先写一个 ...

  9. 使用gunicorn将django项目部署到生产环境的子目录下,在nginx后端获取客户真实IP地址

    生产环境有时,并不是为了一个项目而存在的.毕竟,域名是比较稀有的. 今天遇到这个问题,解决了.作个记录. 并且,如果将django项目部署在Nginx后面,那如何获取用户真实的IP地址呢? 下面就来解 ...

随机推荐

  1. python框架Django简介与安装

    Django简介 关注公众号"轻松学编程"了解更多. 发布于2005年,最负盛名且成熟的Python网络框架 最初用来制作在线新闻的Web站点 开源Web框架,遵守BSD协议 BS ...

  2. ubuntu下安装RabbitMQ

    ubuntu下安装RabbitMQ 安装erlang 由于rabbitMq需要erlang语言的支持,在安装rabbitMq之前需要安装erlang sudo apt-get install erla ...

  3. SpringBoot的外部化配置最全解析!

    目录 SpringBoot中的配置解析[Externalized Configuration] 本篇要点 一.SpringBoot官方文档对于外部化配置的介绍及作用顺序 二.各种外部化配置举例 1.随 ...

  4. 17 c10k问题

    所谓c10k问题,指的是服务器同时支持成千上万个客户端的问题,也就是concurrent 10 000 connection(这也是c10k这个名字的由来). 推荐: https://my.oschi ...

  5. layui的laypage实现分页/查询

    最开始我的数据绑定使用的razor语法来绑定的 就像下面这样 @if (ViewBag.listBlog != null) { foreach (var item in ViewBag.listBlo ...

  6. 归档空间满了 导致Imp卡住

    今天在使用exp imp将生产环境数据库导入到测试环境的过程中,imp的时候 发现在导入某张表的时候卡住了. 起初是以为该表比较大的缘故,后来过了很久 发现还是卡在那里. 最后分析原因 发现设置的归档 ...

  7. 这些C++基础知识的基础知识你都学会了吗?

    一.C++基础知识 新的数据类型 C语言中的数据类型  C++中新的数据类型 思考:新的数据类型有什么好处?请看下面的代码:  可以见得:新的类型使整个程序更加简洁,程序变得易读易懂!这个就是bool ...

  8. 在windows下安装node-sass失败,提示\node-sass: Command failed,解决方案

    执行命令 yarn add node-sass@4.7.2 --dev --registry=https://registry.npm.taobao.org :报错 出现这个问题的原因一般是网络问题, ...

  9. Linux上传递文件到另外一个Linux服务器

    现在的项目由于安全的需要,测试服务器被设置不能直接连接,想要连接的话,只能先登录一个服务器,然后以这个服务器为跳板,去登录另外一台真正的 服务器,即使是测试环境也只能这样操作.只能是相对来说安全一些. ...

  10. Python的ConfigParser模块读取ini配置文件 报错(持续更新总结)

    1.ConfigParser.MissingSection什么的错误巴拉巴拉一堆,其实根本上就是没有读到配置文件,然后我去检查了一遍路径,发现没有问题,我是将文件的路径作为一个字符串拼接好传到另一个专 ...