【问题标题】:2 IIS Flask sites on Windows Server - Only 1 runsWindows Server 上的 2 个 IIS Flask 站点 - 仅运行 1 个
【发布时间】:2021-10-17 19:43:44
【问题描述】:

Windows Server 数据中心 2019 Python 3.7.6

我在 IIS 上配置了 2 个站点。

mysite1 端口 9090:使用 VSCode 运行并在浏览器中输入 URL

  1. 从 VSCode 运行
  2. 在浏览器中输入网址:###.###.###.###:9090

mysite2 端口 9566:仅从 VSCode 运行

  1. 从 VScode 运行。
  2. 错误 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

更多调试

  1. 我打开了失败的请求跟踪

https://docs.microsoft.com/en-us/iis/troubleshoot/using-failed-request-tracing/troubleshooting-failed-requests-using-tracing-in-iis

这些是错误和警告跟踪日志消息

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
  1. 调试帖: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


【解决方案1】:

应用程序池很奇怪。也许 site1 应用程序池的一些特殊设置是未知的。即使您手动创建新池,这些设置也不会在新池中配置。

尝试使用 appcmd 将 site1 池复制到新池中。(先停止 site1 池)

  1. 以管理员身份运行命令行。
  2. CD C:\Windows\System32\inetsrv
  3. appcmd.exe list apppool "site1 pool name" /config /xml &gt; D:\AppPoolConfig.xml
  4. appcmd.exe add apppool /name:new pool name /in &lt; D:\AppPoolConfig.xml

然后在 IIS 管理器中启动新池。让 site2 处理它。

【讨论】:

  • 复制 mysite1 的 AppPool 成功了!!我将构建更复杂的 mysite3 和 mysite4 并测试所有 4 个工作。我会在几天后发布结果。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多