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
- 访问 python.org 下载 Windows Installer
- ⚠️ 重要:安装时务必勾选 "Add Python to PATH"
- 点击 "Install Now" 完成安装
- 验证安装:
python --version
# Python 3.12.x
pip --version
# pip 24.x
第二步:安装 MySQL
- 访问 MySQL 下载页
- 下载 MySQL Installer for Windows(约 400MB)
- 运行安装程序,选择 "Developer Default"
- 设置 root 密码(务必记住!)
- 安装完成后,MySQL Workbench 会自动安装
- 验证安装:
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
- 访问 nginx.org 下载 Windows 版
- 解压到
C:\nginx(推荐路径) - 编辑
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
生产环境建议
- 关闭 DEBUG:
DEBUG = False,ALLOWED_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 服务(可选)
- 下载 nssm 并解压
- 管理员终端运行:
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 方案。