通过 FastCgiModule,搭建 Flask 站点。

IIS 安装

在启用或关闭Windows功能添加 IIS 功能,默认 IIS,再勾选上 CGI 即可。

Python 安装 wfastcgi

pip install wfastcgi #安装
wfastcgi-enable #启用

执行完毕后,可以看到输出

已经在配置提交路径“MACHINE/WEBROOT/APPHOST”向“MACHINE/WEBROOT/APPHOST”的“system.webServer/fastCgi”节应用了配置更改"xxx\python.exe|xxx\lib\site-packages\wfastcgi.py" can now be used as a FastCGI script processor”

中”xxx\python.exe|xxx\lib\site-packages\wfastcgi.py”需要记录保存,会用于后面的IIS配置中。xxx这里代表的是Python环境的本地路径。

IIS 添加模块映射

1、新建 IIS 站点 Flask 应用
2、打开处理映射程序
3、点击右侧菜单栏,添加模块映射
4、模块 FastCgiModule,可执行文件复制上面保存的路径,名称:FlaskFastCgi (可随意更改) - 请求限制:取消勾选 仅当前请求映射至以下内容时才调用处理程序

注意 Windows 非 Administrator 账号登陆,需要给网站目录加上 IIS 权限

修改web.config文件,需要在appSettings节点里添加两个必需的参数“WSGI_HANDLER”和“PYTHONPATH”。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<!-- handlers在5步骤中配置好,IIS管理器生成,不要手工修改 -->
<handlers>
<add name="FlaskFastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="xxx\python.exe|xxx\Lib\site-packages\wfastcgi.py" resourceType="Unspecified" />
</handlers>
</system.webServer>
<!-- appSettings节点需要手工添加 -->
<appSettings>
<!-- 2个必须要有的参数:
@WSGI_HANDLER:fastCGI获得请求后调用的flask应用入口。
@PYTHONPATH: 执行整个应用的项目目录
-->
<add key="WSGI_HANDLER" value="Flask应用的启动对象" />
<add key="PYTHONPATH" value="Flask应用的根目录" />
</appSettings>
</configuration>

然后打开网站,测试是否正常可以访问。

遇到的问题

访问时候出现 ‘无法访问请求的页面,因为该页的相关配置数据无效。’ 错误

解决办法:给目录追加 IIS_IUSRS 用户组

代码涉及调用CMD,需要管理员权限

点击应用程序池,在你使用的程序池处右键选择高级设置,进程模型——标识,在内置账户处 选择LocalSystem。