【问题标题】:python.exe - The FastCGI process exited unexpectedlypython.exe - FastCGI 进程意外退出
【发布时间】:2020-05-19 10:27:55
【问题描述】:

我已经阅读了关于这个问题的所有帖子,在这里和 IIS 论坛上,也把它放到了谷歌的第二页......但仍然无法让它工作。

我想在 Windows server 2016 上的 IIS 中运行 Flask/Python 应用程序,但我不断收到此错误:

HTTP Error 500.0 - Internal Server Error
C:\Program Files\Python38\python.exe - The FastCGI process exited unexpectedly

Detailed Error Information:
Module     FastCgiModule
Notification       ExecuteRequestHandler
Handler    FastCGI-Python
Error Code     0x00000002

我设法让它在我的机器(Windows 10)上运行,但在服务器上不行。

环境

  • Windows Server 2016
  • IIS 10
  • Python 3.8
  • wfastcgi 3.0.0
  • Flask 1.1.1

我尝试了不同版本的 Python(3.6、3.7、3.8)。在我的 Windows 10 上,它运行 Python 3.7 并且运行良好。我不能使用 Python 3.4.2,正如 posts 之一所建议的那样,因为 Flask 在 3.5 或更高版本上运行,并且显然 wfastcgi 在我的机器上与 Python 3.7 配合得很好。

我授予了对我的应用程序池以及我的 Web 应用程序文件夹和 Python 文件夹上的 IIS_IUSRS 的完全权限。

我也安装了 Microsoft C++ Build Tools。

并且IIS的配置已经通过“共享配置”从我的机器共享到服务器,所以一切都是一样的。我只是在配置文件中调整了一些路径。

我还尝试在 Flask WSGI 服务器上运行 Web 应用程序进行开发,它运行良好。

有人知道我还能做什么吗?任何建议都会很好。

谢谢:)

编辑:我添加了来自事件查看器的警告消息。

+ System 
- EventData 
  Path C:\inetpub\history\CFGHISTORY_0000000051 
   12000780 
--------------------------------------------------------------------------------
Binary data:
In Words
0000: 80070012    
In Bytes
0000: 12 00 07 80      

编辑:添加 web.config 文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <remove name="FastCGI-Python" />
            <add name="FastCGI-Python" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Program Files\Python38\python.exe|C:\Program Files\Python38\lib\site-packages\wfastcgi-3.0.0-py3.8.egg\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" />
        </handlers>
        <security>
            <authentication>
                <windowsAuthentication enabled="true" />
                <anonymousAuthentication enabled="false" />
            </authentication>
        </security>
    </system.webServer>
    <appSettings>
       <add key="PYTHONPATH" value="C:\inetpub\wwwroot\flaskr" />
       <add key="WSGI_HANDLER" value="__init__.app" />
       <add key="WSGI_LOG" value="C:\inetpub\wwwroot\flaskr\wfastcgi.log" />
    </appSettings>
</configuration>

【问题讨论】:

  • 听起来好像有访问冲突异常。事件查看器中的详细错误信息是什么?
  • 嗨@JokiesDing,在事件查看器中只有一条警告消息。我会在帖子的编辑中发布它。

标签: python iis flask windows-server-2016 wfastcgi


【解决方案1】:

您可以按照以下步骤在 iis 中配置 python flask 应用程序:

1)首先,你需要在你的服务器上安装python、wfastcgi和flask。

您可以从以下链接下载python:

https://www.python.org/downloads/

注意:如果可能请使用python 3.6以上的版本。

2) 安装 python 后安装 wfastcgi。以管理员身份运行命令提示符并运行以下命令:

pip install wfastcgi

wfastcgi-enable

3)下面是我的烧瓶示例:

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
    return "Hello from FastCGI via IIS!"
if __name__ == "__main__":
    app.run()

4)在创建应用程序以运行它后,使用以下命令:

python app.py

5)启用iis的cgi功能:

6)打开 iis。

右键单击服务器名称并选择添加站点。

输入站点名称物理路径和站点绑定。

添加站点后,选择站点名称并从中间窗格中选择处理程序映射功能。

点击“添加模块映射”

可执行路径值:

C:\Python37-32\python.exe|C:\Python37-32\Lib\site-packages\wfastcgi.py

点击“请求限制”。确保“仅当请求映射到时才调用处理程序:”复选框未选中:

点击“是”:

7)现在返回并选择应用程序设置功能。

从操作窗格中单击添加。

设置 PYTHONPATH 变量(这是您的站点文件夹路径):

还有 WSGI_HANDLER(我的 Flask 应用程序名为 app.py,因此值为 app.app - 如果您的应用程序名为 site.py,则为 site.app 或类似名称):

8)单击“确定”并浏览到您的站点。

注意:不要忘记为site文件夹和python文件夹分配iis_iusrs和iusr权限。

【讨论】:

  • 您好,谢谢您的回答。我已经完成了所有这些步骤两次,但没有解决我的问题。
  • @MirnesaKovacevic 你能分享你的示例代码和 web.config 文件吗?你在使用虚拟环境吗?安装时是否选择为所有用户安装?确保您的应用程序池正在使用应用程序池身份,并且匿名身份验证已启用,其余身份验证已禁用。
  • 我使用的是全局python环境;是的,我选择为所有用户安装。我正在使用 Windows 身份验证,其中一个已启用,其余的已禁用;我的应用程序池正在使用 LocalSystem 身份,因为它只有在使用 LocalSystem 作为身份时才能在我的机器上运行。当我可以访问服务器时,我将发布 web.config 文件。谢谢:)
  • @MirnesaKovacevic 你的主要 python 文件是什么?当你安装 python 时,你会得到类似imageDon't trust this 的提示。在 python 环境/脚本文件夹中手动检查以下 .wfastcgi-enable 和 wfastcgi-disable exe。请参考这个link
  • 问题是路径在名称“C:\Program Files”中有空格,并且 IIS 不允许在 web.config 文件中使用双引号。我直接将 Python 重新安装到“C:\Python38”,文件夹名称中没有空格。它现在有效。感谢您努力回答我。 :)
【解决方案2】:

检查你的机器上是否有python的生产版本和最新安装的python版本,你必须安装产品版本(你开发web应用程序的版本)并按原样配置fastcgi和handlers。

【讨论】:

    【解决方案3】:

    我的问题是我可以通过 cmd/PowerShell 运行 Flask 应用程序,但是一旦我通过 IIS 运行它,它就会返回上述错误,错误代码为 0x00000067。我尝试了很多不同的事情,包括设置权限等。我终于通过重新安装 Python(在我的情况下为 3.9.6)解决了这个问题。我为所有用户安装了它(通过高级选项),在文件夹 C:\Python39 中(我小心不要把它放在 C:\Program Files 中,因为有些人报告了双引号问题)。

    【讨论】:

      猜你喜欢
      • 2017-08-02
      • 2014-05-25
      • 2020-07-18
      • 1970-01-01
      • 2012-08-13
      • 1970-01-01
      • 2018-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多