Django——uWSGI

1 概念介绍

 1.1 WSGI

Python Web 服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是Python应用程序或框架和Web服务器之间的一种接口,已经被广泛接受, 它已基本达成它的可移植性方面的目标。

python manage.py runserver 通常只在开发和测试环境中使用,当开发结束后,完善的项目代码需要再一个高效稳定的环境中运行,这时可以使用WSGI。

 1.2 uWSGI

uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。WSGI是一种Web服务器网关接口。它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架写的程序)通信的一种规范。

要注意 WSGI / uwsgi / uWSGI 这三个概念的区分:

  • WSGI是一种通信协议。

  • uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。

  • 而uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。

2 uWSGI配置

  1. 项目同名文件夹下创建 uwsgi.ini 

     
  2. 添加以下配置  
    [uwsgi]
    #http通信方式的IP地址:端口号
    http = 127.0.0.1:8000
    
    #套接字方式的IP地址:端口号(此模式需要哟有nginx)
    #socket= 127.0.0.1:8000
    
    # 项目当前工作目录
    chdir = /Users/zhangsen/PythonProjects/day08/mysite7
    
    # 项目中wsgi.py文件的目录,相对于当前工作目录
    wsgi-file = mysite7/wsgi.py
    
    # 进程个数
    process = 4
    
    #每个进程的线程个数
    threads = 2
    
    pidfile = uwsgi.pid
    daemonize = uwsgi.log
    master = true
  3. 将 settings.py文件中的 DEBUG=True 改为 DEBUG=False
  4. 将 settings.py文件中的 ALLOWED_HOSTS = [] 改为 ALLOWED_HOSTS = ['网站域名'] 或者 ALLOWED_HOSTS = ['服务监听的IP地址']

3 uWSGI使用

3.1 启动

  1. 切换到 uwsgi.ini 文件所在的路径
  2. 执行 uwsgi --ini uwsgi.ini 
  3. 测试,浏览器打开相应的URL进行测试

3.2 停止 

  1. 切换到 uwsgi.ini 文件所在的路径
  2. 执行 uwsgi --stop uwsgi.pid 

4 参考

https://baike.baidu.com/item/wsgi

https://baike.baidu.com/item/uwsgi/673705?fr=aladdin

### Nginx、uWSGIDjango 的架构图 在典型的 Web 应用程序部署环境中,Nginx 作为反向代理服务器接收客户端请求并将其转发给 uWSGI,而 uWSGI 则负责与 Django 进行交互处理业务逻辑。这种三层架构能够有效地分离关注点,并提高系统的可扩展性和性能。 #### 架构概述 - **Web 客户端 (Browser)** 发起 HTTP 请求至 Nginx 所监听的 IP 地址和端口。 - **Nginx** 接收到请求后依据配置文件中的指令决定如何响应这些请求;对于静态资源可以直接由 Nginx 返回,而对于动态内容则会通过 Unix Socket 或 TCP/IP 协议传递给 uWSGI 处理器。 - **uWSGI** 收到请求之后加载相应的 Python WSGI 应用——即 Django 实例来执行具体的视图函数等操作,最后再将生成的结果返回给 Nginx[^1]。 #### 示例架构图说明 以下是简化版的文字描述: ``` +-------------------+ | Web Client | +--------+----------+ | v +--------v----------+ | Nginx | <-- 静态文件服务 + 反向代理 +--------+----------+ | v +--------v----------+ | uWSGI | <-- 负责运行 Django 应用 +--------+----------+ | v +--------v----------+ | Django App | <-- 提供核心应用功能 +-------------------+ ``` 为了更直观理解整个流程,在实际应用场景下可以参考如下图形化表示方式(假设为基于 Linux 系统环境下的部署): ```plaintext [Client Browser] --HTTP Request--> [Nginx Server] [Nginx Server] --Pass to--> [uWSGI Process Manager] [uWSGI Process Manager] --Invoke Application Code In--> [Django Framework] [Django Framework] --Generate Response Data For--> [uWSGI Process Manager] <uWSGI Process Manager> --Return To--> [Nginx Server] <Nginx Server> --Send Back HTML/CSS/JS Etc.---> [Client Browser] ``` 此架构允许开发者专注于编写应用程序代码的同时利用成熟的中间件组件实现高效的网络通信和服务管理。 ```bash # 测试连接是否正常工作 curl http://localhost:8000/ ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值