Python Web 应用(以 Django 为例)服务部署

Windows Server 2012 上部署 Python Web 应用(以 Django 为例),可以选择多种方式,下面我将给出一套稳定实用、适合生产环境的部署方案详解:


✅ 总体部署流程(推荐)

  1. 安装 Python 和 pip
  2. 安装虚拟环境并创建项目环境
  3. 安装 Django 并配置项目
  4. 安装 IIS(Windows Server 自带)并配置 FastCGI
  5. 安装 wfastcgi(桥接 Django 和 IIS)
  6. 在 IIS 中配置 Django 项目运行
  7. 调试运行 + 配置服务启动项(可选:使用 Nginx 或 Apache)

📌 步骤一:安装 Python 和 pip

1. 下载并安装 Python 3.x(推荐 3.8+)

2. 检查安装是否成功

python --version
pip --version

📌 步骤二:创建虚拟环境并安装 Django

# 安装虚拟环境工具(可选)
pip install virtualenv

# 创建虚拟环境
cd C:\your_project\
virtualenv venv

# 启动虚拟环境
venv\Scripts\activate

# 安装 Django
pip install django

# 创建 Django 项目
django-admin startproject mysite

📌 步骤三:测试项目是否正常

cd mysite
python manage.py runserver 0.0.0.0:8000

访问:http://127.0.0.1:8000 如果页面显示正常,说明 Django 安装无误。


📌 步骤四:配置 IIS + FastCGI + wfastcgi

1. 安装 IIS + CGI 功能(在服务器管理器中)

进入:服务器管理器 > 添加角色与功能 > Web 服务器(IIS)

勾选:

  • Web 服务器(IIS)
  • Web 服务器 → 应用程序开发 → CGI
  • 管理工具 → IIS 管理控制台

✔️ 安装后你可以通过 “Internet 信息服务 (IIS) 管理器” 打开配置界面


2. 安装 wfastcgi 模块

这是连接 IIS 和 Python(WSGI)的桥梁。

pip install wfastcgi
python -m wfastcgi-enable

它会自动注册 Python 到 FastCGI(Windows 注册表中),建立桥接。


📌 步骤五:在 IIS 配置 Django 站点

假设你项目路径为:

C:\inetpub\wwwroot\mysite\

包含:

  • manage.py
  • mysite/
  • static/
  • templates/

1. 配置 web.config 文件

mysite/ 目录下创建 web.config 文件,内容如下:

<configuration>
  <system.webServer>
    <handlers>
      <add name="Python FastCGI"
           path="*"
           verb="*"
           modules="FastCgiModule"
           scriptProcessor="C:\Python39\python.exe|C:\Python39\Lib\site-packages\wfastcgi.py"
           resourceType="Unspecified"
           requireAccess="Script" />
    </handlers>
    <defaultDocument>
      <files>
        <add value="index.py" />
      </files>
    </defaultDocument>
  </system.webServer>
</configuration>

确保替换其中的 python.exe 路径为你本机 Python 安装目录。


2. 创建入口文件 index.py

内容如下:

import os
import sys

# 添加 Django 项目路径
sys.path.append(r'C:\inetpub\wwwroot\mysite')

# 设置环境变量
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

# 获取 WSGI 应用
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

3. 配置站点绑定

在 IIS 管理器中:

  • 添加站点(网站名称:mysite
  • 物理路径指向 C:\inetpub\wwwroot\mysite
  • 绑定端口如 8000 或 80

4. 设置环境变量(可选但推荐)

在系统环境变量中添加:

WSGI_HANDLER = index.application

确保 IIS 能正确找到入口函数。


📌 步骤六:收集静态文件 & 数据库迁移

python manage.py collectstatic
python manage.py migrate

静态文件默认输出到 /static 目录,确保 IIS 能访问。


📌 可选:使用 Nginx + Gunicorn(更推荐于 Linux)

Windows 上虽然能跑 IIS + FastCGI,但性能和社区支持不如 Linux 上使用:

  • nginx + gunicorn + django
  • 或者直接用 docker + uwsgi + nginx

✅ 总结流程图

用户请求
   │
   ▼
IIS + FastCGI (配置 web.config)
   │
   ▼
python + wfastcgi.py
   │
   ▼
Django 项目 (index.py / wsgi.py)

✅ 常见问题 FAQ

问题 说明
500 错误 检查 web.config、Python 路径是否正确
静态文件 404 使用 collectstatic 并确保 IIS 能访问
页面空白无输出 检查是否启用 CGI / FastCGI,IIS 权限
项目路径错误 sys.path.append(...) 路径确保设置正确

以下是一个适用于 Windows Server 2012 的完整 Django 项目部署脚本模板,包括目录结构、配置文件、关键脚本等,适用于使用 IIS + FastCGI + Python + Django 的部署方式。


🗂️ 项目结构建议(部署后)

C:\inetpub\wwwroot\mysite\
├── manage.py
├── mysite\                 # Django 项目包
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   ├── wsgi.py
├── static\                # 静态文件目录(collectstatic)
├── templates\             # 模板目录
├── web.config             # IIS配置文件
├── index.py               # FastCGI入口文件(WSGI桥接)
└── requirements.txt       # Python依赖包列表

📄 index.py —— WSGI 入口文件

# index.py
import os
import sys

# 添加 Django 项目的路径
sys.path.append(r'C:\inetpub\wwwroot\mysite')

# 设置 Django 项目的设置模块
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

# 获取 WSGI 应用
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

📄 web.config —— IIS FastCGI 配置文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="Python FastCGI"
           path="*"
           verb="*"
           modules="FastCgiModule"
           scriptProcessor="C:\Python39\python.exe|C:\Python39\Lib\site-packages\wfastcgi.py"
           resourceType="Unspecified"
           requireAccess="Script" />
    </handlers>
    <defaultDocument>
      <files>
        <add value="index.py" />
      </files>
    </defaultDocument>
  </system.webServer>
</configuration>

🔧 替换:

  • C:\Python39\python.exe 为你的实际 Python 路径。

📄 requirements.txt 示例

Django==3.2
wfastcgi==3.0.0

你可以使用如下命令自动生成:

pip freeze > requirements.txt

📄 manage.py 示例(原始 Django 生成)

此文件自动生成,不必更改。


🔧 Windows Server 配置操作简要脚本(手动执行)

1. 安装 Python、pip、添加环境变量

# 手动或使用包管理器安装 Python

2. 安装依赖

cd C:\inetpub\wwwroot\mysite
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt

3. 注册 FastCGI(只需执行一次)

python -m wfastcgi.enable

🛠️ 管理命令常用

# 启动开发服务器测试
python manage.py runserver

# 数据库迁移
python manage.py migrate

# 创建超级用户
python manage.py createsuperuser

# 收集静态资源
python manage.py collectstatic

✅ 补充:静态文件支持

确保在 settings.py 中配置如下内容:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

收集命令:

python manage.py collectstatic

✅ 完成后你应该能:

  1. 通过浏览器访问 IIS 分配端口访问 Django 项目
  2. Django 项目由 IIS 通过 FastCGI 调用 Python → Django WSGI 启动服务
  3. 能正常显示页面、路由、静态文件和后台

posted @ 2025-07-01 12:09  kkman2000  阅读(115)  评论(0)    收藏  举报