• Django部署时为什么要用 uWSGI与 Nginx? 以及 WSGI,uwsgi等协议



    Django框架的服务器架构一般是 Nginx + uWSGI + Django


    (1)一些基本概念


    1 WSGI协议,uwsgi协议

    	WSGI协议(通讯协议):Python用于Web开发的协议(用于处理Web服务器和应用程序(APP)的交互信息)
    
    	(把http通讯的过程抽象出来(请求数据,响应数据的封装),开发者只负责处理中途的数据) 
    
    
    	uwsgi协议(传输协议,速度很快):uWSGI程序实现的一个自有的协议(采用二进制来存储数据,之前的协议都是使用字符串,所以在存储空间和解析速度上,都更快)
    
    注意:
    
    	WSGI是一种通信协议。
    	
    	uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。
    

    Web框架一般都自带wsgi服务器 但是性能不好,只作测试用途。(django--wsgiref)


    2 wsgiref模块(django 框架自带)

    python提供的,用于测试和学习的简单的WSGI服务器模块。

    	这个模块监听8000端口,把Http请求,根据WSGI协议,转换application函数中的environ参数,然后调用application函数。 
    	wsgiref会把application函数提供的响应头设置转换为HTTP协议的响应头,把application的返回(return)作为响应体,根据HTTP协议,生成响应,返回给浏览器。
    

    3 uWSGI服务器

    	uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。
    

    4 为什么要使用Nginx 来做负载均衡

    Nginx
    
    	1 安全(Nginx 作为专业服务器,暴露在公网相对比较安全)
    
    	2 能更好地处理静态资源(一些http request header)
    
    	3 Nginx也可以缓存一些动态内容Nginx可以更好地配合CDN
    
    	4 可以进行多台机器的负载均衡
    

    当然,如果访问量不大,其实也没必要加个Nginx,uWSGI足以胜任。

  • 相关阅读:
    sqlalchemy访问Oracle数据库报错:UnicodeDecodeError: 'big5' codec can't decode byte 0xfb in position 2: illegal multibyte sequence
    Mac如何安装FastDfs
    Django执行Sql语句笔记
    跑DRF框架分页源码笔记
    Python Paginator分页学习
    Python Excel笔记
    npm run dev报错解决方法
    npm install --global vue-cli 报错 [..................] / rollbackFailedOptional: verb npm-session abfa82f3041ebc02
    MS17_010漏洞攻击Windows7
    虚拟机启动黑屏
  • 原文地址:https://www.cnblogs.com/big-handsome-guy/p/8664618.html
Copyright © 2020-2023  润新知