我正在尝试在 IIS 上部署 Flask 应用程序(通常在 Nginx/Gunicorn 堆栈上执行)。
我的堆栈
我正在使用全局安装的 Python 3.7 和 Windows 10 pro 上的 IIS 10。
我尝试过
- 在 IIS 上激活 CGI 服务
- 从安装 wfastcgihttps://pypi.org/project/wfastcgi/
- 启用 wfastcgi
wfastcgi enable
(并保存配置文件的输出) - 将我的应用程序部署到
wwwroot/myapp
web.config
在该文件夹中添加myapp
如下文件:
<configuration>
<system.webServer>
<handlers>
<add name="Python FastCGI"
path="*"
verb="*"
modules="FastCgiModule"
scriptProcessor="C:\Program Files\Python37\python.exe|C:\Program Files\Python37\Lib\site-packages\wfastcgi.py"
resourceType="Unspecified"
requireAccess="Script" />
</handlers>
</system.webServer>
<appSettings>
<!-- Required settings -->
<add key="WSGI_HANDLER" value="backend.wsgi.socketio" />
<add key="PYTHONPATH" value="C:\inetpub\wwwroot\myapp" />
</appSettings>
</configuration>
socketio
是我的 Flask 应用程序的名称,当我运行 wsgi 文件“standalone”时一切正常。
- 在 IIS 中创建一个链接到该文件夹且具有正确物理路径的应用程序
在测试应用程序参数时,身份验证步骤正常,授权步骤引发警告但没有错误。
结果
当我尝试访问我的应用程序时,出现 500 HTTP 错误,并显示以下 IIS 错误代码 0x80070585。
当我“破坏”我的web.config
文件(例如删除标签关闭)时,IIS 告诉我该文件格式不正确,因此该文件是可访问的。
由于错误似乎来自 scriptProcessor,我仔细检查了C:\Program Files\Python37\python.exe
和C:\Program Files\Python37\Lib\site-packages\wfastcgi.py
是否存在。IIS 是否存在访问问题?
我尝试检查 IIS 日志,但那并不是很详细。我只有 HTTP 请求日志。
我应该去哪里挖掘才能找到更多日志?
谢谢您的帮助,请注意,我对 IIS 和 Microsoft 服务器完全陌生,所以我可能错过了一些重要的东西。
答案1
由于微软似乎放弃了这个堆栈,唯一认真的解决方案是切换到积极维护的解决方案,如 Nginx 或 Apache。感谢 @Lex Li 提供的通信链接。