一、前言:为什么要做Django部署?

刚学Django时,我只会用`python manage.py runserver`启动项目,但这只是开发环境专用的调试服务器,存在三大致命问题:

- 不支持高并发,仅能承载少量测试请求 - 安全性差,`DEBUG=True`模式会泄露项目源码和敏感信息

- 无法处理静态文件,生产环境性能拉胯 行业内Django生产环境的标准方案是 **Gunicorn + Nginx** 架构,两者分工明确:

| 组件 | 核心作用 | |------|----------|

| Gunicorn | Python WSGI应用服务器,负责运行Django项目,处理业务逻辑 |

| Nginx | 高性能反向代理服务器,负责接收用户请求、转发动态请求、处理静态文件、安全防护 |

本文将从零带你完成Django项目部署,全程附操作截图,同时解决Windows环境下的兼容性坑, -

 二、环境前置准备

1. 开发环境说明 - 操作系统:Windows 10

- Python版本:3.14.3

- Django版本:6.0

- 项目目录:`D:\Code\djangotutorial`(项目名`mysite`)

2. 核心依赖安装

首先安装Gunicorn,直接在终端执行: ```bash pip install gunicorn ```

执行成功后会显示`Successfully installed gunicorn-25.3.0`,

如下图:

三、Django项目初始化

1. 创建Django项目 在终端中切换到目标目录,执行项目创建命令: ```bash # 切换到D盘Code目录 D: cd Code

 创建项目 django-admin startproject mysite djangotutorial ``` 执行后会生成如下目录结构: ``` djangotutorial/ ├── manage.py # 项目管理入口 └── mysite/ # 项目核心配置目录 ├── __init__.py ├── asgi.py ├── settings.py # 项目配置文件 ├── urls.py └── wsgi.py # WSGI入口,Gunicorn依赖 ```

2. 进入项目根目录 后续所有Django相关命令,都必须在`manage.py`所在目录执行: ```bash cd djangotutorial ```

四、静态文件配置与收集(核心步骤)

1. 配置STATIC_ROOT 打开`mysite/settings.py`文件,首先确保顶部导入`os`模块(新手最容易漏的步骤),然后在文件中添加静态文件收集目录配置: ```python # 顶部添加os导入 import os from pathlib import Path # 找到STATIC_URL,在下方添加 STATIC_URL = 'static/' # 新增:静态文件收集根目录 STATIC_ROOT = os.path.join(BASE_DIR, 'static') ```

 注意:如果不导入`os`,执行收集命令时会报`NameError: name 'os' is not defined`错误,对应你之前的报错截图。

2. 执行静态文件收集 在项目根目录执行命令: ```bash python manage.py collectstatic ``` 终端会提示`You have requested to collect static files...`,输入`yes`回车确认,执行成功后会显示: ``` 127 static files copied to 'D:\Code\djangotutorial\static'. ``` (此处插入你静态文件收集成功的终端截图)

五、Gunicorn启动与Windows踩坑解决

1. Gunicorn启动测试 在项目根目录执行启动命令: ```bash gunicorn mysite.wsgi:application --bind 127.0.0.1:8000 ```

2. Windows兼容性坑解决 此时Windows环境下会直接报错: ``` ModuleNotFoundError: No module named 'fcntl' ``` 

错误原因:`fcntl`是Linux系统专属的底层文件控制模块,Windows系统没有该模块,因此Gunicorn原生不支持Windows环境。 作业通关解决方案: 由于是课程作业,无需强制在Windows上运行Gunicorn,直接采用Django自带的`runserver`完成演示,同时在博客中说明兼容性问题:

 注:本次开发环境为Windows系统,Gunicorn依赖的`fcntl`模块仅适用于Linux,存在平台兼容性限制。因此本作业在本地验证阶段,采用Django自带的`runserver` WSGI服务器进行功能演示,该方案符合WSGI规范,能够验证全流程业务逻辑。

3. Django项目启动验证 执行启动命令: ```bash python manage.py runserver ``` 终端显示启动成功后,打开浏览器访问`http://127.0.0.1:8000`,即可看到Django默认欢迎页: (此处插入你浏览器显示火箭页面的截图) 页面说明: - 「安装成功了!恭喜你!」:Django项目初始化完成,服务器正常运行 - 「你看到这个页面是因为DEBUG=True在你的设置文件里,而你没有配置任何URL」:开发模式下的默认提示,生产环境需关闭`DEBUG`

六、Nginx部署方案(生产环境完整配置)

1. Nginx作用说明 即使Windows下不用Gunicorn,也需要在博客中体现完整生产方案,Nginx的核心作用: - 反向代理:转发用户请求到Django应用 - 静态文件处理:直接返回静态资源,减轻Django压力 - 安全防护:隐藏后端服务,防止直接暴露Python环境 - 负载均衡:支持多实例部署,提升并发能力。

2. Windows下Nginx安装与配置

(1) 从[Nginx官网](sslocal://flow/file_open?url=https%3A%2F%2Fnginx.org%2Fen%2Fdownload.html&flow_extra=eyJsaW5rX3R5cGUiOiJjb2RlX2ludGVycHJldGVyIn0=)下载Windows稳定版,解压到无中文、无空格的路径(如`D:\nginx-1.26.0`)

(2)打开`conf/nginx.conf`文件,替换`server`块为如下配置:

```nginx server { listen 80; server_name 127.0.0.1 localhost;

# 静态文件代理配置 location /static/ { alias D:/Code/djangotutorial/static/; expires 30d;

# 静态文件缓存30天,提升性能 }

# 动态请求转发到Django服务器 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; } }

(3) 重启Nginx生效: ```bash # 进入Nginx目录 cd D:\nginx-1.26.0 # 重载配置 nginx -s reload ```

(4)验证:先启动Django服务器,再访问`http://127.0.0.1`,即可正常访问项目,静态资源正常加载。

七、常见问题排查清单

| 问题现象 | 原因 | 解决方案 |

|----------|------|----------|

| `python manage.py collectstatic` 报`No such file or directory` | 未进入项目根目录,找不到`manage.py` | 执行`cd D:\Code\djangotutorial`切换到项目目录 |

| 报`NameError: name 'os' is not defined` | `settings.py`中未导入`os`模块 | 在文件顶部添加`import os` |

| Gunicorn报`No module named 'fcntl'` | Windows不支持Linux专属模块 | 改用`runserver`演示,或在Linux服务器部署 |

| 访问页面样式丢失 | 静态文件未收集,或Nginx配置错误 | 重新执行`collectstatic`,检查Nginx`alias`路径 |

| 生产环境访问报400 | `DEBUG=False`时未配置`ALLOWED_HOSTS` | 在`settings.py`中添加`ALLOWED_HOSTS = ['你的域名/IP', '127.0.0.1']` |

八、总结与作业提交说明

1. 本次部署全流程回顾

(1) 环境准备:安装Python、Django、Gunicorn

(2) 项目创建:`django-admin startproject`初始化项目

(3) 静态文件:配置`STATIC_ROOT`,执行`collectstatic`收集资源

(4)服务器启动:解决Windows Gunicorn兼容问题,用`runserver`完成验证

(5) Nginx配置:完成反向代理与静态文件处理,实现生产环境架构

2. 作业提交说明: 本次作业完整覆盖了Django项目部署的全流程,包含: - 项目目录结构 - 静态文件配置与收集日志 - Gunicorn兼容性问题与解决方案 - 项目启动成功页面 - Nginx完整生产配置 所有操作均附详细截图,可直接用于CSDN作业提交。

3. 后续拓展 - 生产环境部署:将项目迁移到Linux服务器,完整执行Gunicorn+Nginx部署 - 服务化:用Systemd(Linux)或NSSM(Windows)将Gunicorn注册为系统服务,实现开机自启 - HTTPS配置:申请SSL证书,配置Nginx HTTPS访问,提升安全性。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐