news 2026/4/16 14:16:35

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/16 14:00:16

PaddlePaddle模型压缩技术:轻量化部署降低Token与算力开销

PaddlePaddle模型压缩技术:轻量化部署降低Token与算力开销 在智能应用从实验室走向产线的今天,一个看似不起眼的“大模型”正在悄悄吞噬企业的成本——不是因为性能不够强,而是因为它太重了。动辄数百MB的体积、对高端GPU的依赖、每秒几十次A…

作者头像 李华
网站建设 2026/4/16 13:35:53

PaddleOCR性能优化秘籍:GPU加速让文本识别快如闪电

PaddleOCR性能优化实战:如何用GPU实现文本识别的极致加速 在金融票据自动录入、物流面单高速扫描、教育答题卡批量阅卷等现实场景中,企业常常面临一个共性难题:成千上万张图像需要在极短时间内完成文字提取。传统的OCR工具在复杂中文环境下不…

作者头像 李华
网站建设 2026/4/15 18:04:12

如何利用PaddlePaddle镜像快速启动计算机视觉项目?

如何利用PaddlePaddle镜像快速启动计算机视觉项目? 在企业数字化转型加速的今天,一个常见的挑战摆在AI工程师面前:如何在两天内为财务部门搭建一套能自动识别发票信息的系统?传统方式下,光是配置Python环境、安装CUDA驱…

作者头像 李华
网站建设 2026/4/16 2:03:35

树莓派5嵌入式Linux系统移植超详细版教程

从零开始:手把手教你完成树莓派5嵌入式Linux系统移植你有没有遇到过这种情况?项目需要一个轻量、可控的Linux系统跑在树莓派5上,但官方的Raspberry Pi OS又太“臃肿”,启动慢、服务多、还关不掉。这时候,自己动手做一套…

作者头像 李华
网站建设 2026/4/16 14:04:06

基于Proteus仿真软件的Arduino温度传感器模拟

基于Proteus的Arduino温度传感系统仿真:从电路搭建到代码验证你有没有过这样的经历?手头没有LM35传感器,DS18B20还没到货,但课程作业明天就要交;或者团队正在开发一个温控系统,却因为硬件反复烧毁而进度停滞…

作者头像 李华
网站建设 2026/4/16 14:04:33

esp32cam视频传输新手教程:从模块接线到网页预览

从零开始玩转 ESP32-CAM:手把手教你搭建本地视频流监控系统 你有没有想过,花不到一杯奶茶的钱,就能做出一个能连 Wi-Fi、实时传输画面的微型摄像头?这不是科幻,而是现在每个电子爱好者都能轻松实现的小项目。今天我们…

作者头像 李华