news 2026/5/1 9:27:44

Django项目nginx转uWSGI问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Django项目nginx转uWSGI问题

主要在于3个方面:
1. 关于Nginx配置
2. 关于uWSGI配置
3. 关于环境(重要)

nginx:主要是做域名、掩饰内部服务器端口(uwsgin)和负载均衡,相当于中间层统一收到关于域名下的所有路由请求并转发给对应的WEB服务器处理

uWSGI:实际处理请求的服务器,我用它加载Django项目

环境:重要!!!! Django不同版本间存在很大的差异,一定要建立虚拟环境,下载对应的Python版本配置对应的Django版本,用虚拟环境启动的uWSGI来部署项目,否则会报错。

原因:因为当前Python将sqlite3嵌入到python中,不能额外下载部署版本,Python3.14版本前后还对sqlite进行改变。而Django在各大版本中会有用到sqlite3,那就会出现版本不兼容的问题,所以必须对应版本,否则启动起来了也用不了,会告诉你sqlite版本太低(3.7),要更高的Python

python runserver manang.py

Nginx配置:/etc/nginx/nginx.conf (或者你自己找到你的Nginx在哪)

在已经存在的http里面加入 include /etc/nginx/conf.d/*.conf,这是为了能方便对配置进行修改,防止后面找不到或者弄混,配置文档太长

http { include /etc/nginx/conf.d/*.conf; }

然后随便写一个 /etc/nginx/conf.d/你随便取名.conf

upstream django { server 127.0.0.1:8008; # 本地 uWSGI keepalive 256; } server { listen 80; server_name localhost; charset utf-8; client_max_body_size 75M; # 日志 access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; # 静态文件(根据实际路径调整) location /static/ { alias /home/project/new_django/staticfiles/; expires 30d; add_header Cache-Control "public, immutable"; } # 媒体文件 location /media/ { alias /home/project/new_django/mediafiles/; expires 30d; } # Django 应用 - 使用 uWSGI location / { uwsgi_pass django; include uwsgi_params; uwsgi_connect_timeout 300s; uwsgi_read_timeout 300s; uwsgi_send_timeout 300s; uwsgi_buffer_size 32k; uwsgi_buffers 8 32k; # 设置请求头 uwsgi_param Host $host; uwsgi_param X-Real-IP $remote_addr; uwsgi_param X-Forwarded-For $proxy_add_x_forwarded_for; uwsgi_param X-Forwarded-Proto $scheme; } }

Django项目的manag,py同层级,写一个uwsgin.ini文件

然后用虚拟环境下的uwsgi启动即可

# Python 环境 # 使用虚拟环境(如果有) virtualenv = /home/project/new_django/venv # 或者设置 Python 路径 # python-path = /home/project/new_django/venv/lib/python3.10/site-packages # 项目设置 chdir = /home/project/new_django wsgi-file = new_django/wsgi.py module = new_django.wsgi:application # 进程管理 master = true processes = 4 threads = 2 max-requests = 5000 vacuum = true die-on-term = true # 网络设置 - 重要!使用 127.0.0.1 而不是 0.0.0.0 socket = 127.0.0.1:8008 # 如果 Nginx 和 uWSGI 在不同机器,才用 0.0.0.0 # socket = 0.0.0.0:8008 # 权限设置 chmod-socket = 666 chown-socket = nginx:nginx # 或者如果用户不同 # chown-socket = your_user:your_group # 缓冲区设置(防止大请求出错) buffer-size = 32768 post-buffering = 8192 # 超时设置 harakiri = 300 socket-timeout = 300 http-timeout = 300 # 日志设置(使用绝对路径) daemonize = /home/project/new_django/logs/uwsgi.log pidfile = /home/project/new_django/uwsgi.pid logto = /home/project/new_django/logs/uwsgi.log log-maxsize = 50000000 # 性能优化 enable-threads = true lazy-apps = true single-interpreter = true # 静态文件(可选,通常由 Nginx 处理) static-map = /static=/home/project/new_django/staticfiles
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 17:15:30

L298N电机驱动原理图实践教程:连接Arduino进行功能验证

从零开始玩转L298N:用Arduino驱动直流电机的硬核实战指南你有没有试过直接用Arduino去带一个直流电机?结果多半是——电机纹丝不动,或者板子突然“罢工”重启。这并不是你的代码写错了,而是因为微控制器IO口输出的电流太小&#x…

作者头像 李华
网站建设 2026/5/1 2:18:06

BRAM与外部存储接口协同验证方法:实战案例

BRAM与外部存储接口协同验证实战:从数据采集到可靠传输在FPGA系统设计中,你是否曾遇到这样的场景——ADC高速采样源源不断,但后端处理来不及响应?或者明明逻辑写得“天衣无缝”,上板调试却频繁丢包、数据错乱&#xff…

作者头像 李华
网站建设 2026/4/19 10:48:48

以代码作舟,深耕技术蓝海 —— 我的2025博客创作成长之路

从 2023 年盛夏时节入驻 CSDN,到 2025 年寒冬迎来创作收官,两年时光里,我以键盘为笔、代码为墨,在技术探索的道路上留下了一串深浅不一却坚定向前的脚印。作为一名本科在校学生,我深耕嵌入式、人工智能、C/C编程、Linu…

作者头像 李华
网站建设 2026/4/30 13:49:19

TTL电路搭建半加器实验:操作指南完整版

从0和1开始:用TTL芯片亲手搭建半加器,点亮你的第一道数字逻辑之光你有没有想过,计算机是怎么做加法的?不是打开计算器敲个“11”,而是从最底层的晶体管和导线出发,让电流在门电路中流动,最终把两…

作者头像 李华
网站建设 2026/4/18 10:19:21

C++运算符重载学习感悟

近期系统学习C运算符重载后,我不仅掌握了一项核心编程技能,更对C面向对象的设计思路有了深刻领悟。从最初对语法规则的困惑,到如今能熟练为自定义类重载常用运算符,这段学习经历让我收获颇丰。运算符重载的核心价值,是…

作者头像 李华
网站建设 2026/5/1 4:03:04

Arduino ESP32内存架构完整指南

Arduino ESP32内存架构深度解析:从原理到实战的完整避坑指南你有没有遇到过这样的情况?程序明明逻辑没问题,却在运行一段时间后突然重启;或者添加了一个看似不起眼的功能,结果Wi-Fi连不上了;又或者在中断里…

作者头像 李华