Django笔记四十三之使用uWSGI部署Django系统

这篇具有很好参考价值的文章主要介绍了Django笔记四十三之使用uWSGI部署Django系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文首发于公众号:Hunter后端

原文链接:Django笔记四十三之使用uWSGI部署Django系统

目前部署 Django 的方式一般来说是使用 Nginx + uWSGI + Django 来实现。

处理流程是,当一个请求发送过来会先经过 Nginx,如果是静态文件请求,Nginx 这一层直接处理,如果是后端动态接口,则会发送至 uWSGI,而 uWSGI 是一个 web 服务器,它实现的操作是将 HTTP 请求转换成 Python 支持的网络协议,比如 WSGI 协议。

以下是本篇笔记目录:

  1. Nginx 和 uWSGI
  2. WSGI、uWSGI 和 uwsgi
  3. uWSGI 示例及启动
  4. 配置项详解

1、Nginx 和 uWSGI

使用 Nginx 相当于实现了一次反向代理,也可以通过使用 Nginx 实现负载均衡,将请求分配给不同的后端服务,同时静态文件和动态接口分开请求,提高服务响应性能。

如果部署操作直接使用 uWSGI + Django,那么 uWSGI 就相当于一个 web 服务器,用于直接处理 HTTP 请求。如果是配合 Nginx 使用,相当于是一个中间件的作用,起到转发来自 Nginx 请求的作用。

2、WSGI、uWSGI 和 uwsgi

接下来理解一下 uWSGI,WSGI 和 uwsgi 这几个概念。

WSGI

web server gateway interface,web 服务器网关接口,是一种协议规范,是用于 wsgi 服务器(比如 uWSGI) 和 wsgi 应用(比如 Django)之间进行通信的规范。

uWSGI

web 服务器,或者叫 wsgi 服务器,实现 http 协议,用于接收 http 请求并能够解析信息。要将信息发给 Django,必须要用到 WSGI 协议,所以同时也可以实现 WSGI 协议。

uwsgi

是 uWSGI 服务器自有的线路协议,用于与 Nginx 等代理服务器通信。

3、uWSGI 示例及启动

我们可以通过 uWSGI 命令,将参数都写入命令行直接运行,也可以将配置项写入配置文件,用 uWSGI 直接获取配置信息,这里我们介绍都写入配置文件的方法来操作。

1、uWSGI 安装

首先我们需要安装一下 uWSGI:

pip3 install uwsgi -i https://mirrors.aliyun.com/pypi/simple/

2、配置示例及启动

假设我们的 Django 系统目录为 /path/to/hunter/,我们在该目录下创建一个文件 uwsgi.ini

uwsgi.ini 内容如下:

# uwsgi.ini

[uwsgi]
http = :9898
chdir = /path/to/hunter/
wsgi-file = hunter/wsgi.py
master=true
processes = 4
threads = 2

以上是一个简单的可运行 uwsgi.ini 配置示例。

接着我们运行一下:

uwsgi uwsgi.ini

可以看到在 shell 的前台输出下面的信息:

*** Starting uWSGI 2.0.21 (64bit) on [Mon Mar 20 00:14:08 2023] ***
...
...
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 16291)
spawned uWSGI worker 1 (pid: 16295, cores: 2)
spawned uWSGI worker 2 (pid: 16296, cores: 2)
spawned uWSGI worker 3 (pid: 16299, cores: 2)
spawned uWSGI worker 4 (pid: 16301, cores: 2)

表示 uWSGI 已经正常启动,接着我们在浏览器访问该地址的 9898 端口的 admin 页面,可以看到没有样式的 admin 登录页面,如下:

4、配置项详解

在这里我们是直接使用 uWSGI + Django 的方式启动,所以首行是 http=:9898,表示可以通过浏览器的方式访问。

如果回头我们使用 Nginx + uWSGI + Django 的方式启动,这里就要改成 socket=:9898

chdir

chdir 参数指向的是我们项目根目录

wsgi-file

这里我们填写的是相对地址,文件是 Django 系统在创建项目时自动创建的。

master

表示的是启动的 uWSGI 主进程是否开启

processes

表示启动的是进程数,所以在启动后输出的信息里,会有主进程和四个进程的信息

threads

表示的线程数,在上面的进程数后面 cores: 2,输出的就是线程信息。

除了上面这些参数,我们还可以定义一些其他的参数

daemonize

daemonize 的值为一个地址,用于记录 uWSGI 运行的日志,同时将服务在后台运行。

daemonize = /var/log/uwsgi/xxx.log

static-map

static-map 参数作用是映射 Django 的静态文件路径,前面我们运行之后,访问后台 admin 界面,发现没有前端样式对不对,如果想要有样式显示,则需要先定义这个参数,然后将 Django 的 admin 样式文件迁移到指定文件,操作步骤如下:

1.定义 STATIC_ROOT

首先,我们需要在 settings.py 里定义 STATIC_ROOT,这个参数是一个路径,表示我们在下一步需要将静态文件集中到的文件路径,假设我们需要把文件都集中到 /var/static/ 目录下:

# settings.py

STATIC_ROOT = "/var/static/"
2.collectstatic命令

接下来执行静态文件集中的命令:

python3 manage.py collectstatic --no-input

本来前面的命令就可以了,但是执行的时候会有选择项需要我们选择,在后续部署的时候,我们可以加上 --no-input 表示不需要提示输入信息。

3.定义static-map

接下来我们定义 static-map 就可以映射静态文件的地址,这样,我们使用 uWSGI 部署 Django 后也可以访问 admin 的静态文件里。

static-map = /static/=/var/static/

stats

stats 参数后面接的内容是端口,用于获取 uWSGI 几个 worker 的状态信息。

如果想要到浏览器访问的话还需要加一个 stats-http=true,如下:

stats = 127.0.0.1:9897
stats-http = true

timeout

关于 timeout 有两个参数,一个是 http-timeout,一个是 socket-timeout。

前面介绍了开放端口的时候,如果是 uWSGI 单独使用,就使用 http,那么 timeout 就使用 http-timeout

如果是配合 Nginx 使用,那么就使用 socket-timeout。

它的单位是秒.

http-socket=60  # 60秒超时时间

注意:上面的计算运行超时之后,会断开与前端的连接,但是后端还是会继续执行逻辑

harakiri

这个也是超时时间,但是与 timeout 不同的是,这个参数在超时之后断开连接之后,同时后端也停止执行运算,具体的操作是重启该请求所在的进程。

它的单位也是秒。

max-requests

重启进程的最大请求数,比如我们设置:

max-requests=5000

那么在某个 worker 进程处理 5000 个请求之后则会重启。

以上就是使用 uWSGI 启动 Django 系统的示例及介绍,在之后的笔记中会再介绍如何使用 Nginx 进行操作,包括使用 Nginx 进行反向代理和负载均衡的配置。

如果想获取更多相关文章,可扫码关注阅读:
Django笔记四十三之使用uWSGI部署Django系统文章来源地址https://www.toymoban.com/news/detail-747574.html

到了这里,关于Django笔记四十三之使用uWSGI部署Django系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Django使用uwsgi+nginx部署,admin没有样式解决办法

    若在服务器上部署的项目admin没有样式,则检查下一下配置: settings uwsgi.ini urls nginx.conf } 如果使用了虚拟环境则修改nginx.conf文件中的/static/路径为你虚拟环境的路径,没有使用虚拟环境则改为你python安装路径下的static 修改完后,cd/usr/sbin,使用./nginx -s reload,重启nginx,重启项目

    2024年02月14日
    浏览(42)
  • Python对接微信小程序V3接口进行支付,并使用uwsgi+nginx+django进行https部署

    网上找了很多教程,但是很乱很杂,并且教程资源很少且说的详细。这里就记录一下分享给大家 共分为以下几个步骤: 目录 一、开始前准备信息 二、使用前端code获取用户的openid 三、对接小程序v3接口下单 四、小程序支付的回调 五、安装并启动uwsgi 六、安装并启动nginx 七、

    2024年02月12日
    浏览(45)
  • Django笔记四十一之Django中使用es

    前面在 Python 连接 es 的操作中,有过介绍如何使用 Python 代码连接 es 以及对 es 数据进行增删改查。 这一篇笔记介绍一下如何为 es 的 索引 index 定义一个 model,像 Django 里的 model 一样使用 es。 因为本篇笔记要介绍的内容是直接嵌入在 Django 系统使用,所以本篇笔记直接归属于

    2024年02月07日
    浏览(42)
  • 【Django】在Linux上部署Django(nginx+uwsgi)

    1.说明 关于在Linux上使用uwsgi部署Django的项目的过程并不难,主要是配置文件的写法,尤其是nginx的配置文件,本文在Ubuntu20.04上通过uwsgi和nginx部署Django项目 2.安装环境 安装环境主要有Nginx、Python、MySQL、Redis,可以根据你的实际情况进行安装 2.1 安装nginx 大多数发行版Linux都支

    2024年02月12日
    浏览(46)
  • 【学习心得】如何用uwsgi快速部署Django

    问题描述: 有时候,只想快速的部署一个Django项目实现项目迭代开发。本文介绍不使用Nginx只用uwsgi如何实现Django项目的快速部署。 如果还不会创建Ubuntu中的Python虚拟环境,可以参考我之前的文章: 【学习心得】Linux下的Python虚拟环境搭建_linux python虚拟环境搭建 优点:最简

    2024年02月12日
    浏览(45)
  • linux centos7 django uwsgi 部署

    安装这里就不多说,直接配置问题及所遇到问题总结 django 项目 manage.py目录新建uwsgi.ini文件 uwsgi配置 [uwsgi] socket = 127.0.0.1:9000 # uwsgi直接访问用http,nginx访问用socket http= 127.0.0.1:9000 chdir = /usr/local/www/项目目录 wsgi-file = /usr/local/www/项目目录/项目目录/wsgi.py module = 项目目录.wsgi

    2024年01月21日
    浏览(47)
  • Django笔记四十二之model使用validator验证器

    本文首发于公众号:Hunter后端 原文链接:Django笔记四十二之model使用validator验证器 这一篇笔记介绍一下 model 里的 validator 验证器。 首先,这是个什么东西呢? 在 model 的第四篇笔记里,我们介绍了字段的一些属性,比如是否允许为空,varchar 类型的字段的最大长度等。 一般在

    2024年02月05日
    浏览(55)
  • 2-Docker-应用-多容器部署Django+Vue项目(nginx+uwsgi+mysql)

    基于Linux CentOS 7系统(虚拟机),使用Docker,多容器部署Django+Vue项目 整体部署用到了:Django+Vue+nginx+mysql+uwsgi 先每一个容器单独部署,最后用Docker compose 语法整合,统一部署 参考文章:https://blog.csdn.net/qq_45445505/article/details/135563784 章标题:Docker介绍 节标题:Docker安装 总结梳

    2024年03月10日
    浏览(102)
  • linux+python3.6.8+uwsgi+postgresql+django部署web服务器

    我这是使用华为云服务器

    2024年02月06日
    浏览(47)
  • 【正点原子STM32连载】 第四十三章 SPI实验 摘自【正点原子】APM32F407最小系统板使用指南

    1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套实验源码+手册+视频下载地址: http://www.openedv.com/thread-340252-1-1.html## 本章将介绍使用APM32F407驱动板载的NOR Flash进行读写操作。通过本章的学习,读者将学习到使用SPI驱

    2024年02月08日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包