Windows环境搭建Django+MySQL+Nginx+Waitress全栈开发环境

分类:工具指南 发布时间:2026-05-23 18:41 作者:13912345678@sms.local
Django,MySQL,Nginx,Waitress,Windows,Web开发,教程

前言

相较于 Linux 服务器上常用的 uWSGI/Gunicorn,Waitress 是一个纯 Python 的 WSGI 服务器,无需额外安装编译依赖,在 Windows 上一键运行。本教程带你逐步搭建完整的 Django + MySQL + Nginx + Waitress 开发/生产环境。

系统要求

  • Windows 10/11 64位
  • Python 3.10+(推荐 3.12)
  • 管理员权限(安装部分软件时需要)

第一步:安装 Python

  1. 访问 python.org 下载 Windows Installer
  2. ⚠️ 重要:安装时务必勾选 "Add Python to PATH"
  3. 点击 "Install Now" 完成安装
  4. 验证安装:
python --version
# Python 3.12.x
pip --version
# pip 24.x

第二步:安装 MySQL

  1. 访问 MySQL 下载页
  2. 下载 MySQL Installer for Windows(约 400MB)
  3. 运行安装程序,选择 "Developer Default"
  4. 设置 root 密码(务必记住!)
  5. 安装完成后,MySQL Workbench 会自动安装
  6. 验证安装:
mysql -u root -p
# 输入密码后进入 MySQL 命令行即为成功

第三步:创建 Django 项目

3.1 创建项目目录

mkdir C:\Projects\myproject
cd C:\Projects\myproject

3.2 创建虚拟环境

python -m venv venv

# 激活虚拟环境
venv\Scripts\activate

# 确认已激活(路径前出现(venv))
where python

3.3 安装 Django 和依赖

pip install django mysqlclient waitress
# 如果 mysqlclient 安装失败(常见于 Windows),用 pymysql 替代:
# pip install django pymysql waitress

3.4 创建 Django 项目

django-admin startproject config .
python manage.py startapp myapp

第四步:配置 MySQL 数据库

先用 MySQL Workbench 或命令行创建数据库:

mysql -u root -p
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
exit;

编辑 config/settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mydb',
        'USER': 'root',
        'PASSWORD': '你的密码',
        'HOST': 'localhost',
        'PORT': '3306',
        'OPTIONS': {
            'charset': 'utf8mb4',
        },
    }
}

# 如果使用 pymysql,还需在 settings.py 顶部或 __init__.py 中添加:
# import pymysql
# pymysql.install_as_MySQLdb()

运行迁移:

python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser

第五步:安装配置 Nginx

  1. 访问 nginx.org 下载 Windows 版
  2. 解压到 C:\nginx(推荐路径)
  3. 编辑 C:\nginx\conf\nginx.conf
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        # 静态文件
        location /static/ {
            alias C:/Projects/myproject/staticfiles/;
        }

        # 媒体文件
        location /media/ {
            alias C:/Projects/myproject/media/;
        }

        # 代理到 Waitress
        location / {
            proxy_pass http://127.0.0.1:8000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

启动 Nginx:

cd C:\nginx
start nginx

# 重新加载配置(修改配置文件后)
nginx -s reload

# 停止
nginx -s stop

第六步:配置并使用 Waitress

在项目根目录创建 server.py

# server.py
from waitress import serve
from config.wsgi import application

if __name__ == '__main__':
    print('服务启动:http://127.0.0.1:8000')
    serve(
        application,
        host='127.0.0.1',
        port=8000,
        threads=4,           # 工作线程数
        channel_timeout=120, # 请求超时(秒)
    )

运行:

python server.py

此时访问 http://localhost 就能看到你的 Django 应用了!

第七步:收集静态文件

在 settings.py 中配置:

STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'staticfiles'
STATICFILES_DIRS = [BASE_DIR / 'static']

MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'media'

收集静态文件:

python manage.py collectstatic

生产环境建议

  • 关闭 DEBUGDEBUG = FalseALLOWED_HOSTS = ['你的域名', '127.0.0.1']
  • 配置 HTTPS:用 Let's Encrypt 或 Cloudflare 获取免费 SSL 证书
  • 使用 Windows Service:用 nssm(Non-Sucking Service Manager)将 Waitress 注册为 Windows 服务,开机自启
  • 备份数据库:用 Windows 任务计划程序定时执行 mysqldump
  • 防火墙:开放 80/443 端口(如对外服务)

注册 Windows 服务(可选)

  1. 下载 nssm 并解压
  2. 管理员终端运行:
C:\nssm\nssm.exe install WaitressDjango

# 在弹出的界面中:
# Path: C:\Projects\myproject\venv\Scripts\python.exe
# Arguments: C:\Projects\myproject\server.py
# Startup directory: C:\Projects\myproject

之后你的 Django 应用就会随系统自动启动。

常见问题

Q: mysqlclient 安装报错

Windows 上编译 mysqlclient 需要 Visual C++ Build Tools。最简单的办法是用 pymysql 替代(纯 Python 实现),性能足够个人项目使用。

Q: Nginx 启动失败

常见原因是 80 端口被占用(如 IIS、Skype)。修改 nginx.conf 中的 listen 端口,或关闭占用程序。

Q: 静态文件 404

确认已执行 collectstatic,且 Nginx 配置中的 alias 路径与实际路径一致。

Q: Waitress vs uWSGI/Gunicorn 怎么选?

在 Windows 上,uWSGI 和 Gunicorn 都不原生支持。Waitress 是纯 Python 实现,Windows 完美兼容。在 Linux 服务器上则推荐 uWSGI + Nginx 方案。