在 Windows 系统上使用 IIS 发布基于 Python Flask 的网站,需通过 FastCGI 和 wfastcgi 桥接 IIS 与 Python。
一、环境准备
- 安装 IIS打开 控制面板 > 程序和功能 > 启用或关闭 Windows 功能。
- 勾选 Internet Information Services,展开应用程序开发功能,勾选 CGI。
- 安装 Python下载
官网下载地址:https://www.anaconda.com/download
中科大镜像源官网:https://mirrors.ustc.edu.cn/anaconda/archive/
以上两个网址都可下载,我下载的是中科大镜像Anaconda3-2024.10-1-Windows-x86_64.exe配置环境变量,此电脑 > 右键 > 属性,接下来配置如下图。
- 安装 Flask 和 wfastcgi
pip install flask wfastcgi
二、启用 wfastcgi
- 以管理员身份运行命令提示符:
wfastcgi-enable
- 记录输出中的 Python 路径 和 wfastcgi 路径(如
C:\Python39\python.exe|C:\Python39\Lib\site-packages\wfastcgi.py)。
三、部署 Flask 应用
- 目录结构示例:
C:\MyFlaskApp\
│ app.py # Flask 主程序
│ web.config # IIS 配置文件
├── static/ # 静态文件(CSS/JS/图片)
└── templates/ # HTML 模板
- Flask 应用示例(app.py):
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html')
if __name__ == '__main__':
app.run()
- 配置 web.config
在应用根目录创建 web.config,替换和 :
<add name="Python FastCGI"
path="*"
verb="*"
modules="FastCgiModule"
scriptProcessor="| "
resourceType="Unspecified" />
四、配置 IIS 网站
- 创建新网站打开 IIS 管理器,右键 网站 > 添加网站。设置 站点名称、物理路径(应用根目录)、端口(如 80)。
- 配置应用程序池在 应用程序池 中,找到该网站对应的池,右键 基本设置:将 .NET CLR 版本 改为 无托管代码。将 标识 改为有权限访问应用目录的账户(如 LocalSystem)。
- 处理静态文件确保 IIS 的 静态内容 功能已启用(在 Windows 功能中检查)。
- 重启 IIS
iisreset
五、测试与排错
- 访问网站
在浏览器输入 http://localhost 查看是否正常。 - 常见错误排查:500 错误:检查 web.config 中的路径和 WSGI_HANDLER 是否正确。静态文件 404:确保 IIS 静态文件模块已安装,且文件路径正确。权限问题:右键应用目录 > 属性 > 安全,添加 IIS_IUSRS 并赋予读写权限。查看日志:检查 C:\MyFlaskApp\logs.txt 或 IIS 的 失败请求跟踪。
六、高级配置(本地可不配置)
- 使用虚拟环境:在 web.config 中指定虚拟环境的 Python 路径。
- HTTPS:在 IIS 中绑定 SSL 证书。
- URL 重写:通过 IIS 的 URL 重写模块 配置自定义路由规则。
完成以上步骤后,你的 Flask 应用即可通过 IIS 在 Windows 上稳定运行。