windows 部署 django 的 方案

Windows 上"稳定"部署 Django 的关键结论先给你:

Windows 可以稳定跑 Django,但前提是:不用 Linux 专用工具、不用 Gunicorn、用正确的进程模型。

下面给你一套 在 Windows 上长期稳定运行(生产可用)的标准方案 ,以及 明确不该用什么


🧱 一、Windows 上的「稳定架构」(推荐)

✅ 标准组合(已在大量企业内网环境使用)

复制代码
Nginx (Windows)
   ↓
Waitress(WSGI Server)
   ↓
Django
   ↓
PostgreSQL / SQL Server / MySQL

🚀 二、核心组件选择(为什么这样选)

❌ 不要用

组件 原因
Gunicorn 不支持 Windows
uWSGI Windows 支持差
supervisor Linux 专用
fork 多进程模型 Windows 不支持

✅ 必须用

1️⃣ WSGI Server:Waitress(强烈推荐)

bash 复制代码
pip install waitress

启动:

bash 复制代码
waitress-serve --listen=0.0.0.0:8000 myproject.wsgi:application

优点:

  • 官方支持 Windows
  • 稳定
  • 多线程
  • 无 fork

2️⃣ Web Server:Nginx(Windows 版)

  • 反向代理
  • 静态文件
  • HTTPS

🔐 三、生产级 Nginx 配置(Windows)

nginx 复制代码
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    sendfile      on;

    upstream django {
        server 127.0.0.1:8000;
    }

    server {
        listen 80;
        server_name localhost;

        location /static/ {
            alias D:/django_project/static/;
        }

        location / {
            proxy_pass http://django;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $remote_addr;
        }
    }
}

🗂 四、Django 必须做的配置

1️⃣ 关闭 debug

python 复制代码
DEBUG = False

2️⃣ 允许域名

python 复制代码
ALLOWED_HOSTS = ['*']  # 或指定域名/IP

3️⃣ 静态文件

bash 复制代码
python manage.py collectstatic
python 复制代码
STATIC_ROOT = BASE_DIR / 'static'

4️⃣ 日志(Windows 必须注意)

python 复制代码
LOGGING = {
    'handlers': {
        'file': {
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': 'logs/app.log',
            'maxBytes': 50*1024*1024,
            'backupCount': 10,
            'delay': True,  # ⭐⭐⭐ Windows 必须
        },
    },
}

🧠 五、进程守护(Windows 的"Supervisor")

✅ 用 Windows 服务

方案 A:nssm(强烈推荐)

1️⃣ 下载
https://nssm.cc/

2️⃣ 安装服务:

bash 复制代码
nssm install django

配置:

  • Path:D:\venv\Scripts\waitress-serve.exe
  • Arguments:--listen=0.0.0.0:8000 myproject.wsgi:application
  • Startup directory:项目目录

3️⃣ 启动服务:

bash 复制代码
nssm start django

✅ 方案 B:Windows Task Scheduler(不如 nssm)


🧪 六、数据库选择建议(Windows 友好)

数据库 建议
PostgreSQL ✅ 官方 Windows 支持
SQL Server ✅ 企业常用
MySQL ⚠️ 可以
SQLite ❌ 不适合生产

🐳 七、Docker(Windows 上也很稳)

如果你能接受 Docker:

Docker Desktop + Linux 容器 = 最稳定方案

yaml 复制代码
services:
  web:
    image: python:3.11
    command: waitress-serve myproject.wsgi:application

这是 最接近 Linux 生产环境的方式


❗ 八、常见坑(你一定要避开)

说明
用 runserver ❌ 开发用
Gunicorn ❌ Windows
多进程写日志 ❌ WinError 32
logrotate ❌ Linux 专用
fork ❌ Windows

✅ 九、稳定性清单(上线前检查)

  • DEBUG=False
  • Waitress 启动
  • Nginx 反代
  • 静态文件 collectstatic
  • 日志加 delay=True
  • 用 nssm 注册服务
  • 防火墙放行端口
  • 数据库远程连接正常

🎯 总结一句话

Windows 稳定部署 Django 的黄金组合是:

Nginx + Waitress + Django + NSSM


如果你愿意,可以告诉我:

  • Django 版本
  • Python 版本
  • 是否内网 / 是否要 HTTPS
  • 是否多实例

我可以直接给你一套 "可复制上线"的完整部署脚本(含 Nginx + NSSM + Django 配置) 💪

相关推荐
与遨游于天地3 分钟前
NIO的三个组件解决三个问题
java·后端·nio
czlczl2002092530 分钟前
Guava Cache 原理与实战
java·后端·spring
徐先生 @_@|||30 分钟前
Palantir Foundry 五层架构模型详解
开发语言·python·深度学习·算法·机器学习·架构
Yuer20251 小时前
什么是 Rust 语境下的“量化算子”——一个工程对象的最小定义
开发语言·后端·rust·edca os·可控ai
深蓝电商API1 小时前
Scrapy爬虫限速与并发控制最佳实践
爬虫·python·scrapy
Derrick__11 小时前
淘宝MD5爬虫
爬虫·python
薛定谔的猫19821 小时前
llama-index Embedding 落地到 RAG 系统
开发语言·人工智能·python·llama-index
短剑重铸之日2 小时前
《7天学会Redis》Day 5 - Redis Cluster集群架构
数据库·redis·后端·缓存·架构·cluster
计算机程序设计小李同学2 小时前
基于SSM框架的动画制作及分享网站设计
java·前端·后端·学习·ssm
+VX:Fegn08952 小时前
计算机毕业设计|基于springboot + vue小型房屋租赁系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计