使用 uWSGI 部署 Django 应用

本文详细介绍了为何使用uWSGI部署Django应用,包括uWSGI与WSGI、wsgiref的区别,以及Django runserver的局限。讲解了uWSGI的安装和快速教程,探讨是否需要Nginx做负载均衡。接着展示了如何配置和启动uWSGI服务器,使用virtualenv,以及静态文件配置。文中还提及了uWSGI部署过程中的常见问题,如uwsgi解析静态文件不生效的解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用 uWSGI 部署 Django 应用

相关文章:

1. 为什么要用 uWSGI 部署

1. WSGI 协议, uwsgi 协议:

WSGI 协议(通讯协议):Python 用于 Web 开发的协议(用于处理 Web 服务器和应用程序(APP)的交互信息)。把HTTP通讯的过程抽象出来(请求数据,响应数据的分析),开发者只负责处理中途的数据。

uwsgi 协议(传输协议,速度很快):uWSGI 程序实现的一个自有的协议(采用二进制来存储数据,之前的协议都是使用字符串,所以在存储空间和解析速度上,都更快)。

注意:

WSGI 是一种通信协议。

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

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

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. Django 本身提供了 runserver,为什么不能用来部署

runserver 方法是调试 Django 时经常用到的运行方式,它使用 Django 自带的 WSGI Server 运行,主要在测试和开发中使用,并且 runserver 开启的方式也是单进程。

uWSGI 是一个 Web服务器,具有超快的性能,低内存占用和多 app 管理等优点,并且搭配 Nginx 就是一个生产环境了,能够将用户的访问请求与应用 app 隔离,实现真正的部署。相对来说,支持的并发量更高,方便管理多线程,发挥多核优势,提升性能。

5. 是否使用 Nginx 来做负载均衡

Nginx 的特点:

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

当然,如果访问量不大,uWSGI 足以胜任。

Nginx 和 uWSGI 服务器之间如何配合工作?

  1. 首先浏览器发起 http 请求到 nginx 服务器。

  2. Nginx 根据接收到的请求包,进行 url 分析,判断访问的资源类型,如果是静态资源,直接读取静态资源返回给浏览器。

  3. 如果请求的是动态资源就转交给 uwsgi 服务器, uwsgi 服务器根据自身的 uwsgi 和 WSGI 协议,找到对应的 Django 框架。

  4. Django 框架下的应用进行逻辑处理后,将返回值发送到 uwsgi 服务器, 然后 uwsgi 服务器在返回给 nginx。

  5. 最后 nginx 将返回值返回给浏览器渲染显示给用户。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AgpeQVD6-1619496139160)(使用 uWSGI 部署 Django 应用.assets/1220788-20180324120552459-719382644.jpg)]

2. uWSGI 的安装:

1. yum 安装(最快捷的方式)

# yum/apt-get install build-essential python-dev
# Install current stable version.
$ pip install uwsgi

2. 源码安装

# Or install LTS (long term support).
$ pip install https://projects.unbit.it/downloads/uwsgi-lts.tar.gz

参考手册: uWSGI

3. uWSGI 安装不了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值