如何在IIS Default WebSite下将Python Flask部署为应用程序?
将Flask应用部署为IIS Default WebSite的子应用程序
以下是针对你现有环境的一步步配置流程:
1. 停止独立的Flask站点
打开IIS管理器,找到名为flask的独立网站,右键选择停止,避免后续配置时的资源冲突。
2. 迁移Flask应用文件到Default WebSite目录
- 在Default WebSite的根目录(默认路径为
C:\inetpub\wwwroot)创建名为flask的子文件夹。 - 将原独立Flask站点的所有文件(包括虚拟环境、主程序文件、静态资源、模板等)完整复制到这个新的
flask文件夹中。
3. 配置FastCGI应用
Flask在IIS中依赖FastCGI处理请求,需先配置对应Python环境的FastCGI应用:
- 在IIS管理器的服务器级别(非站点/应用级别)找到FastCGI设置。
- 点击右侧的添加应用程序,在弹出的对话框中:
- 可执行文件:选择Flask虚拟环境下的
python.exe路径,例如C:\inetpub\wwwroot\flask\venv\Scripts\python.exe。 - 参数:填写
wfastcgi.py的路径,一般在虚拟环境的site-packages目录下,例如C:\inetpub\wwwroot\flask\venv\Lib\site-packages\wfastcgi.py。
- 可执行文件:选择Flask虚拟环境下的
- 保存配置,记住这个FastCGI应用的完整
scriptProcessor值(即两个路径用竖线|连接的字符串,后续配置会用到)。
4. 在Default WebSite下创建子应用
- 回到IIS管理器,找到Default WebSite,右键选择添加应用程序。
- 别名:填写
flask(这将作为访问路径的一部分,例如http://你的域名/flask)。 - 物理路径:选择刚才创建的
C:\inetpub\wwwroot\flask文件夹。 - 应用程序池:可选择现有适配Python的应用池,或新建一个:
- 新建应用池时,名称设为
FlaskAppPool,.NET CLR版本选择无托管代码,管道模式选择集成。
- 新建应用池时,名称设为
- 点击确定完成子应用创建。
5. 配置web.config文件
在C:\inetpub\wwwroot\flask文件夹中创建或修改web.config文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <handlers> <add name="FlaskFastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\inetpub\wwwroot\flask\venv\Scripts\python.exe|C:\inetpub\wwwroot\flask\venv\Lib\site-packages\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" /> </handlers> </system.webServer> <appSettings> <!-- 替换为你的Flask应用入口:主文件名.实例名,例如app.py里的app实例就是app.app --> <add key="WSGI_HANDLER" value="app.app" /> <add key="PYTHONPATH" value="C:\inetpub\wwwroot\flask" /> <!-- 可选:日志路径,需提前创建logs文件夹 --> <add key="WSGI_LOG" value="C:\inetpub\wwwroot\flask\logs\wfastcgi.log" /> </appSettings> </configuration>
- 重点修改
WSGI_HANDLER:如果主程序文件是run.py,Flask实例名为application,则改为run.application。 - 确保
scriptProcessor的值和之前配置FastCGI时的路径完全一致。
6. 设置文件夹权限
- 右键点击
C:\inetpub\wwwroot\flask文件夹,选择属性 -> 安全 -> 编辑。 - 添加IIS应用池用户(例如
IIS AppPool\FlaskAppPool),赋予读取&执行、列出文件夹内容、读取权限;若需要写入操作(如文件上传),额外添加写入权限。 - 虚拟环境文件夹也需设置相同权限。
7. 测试访问
启动Default WebSite,在浏览器中访问http://你的域名/flask,验证Flask应用是否正常加载。
常见问题排查
- 500内部错误:查看
wfastcgi.log(若已配置),大概率是WSGI_HANDLER或PYTHONPATH配置错误,或虚拟环境依赖缺失。 - 404错误:检查子应用别名是否正确,物理路径是否指向包含web.config的Flask文件夹。
- 若提示
wfastcgi.py不存在,进入虚拟环境运行pip install wfastcgi安装依赖。
内容的提问来源于stack exchange,提问作者Fatih Enes
相关产品推荐
相关产品推荐

