windows iis下部署python
一、准备工作
在Windows IIS上部署Python代码前,需完成以下基础准备:- 1.安装Python:从Python官网下载最新稳定版(如Python 3.9+),安装时务必勾选“Add Python to PATH”,确保Python可全局调用。
- 2.安装IIS及必要组件:通过“控制面板→程序→启用或关闭Windows功能”开启IIS服务,勾选“Web服务器(IIS)→Web服务器→应用程序开发功能→CGI”(或“FastCGI”),完成安装。
![局部截取_20251016_173013]()
- 3.安装Python Web框架:根据项目需求选择Flask(轻量级)或Django(全功能),通过
pip install flask(或pip install django)安装。 - 4.安装wfastcgi模块:在命令提示符中运行
pip install wfastcgi,用于桥接IIS与Python应用。
二、配置IIS支持Python
1. 启用CGI/FastCGI
- 打开IIS管理器),选中服务器节点,双击“处理程序映射”。
- 若需使用FastCGI(推荐),点击右侧“添加模块映射”,设置:
- 请求路径:
*(或*.py,针对Python文件) - 模块:
FastCgiModule - 可执行文件:
C:\Python39\python.exe|C:\Python39\Lib\site-packages\wfastcgi.py(替换为你的Python路径) - 名称:
PythonHandler
- 请求路径:
- 点击“请求限制”,确保“映射”选项卡中勾选“仅当请求映射到文件时才调用处理程序”。
2. 配置web.config文件
在Python项目根目录(如C:\flask_app)创建web.config文件,内容如下(以Flask为例):
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="PythonHandler"
path="*"
verb="*"
modules="FastCgiModule"
scriptProcessor="C:\Python39\python.exe|C:\Python39\Lib\site-packages\wfastcgi.py"
resourceType="Unspecified"
requireAccess="Script"/>
</handlers>
<appSettings>
<!-- Flask应用路径(指向包含app.py的目录) -->
<add key="PYTHONPATH" value="C:\flask_app"/>
<!-- Flask的WSGI应用对象(格式:<项目名>.<文件名>:<app变量>) -->
<add key="WSGI_HANDLER" value="app.app"/>
<!-- 可选:日志路径(用于调试) -->
<add key="WSGI_LOG" value="C:\flask_app\wfastcgi.log"/>
</appSettings>
</system.webServer>
</configuration>
三、部署Python应用
- 1.创建项目结构:建议采用“前后端分离”结构,例如:
C:\flask_app\ ├── app.py # Flask主文件 ├── requirements.txt # 依赖列表 ├── web.config # IIS配置文件 └── static\ # 前端静态文件(可选)
- 2.安装依赖:在项目目录打开命令提示符,运行
pip install -r requirements.txt,安装Flask等依赖。 - 3.配置虚拟环境(可选但推荐):避免依赖冲突,运行
python -m venv venv创建虚拟环境,激活后(venv\Scripts\activate)再安装依赖。 - 4.发布文件:将项目文件夹复制到IIS网站根目录(如
C:\inetpub\wwwroot\flask_app),或在IIS中“添加网站”时直接指定项目路径。
四、测试与调试
- 1.启动IIS:在IIS管理器中选中网站,点击右侧“浏览*:<端口>”(如
http://localhost:8080),查看是否能显示Python应用的输出(如Flask的“Hello World”)。 - 2.查看日志:若出现500错误,检查以下日志定位问题:
- •IIS日志:
C:\inetpub\logs\LogFiles - •wfastcgi日志:
web.config中指定的WSGI_LOG路径(如C:\flask_app\wfastcgi.log)
- •IIS日志:
- 3.常见错误解决:
- •HTTP 500:检查
web.config中的scriptProcessor路径是否正确,或应用程序池是否运行(需设置为“无托管代码”)。 - •404 Not Found:确认
PYTHONPATH是否包含项目根目录,WSGI_HANDLER是否指向正确的WSGI对象。 - •权限问题:确保IIS用户(如
IUSR、应用程序池标识)对项目目录有“读取+执行”权限。 - iis 下 和 本地执行 有个不一样的情况,本地能正常显示和找到对应的路径下的中文附件,iis 下始终乱码,即便urlencode 也不行,经过很长时间的尝试,最后使用了base64 加解密文件路径,才正常在iis 显示附件
项目上的参考配置文件
<?xml version="1.0" encoding="UTF-8"?> <configuration> <appSettings> <add key="PYTHONPATH" value="C:\Jay\Jay_AI\J_ChatBI-Talent\app" /> <add key="WSGI_HANDLER" value="modern_chat_app.app" /> <add key="WSGI_LOG" value="C:\Jay\Jay_AI\J_ChatBI-Talent\Log\wsgi.log" /> <!-- 优化启动性能 --> <add key="PYTHONOPTIMIZE" value="1" /> <add key="PYTHONDONTWRITEBYTECODE" value="1" /> <add key="PYTHONUNBUFFERED" value="1" /> <!-- 预加载模块 --> <add key="WSGI_PRELOAD" value="1" /> </appSettings> <system.webServer> <!-- 处理程序映射 --> <handlers> <add name="PythonHandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Users\Administrator\AppData\Local\Programs\Python\Python311\python.exe|C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" /> </handlers> <!-- 启用压缩 --> <httpCompression> <dynamicTypes> <add mimeType="application/json" enabled="true" /> <add mimeType="text/html" enabled="true" /> <add mimeType="text/css" enabled="true" /> <add mimeType="application/javascript" enabled="true" /> </dynamicTypes> </httpCompression> <!-- 静态文件缓存 --> <staticContent> <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" /> </staticContent> <!-- 应用程序池设置 --> <applicationInitialization doAppInitAfterRestart="true"> <add initializationPage="/api/health" /> </applicationInitialization> </system.webServer> </configuration>


浙公网安备 33010602011771号