Django项目中的Nginx+uWSGI

Django项目中的Nginx+uWSGI部署

配合另一篇博客共同饮用Django项目服务器部署(2024最新)

一:Nginx + uWSGI部署框架

整体流程

  • 用户浏览器向nginx发送请求,nginx判断请求是动态海事静态,如果是静态请求,则直接返回静态文件。如果是动态请求,则将请求转发给uwigi服务器,uwigi服务器调用我们的django进行处理请求,并返回结果。
1.1 Nginx
  • Nginx是一个Web服务器,其中的HTTP服务器功能和uWSGI功能很类似。
  • 但是Nginx还可以用作更多用途,比如最常用的反向代理、负载均衡、拦截攻击等,而且性能极高。
1.2 WSGI接口
  • WSGI是Web 服务器(uWSGI)与 Web 应用程序或应用框架(Django)之间的一种低级别的接口。(Python专业的web协议)。
1.3 uWSGI服务器
  • uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。
1.4 uwsgi协议
  • uwsgi是Nginx服务器和uWSGI服务器的通信协议,规定了怎么把请求转发给应用程序和返回。
    在这里插入图片描述
1.5 请求处理整体流程:

在这里插入图片描述
各模块作用:

  • nginx:是对外的服务器,外部浏览器通过url访问nginx,nginx主要处理静态请求。
  • uWSGI:是对内的服务器,主要用来处理动态请求。
  • uwsgi:是一种web协议,接收到请求之后将包进行处理,处理成wsgi可以接受的格式,并发给wsgi。
  • wsgi:是python专用的web协议,根据请求调用应用程序(django)的某个文件,某个文件的某个函数。
  • django:是真正干活的,查询数据等资源,把处理的结果再次返回给WSGI, WSGI 将返回值进行打包,打包成uwsgi能够接收的格式。
  • uwsgi接收wsgi发送的请求,并转发给nginx,nginx最终将返回值返回给浏览器。

二 生产环境部署

2.1uwsgi
  • 安装
pip install uwsgi
  • uwsgi的配置
    将Django项目中的settings.py中的两个配置进行修改:
DEBUG = FALSE
ALLOWED_HOSTS = [*]

在项目下新建一个配置文件uwsgi.ini:

[uwsgi]
# 1: uwsgi直接作为web服务器时,使用的ip和端口
http= 127.0.0.1:8000
# 2:指定项目的目录
chdir =xxx
# 3: 指定项目中的wsgi.py所在的目录:(这个文件是usgi的启动入口)
wsgi-file = xxx/wsgi.py
# 4:指定uwsgi工作的进程数
processes = 4
# 5: 指定工作的每个进程下的线程数
threads = 2
# 6: 主进程的配置
master = True  # 开启主进程
pidfile = uwsgi.pid # 在项目中的wsgi.py所在的目录下,生成一个uwsgi.pid专门记录主进程的id
# 7: 指定uwsgi的日志文件
daemonize = uwsgi.log 
# 8:指定运行的虚拟环境的路径
virtualenv = xxx/django_env
  • 运行命令
    启动
uwsgi --ini  xxxuwsgi.ini

停止

uwsgi --stop uwsgi.pid
2.2 nginx

利用nginx做反向代理和处理静态文件。

  • 下载
yum install nginx -y
  • 修改配置文件
server {location / {# 包含uwsgi的请求参数include uwsgi_params;# 转交给uwsgiuwsgi_pass 127.0.0.1:8000}
}

: 在django的settings配置文件中设置静态文件:

#自己项目下的
STATIC_ROOT = '/xxx/xxxx/static/'
#命令
python manage.py collectstatic

可见另一篇博客Django项目服务器部署(2024最新)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/8585.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(五)JSP教程——response对象

response对象主要用于动态响应客户端请求(request),然后将JSP处理后的结果返回给客户端浏览器。JSP容器根据客户端的请求建立一个默认的response对象,然后使用response对象动态地创建Web页面、改变HTTP标头、返回服务器端地状态码…

c++ socket基于TCP

linux网络编程基础api socket 地址api:ip地址和端口对,成为 soccket 地址。 socket 基础api: sys/socket.h 中,包括创建、命名、监听 socket ;接受连接、发起连接、读写数据、获取地址信息、检测带外标记、读取设置 s…

unity ui 同屏

一共有三个摄像机,上屏,下屏 和 类似照相机的ccamera 类似照相机的ccamera的设置: 下屏摄像机设置: 下屏交互的Canvas设置: 新建一个canvas,下面放上rawimage: 如果下屏不想显示的内容&#xf…

创建和管理数据库

1. 一条数据的存储过程 存储数据是处理数据的第一步.只有正确的把数据存储起来,我们才能进行有效的处理和分析.否则,只能是一团乱麻.在MySQL中,一个完整的数据存储过程一共有四步 : 创建数据库,确认字段,创建数据表&a…

【练习3】

1.将二叉搜索树转为排序的双向链表 (好久没看数据结构,忘完了,学习大佬的代码) class Solution { public:Node* prenullptr,*headnullptr; //pre为每次遍历时的前一个节点,head记录头节点Node* treeToDoublyList(Node* root) {if…

漏扫神器Invicti V2024.4.0专业版

前言 Invicti Professional是Invicti Security公司推出的一个产品,它是一种高级的网络安全扫描工具。Invicti Professional旨在帮助组织发现和修复其网络系统中的潜在安全漏洞和弱点。它提供了全面的漏洞扫描功能,包括Web应用程序和网络基础设施的漏洞扫…

xhs 旋转滑块流程分析

声明 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 前言 本文首发于公众号…

近似消息传递算法(AMP)单测量模型(SMV)

1、算法解决问题 很多人致力于解决SLM模型的求逆问题,即知道观测值和测量矩阵(字典之类的),要求未知变量的值。SLM又叫做标准线性模型,后续又在此基础上进行升级变为广义线性模型。即SLM是yAxe,这里是线性…

STM32单片机实战开发笔记-独立看门狗IWDG

嵌入式单片机开发实战例程合集: 链接:https://pan.baidu.com/s/11av8rV45dtHO0EHf8e_Q0Q?pwd28ab 提取码:28ab IWDG模块测试 1、功能描述 STM32F10X内置两个看门狗,提供了更高的安全性,时间的精确下性和使用的灵活性…

【JAVA基础之时间API】自定义时间格式

🔥作者主页:小林同学的学习笔录 🔥mysql专栏:小林同学的专栏 目录 1.Date类 1.1 概述 1.2 构造方法 1.3 常用方法 2.SimpleDateFormat类 2.1 概述 2.2 构造方法 2.3 格式规则 2.4 常用方法 3.Calendar类 3.1 概述…

SparkSQL优化

SparkSQL优化 优化说明 缓存数据到内存 Spark SQL可以通过调用spark.sqlContext.cacheTable("tableName") 或者dataFrame.cache(),将表用一种柱状格式( an inmemory columnar format)缓存至内存中。然后Spark SQL在执行查询任务…

PotPlayer v1.7.22218 全格式影音播放器,无广绿色版!

软件介绍 PotPlayer是一款多功能且免费的媒体播放软件,兼容多种音频和视频格式。提供了丰富的功能性以及个性化设置,以迎合不同用户的需求。友好的用户界面,允许用户自定义皮肤和快捷键,提升了操作的便利性。 此外,Po…

DenseCLIP环境配置

直接看raoyongming/DenseCLIP: [CVPR 2022] DenseCLIP: Language-Guided Dense Prediction with Context-Aware Prompting (github.com) 但这里的环境配置可能和现在不太适配,自己配了好久没弄好 后面尝试了另外的版本的(但这个版本少了一些内容&#…

力扣打卡第二天

206. 反转链表 class Solution { public:ListNode* reverseList(ListNode* head) {// //迭代法// ListNode *pre nullptr;// ListNode *curr head;// while(curr){// ListNode *next curr -> next;// curr -> next pre;// pre curr;// curr next;/…

【吃透Java手写】1- Spring(上)-启动-扫描-依赖注入-初始化-后置处理器

【吃透Java手写】Spring(上)启动-扫描-依赖注入-初始化-后置处理器 1 准备工作1.1 创建自己的Spring容器类1.2 创建自己的配置类 ComponentScan1.3 ComponentScan1.3.1 Retention1.3.2 Target 1.4 用户类UserService Component1.5 Component1.6 测试类 2…

我独自升级崛起怎么下载 游戏下载教程分享

《我独自升级:崛起》这款游戏核心聚焦于激烈的战斗与角色的持续成长。新加入的玩家首要任务是熟悉基础攻击模式,随后深入探索技能组合策略与连贯招式的艺术,同时掌握防守与躲避技巧,这些都是战斗中不可或缺的关键。随着战斗的持续…

重写muduo之Thread、EventLoopThread、EventLoopThreadPool

目录 1、概述 2、Thread 2.1 Thread.h 3、EventLoopThread 3.1 EventLoopThread.h 3.2 EventLoopThread.cc 4、 EventLoopThreadPool 4.1 EventLoopThreadPool.h 4.2 EventLoopThreadPool.cc 1、概述 管理事件循环线程的调度的 打包了一个EventLoop和线程,…

项目经理【过程】原则

系列文章目录 【引论一】项目管理的意义 【引论二】项目管理的逻辑 【环境】概述 【环境】原则 【环境】任务 【环境】绩效 【人】概述 【人】原则 【人】任务 【人】绩效 【过程】概念 【过程】原则 一、质量管理水平、质量管理的发展 1.1 质量管理水平 1.2 质量管理的发展 …

NAS选购全方位解析,性价比才是硬道理 | 2024年618威联通NAS选购攻略

NAS选购全方位解析,性价比才是硬道理 | 2024年618威联通NAS选购攻略 哈喽小伙伴们好,我是Stark-C~,临近618,今天和大家谈谈NAS的选购问题。 关注我的小伙伴都知道,经过我手头折腾的NAS设备非常多,除了群晖…

如果出现一个工具,可以让前端开发彻底不用再手写UI,这个工具意义大吗?干货!

求这样的一个工具,可以让后端开发、嵌入式开发、产品经理、UI设计师都能用,注意,不是在一个简单的静态页生成,也不是类似飞冰那种 generator ,而是真正让设计师和开发者在各自的那侧达成自治,可以做到吗&am…