python部署项目为什么要用Nginx和uWSGI
一、测试运行python项目
1.1 Flask项目

说明1:当我们直接用编译器运行Flask项目的时候,会有一个提示:意思就是:这是开发环境的服务器,不能用于生产环境的部署,请使用WSGI的服务器替换
1.2 Django项目

说明2:当我们直接用编译器运行Django项目的时候,同样有个提示,这是一个开发环境的服务器,意思就是同样不能用于生产环境
1.3 总结
- Flask自带一个服务器,主要用在开发环境。默认情况下一次只能处理一个请求,处理能力比较有限。
- Django 运行 runserver 命令可以直接作为服务器使用,但是也是单线程的。性能差,如果出现错误挂掉。那么整个进程都挂掉了
- 所以我们在生产环境要,就要使用安全稳定效率高,性能强的服务器。
- 之所以Flask和Django直接运行不能用于生产环境是因为Flask和Django是web开发框架,而不是web服务器,web框架开发的时候,只是为了方便测试,提供了一个测试服务器而已。
二、web服务器
Django或flask就是web框架。web服务器的特点:
- 接受客户端(浏览器,app,小程序等)发送的请求
- web服务器通常都会支持高并发(Nginx上万级别的并发)
所以我们在部署python项目的时候,都需要再额外部署一个web服务器,主要作用就是给我们的应用提供一个高并发安全的互联网访问环境,通常我们使用Nginx作为我们项目的web服务器。
三、Nginx服务器
nginx是一款轻量级的web 服务器,反向代理服务器及电子邮件(imap/pop3)代理服务器。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,大部分网站都有使用nginx。
nginx的有点:
- 支持高并发,能够支持高达 50,000 个并发连接数的响应,这样我们的网站并发性就很棒。
- 负载均衡,当访问量还是多的时候,可以同时开启多个应用服务器,进行负责均衡
- 提供静态服务,动静分离,减少静态资源访问对应用服务器的压力
- 反向代理
nginx在部署的时候可以给我的应用服务器,提供一个高并发,高可靠性,安全的网络访问环境,通过Nginx可以接收到用户通过浏览器或者app等前端的方式访问到我们的网站。
注意:这里Nginx只能帮助我们接收客户端(浏览器,app,小程序等)的请求,Nginx并不具备处理请求的能力。例如:用户发送了一个获取用户信息的请求,Nginx并没有用户的信息,所以Nginx并不能直接处理用户的请求,所以Nginx需要将用户的这个请求转发给我们的应用服务器(Flask或者Django程序等),但是,这里注意!注意!注意!,Nginx和我们Web框架(Flask/Django)也不能直接通信,他们的协议不一样(通俗的讲就是一个说英语的,一个说汉语的,谁也听不懂谁),这是就需要找一个翻译,既能读懂Nginx的协议,也能读懂python的web框架协议的,而且还要高效,这个东西就是WSGI。
四、WSGI和uWSGI
WSGI是一种通信协议。WSGI 不是框架,也不是一个模块,而是介于 Web应用程序(Flask/Django)与 Web Server (Nginx)之间交互的一种规范。
uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。
所以我们使用uWSGI充当Nginx和我们的程序(Flask/Django)之间的桥梁,这也就是为什么我们部署python项目需要uWSGI和Nginx的原因了
五、通过Nginx和uWSGi请求响应全过程

python部署项目为什么要用Nginx和uWSGI的更多相关文章
- python部署到服务器(2) 一一 nginx+uwsgi+Django
参考菜鸟教程,https://blog.csdn.net/qq_42314550/article/details/81805328, 和 https://www.cnblogs.com/chenice ...
- Python 部署项目(Tomcat 容器)
此前书写了多实例的 Tomcat 启动等操作的脚本,今天完善 Tomcat 多实例部署(本脚本只提供思路) 脚本内容: #!/usr/bin/env python # _*_coding:utf-8_ ...
- 项目的发布(nginx、uwsgi、django、virtualenv、supervisor)
导论 WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器如何与Web应用程序通信,以及Web应用程序如何链接在一起以处理一个请求,(接收请求,处理请求,响应请求) 基于wsgi运行的框架 ...
- 使用Nginx+Uwsgi部署Python Flask项目
第一次用Flask做Web(也是第一次用Python做Web),在部署的时候遇到了不少问题,现在将过程就下来,供在这方面也有疑惑的人参考.(PS:使用Apache+mod_wsgi部署模式的可以参考另 ...
- nginx+uwsgi+djangos部署项目完整
1.基本信息 Linux 版本:SentOS7.4 Python 版本:3.7.1 2.下载 uWSGI pip3 install uwsgi uwsgi 主要的任务是座位分发路由的服务器. 先写一个 ...
- Python web项目Django部署在Ubuntu18.04腾讯云主机上
Django2.1 + Python3.6 + nginx + uwsgi 部署到Ubuntu18.04 材料准备 准备一个Django项目 准备一台Ubuntu18.04的主机 ssh连接到主机(腾 ...
- nginx+uwsgi+virtualenv+supervisor部署项目
一.导论 WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器如何与Web应用程序通信,以及Web应用程序如何链接在一起以处理一个请求,(接收请求,处理请求,响应请求) 基于wsgi运行的 ...
- uWSGI+nginx+django+virtualenv+supervisor部署项目
一.前言 在部署项目前,你已有一个能够在你本机测试过,能正常启动的Django项目(毕竟本文主要讲解部署Django项目),以及掌握了Linux系统的一些基本命令. 相关链接: Centos7安装py ...
- python - django 项目部署 Ubuntu 服务器后接口访问一直 502 问题
问题描述:最近有了一台 Ubuntu 的服务器,然后准备部署个项目,结果没想到部署的过程跟用 Centos 的时候还有点不一样,最后一步我是卡在了 uwsgi 这里,访问一直502,且可以访问项目的静 ...
- 基于Nginx和uWSGI在Ubuntu上部署Django项目
前言: 对于做Django web项目的童鞋,重要性不言而喻. 参考:https://www.cnblogs.com/alwaysInMe/p/9096565.html https://blog.cs ...
随机推荐
- Linux用户以及ssh安全相关设置
Linux用户相关操作 摘要 最近重保, 需要进行网络安全防护. 部分同事处理过程总是顺序有一些不太对的情况. 同时发现自对Linux用户设置也存在很多不清不楚的地方 所以趁着周末学习和总结一下. 用 ...
- 隐私计算之多方安全计算(MPC,Secure Multi-Party Computation)
作者:京东科技隐私计算产品部 杨博 1.背景 如今,组织在收集.存储敏感的个人信息以及在外部环境(例如云)中处理.共享个人信息时, 越来越关注数据安全.这是遵守隐私法规的强需求:例如美国加利福尼亚 ...
- TypeScript类的修饰符 public private protected的详细讲解
简单介绍一下public private protected public:当一个类的成员变量没有修饰的时候,默认的就是 public 进行修饰.外部是可以进行访问的. private属性只能够在父类 ...
- 【一】tensorflow【cpu/gpu、cuda、cudnn】全网最详细安装、常用python镜像源、tensorflow 深度学习强化学习教学
相关文章: [一]tensorflow安装.常用python镜像源.tensorflow 深度学习强化学习教学 [二]tensorflow调试报错.tensorflow 深度学习强化学习教学 [三]t ...
- tomcat搭建本地文件服务器(windows版本)
1.下载tomcat 2.配置环境变量 在"我的电脑"(右键)->"属性"->"高级属性设置"->"环境变量&q ...
- 进程锁(互斥锁)(Python)
3:# 抢票示例 import json import time from multiprocessing import Process,Lock def search(i): with open(' ...
- LoopAndLoop【安卓逆向】
LoopAndLoop(阿里CTF) 首先是通用步骤 解压附件后发现是APK文件,打开jeb进行反编译,反编译结果如下: 可以看到程序自定了几个check函数,并且调用了自定义库"lhm&q ...
- 深空物联网通信中视频流的智能多路TCP拥塞控制|文献阅读|文献分析和学习|拥塞控制|MPTCP|SVC
前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总https://blog.cs ...
- delphi IDE 代码 恢复
- .NET Core开发实战(第16课:选项数据热更新:让服务感知配置的变化)--学习笔记
16 | 选项数据热更新:让服务感知配置的变化 选项框架还有两个关键类型: 1.IOptionsMonitor 2.IOptionsSnapshot 场景: 1.范围作用域类型使用 IOptinsSn ...