【发布时间】:2021-10-17 19:43:44
【问题描述】:
Windows Server 数据中心 2019 Python 3.7.6
我在 IIS 上配置了 2 个站点。
mysite1 端口 9090:使用 VSCode 运行并在浏览器中输入 URL
- 从 VSCode 运行
- 在浏览器中输入网址:###.###.###.###:9090
mysite2 端口 9566:仅从 VSCode 运行
- 从 VScode 运行。
- 错误 500。在浏览器中输入 URL:###.###.###.###:9566 同样来自 IIS 管理器菜单选项:浏览 *:9566
HTTP 错误 500.0 - 内部服务器错误
C:\inetpub\wwwroot\Flask\mysite2\venv\Scripts\python.exe - FastCGI 进程意外退出
详细错误信息:
模块 FastCgi模块
通知 执行请求处理程序
处理程序 Python FastCGI
错误代码 0x00000067
请求的网址 http://localhost:9566/
物理路径 C:\inetpub\wwwroot\Flask\mysite2
登录方式 匿名
登录用户 匿名
这两个站点配置了不同的 AppPools
2 个 web.config 文件
<configuration>
<system.webServer>
<handlers>
<remove name="FlaskHandler" />
<add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\inetpub\wwwroot\Flask\mysite1\venv\Scripts\python.exe|C:\inetpub\wwwroot\Flask\mysite1\venv\lib\site-packages\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" />
</handlers>
</system.webServer>
<appSettings>
<add key="WSGI_HANDLER" value="app.app" /> <!-- {name_of_file}.{name_of_flask_app}-->
<add key="PYTHONPATH" value="C:\inetpub\wwwroot\Flask\mysite1" />
<add key="WSGI_LOG" value="C:\inetpub\wwwroot\Flask\mysite1\app.log" />
</appSettings>
</configuration>
<configuration>
<system.webServer>
<handlers>
<remove name="FlaskHandler" />
<add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\inetpub\wwwroot\Flask\mysite2\venv\Scripts\python.exe|C:\inetpub\wwwroot\Flask\mysite2\venv\lib\site-packages\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" />
</handlers>
</system.webServer>
<appSettings>
<add key="WSGI_HANDLER" value="app.app" /> <!-- {name_of_file}.{name_of_flask_app}-->
<add key="PYTHONPATH" value="C:\inetpub\wwwroot\Flask\mysite2" />
<add key="WSGI_LOG" value="C:\inetpub\wwwroot\Flask\mysite1\app.log" />
</appSettings>
</configuration>
使用相同的步骤创建 mysite1 和 mysite2。
在 IIS 管理器中,我停止了 mysite1,但使用在浏览器中输入 URL 时 mysite2 没有运行。
感谢您的帮助 1
更多调试
- 我打开了失败的请求跟踪
这些是错误和警告跟踪日志消息
94. FASTCGI_UNEXPECTED_EXIT
Error
95. SET_RESPONSE_ERROR_DESCRIPTION 22:01:34.515
Warning
ErrorDescription="C:\inetpub\wwwroot\Flask\mysite2\venv\Scripts\python.exe - The FastCGI process exited unexpectedly" 22:01:34.515
96. MODULE_SET_RESPONSE_ERROR_STATUS
Warning
ModuleName="FastCgiModule", Notification="EXECUTE_REQUEST_HANDLER", HttpStatus="500", HttpReason="Internal Server Error", HttpSubStatus="0", ErrorCode="The semaphore cannot be set again.
(0x67)", ConfigExceptionInfo=""
调试帖:Python flask app on IIS not working on Windows Server 2019
我不明白运行 wfastcgi.py 的作用,但 mysite1 和 mysite2 的行为方式相同。
The "working" site, runs and does not end
C:\inetpub\wwwroot\Flask\RESTAPI_mysite1\venv\Scripts\python.exe C:\inetpub\wwwroot\Flask\mysite1\venv\lib\site-packages\wfastcgi.py
The "non-working" site, runs and does not end
C:\inetpub\wwwroot\Flask\RESTAPI_mysite2\venv\Scripts\python.exe C:\inetpub\wwwroot\Flask\mysite2\venv\lib\site-packages\wfastcgi.py
- 调试帖:Getting 500 Internal Server Error when setting up Python and Flask with FastCgiModule on Windows
这些建议不适用于 mysite2。
感谢您的帮助 2
【问题讨论】:
-
“仅从 VSCode 运行”?您是否通过 VScode 运行应用程序并报告错误?我不确定 vscode 是否可以使用 IIS 或 IIS express。但是,根据错误代码。如果 site2 在 IIS 上运行,则需要为 python 文件夹和站点文件夹分配 iusr 和 iis_user 完全权限。
-
我在 VSCode 中运行了 mysite1 和 mysite2 来验证代码是否有效。 * 测试:mysite1 和 mysite2 的权限相同。 1) IIS_IUSRS(SRV1\IIS_IUSRS):修改、读取和执行、列出文件夹内容、读取、写入。 2) IIS_AppPool\mysite1,IIS_AppPool\mysite2:读取并执行,列出文件夹内容,读取。 3)mysite2。相同的错误 500。 4) mysite2。添加了IUSR(在mysite1 上不存在):完全控制。相同的错误 500。
-
如何在 IIS 上的端口 9566 中仅使用 hello world 创建一个简单的空应用程序?如果不是权限问题并且fastcgi已经指出正确执行文件,我认为我们需要关注应用程序本身。错误代码0x00000067只能由权限和fastcgi指向文件引起。
-
1) 有没有人使用 Python 版本 >= 3.7 运行多个 IIS Flask 站点? wfastcgi 支持在 Python 3.6 版结束。 pypi.org/project/wfastcgi 2) Bruce - mysite2 应用程序是一个简单的 Hello World。
-
mysite2 在我使用 mysite1 AppPool 时有效!!我删除了 mysite2 AppPool 并创建了一个与 mysite1 的 AppPool 特性完全匹配的新 AppPool。相同的错误 500 - 不起作用。我使用了 DefaultAppPool - 同样的错误。感谢您的帮助。
标签: flask iis fastcgi wfastcgi