gpt4 book ai didi

python - 在 Windows 上使用 FastCgiModule 设置 Python 和 Flask 时出现 500 Internal Server Error

转载 作者:太空狗 更新时间:2023-10-29 21:06:53 25 4
gpt4 key购买 nike

有人能用 IIS 设置 Python 吗?一直试图弄清楚,但它不起作用,这让我发疯。我看到了很多例子,但我无法让它发挥作用。


这是我的设置


  • Windows 2008R2
  • IIS 7.5 (7.5.7600.16385)
  • wfastcgi.py (2.2.0)
  • flask (0.10.1)
  • python (3.5.1)

Python + Flask 网络应用之路

C:\inetpub\wwwroot

以下是我遵循的步骤:

  1. 确保安装了 CGI 窗口功能。
  2. 在 IIS 管理器中,突出显示 Web 服务器,并在 FastCGI 设置中添加了一个具有以下值的应用程序:

    Full Path: C:\python35\python.exe

    Arguments: C:\inetpub\wwwroot\wfastcgi.py

    Environment Variable Collection:

    PYTHONPATH: C:\inetpub\wwwroot\
    WSGI_HANDLER: app.app
    WSGI_LOG: C:\logs\app.txt
  3. 创建了一个名为 MyWebSite 的网站,指向 C:\inetpub\wwwroot

  4. 在网站的处理程序映射设置中,为 FastCgiModule 添加了一个模块映射:

    Request path: *
    Module: FastCgiModule
    Executable: C:\python35\python.exe|C:\inetpub\wwwroot\wfastcgi.py
    Name: FlaskHandler

在网络上找到的使用 Flask 的简单 Python 应用程序,并将其添加到网络根文件夹中。所以在 C:\inetpub\wwww 中只有 3 个文件:app.pyweb.configwfastcgi.py

web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appSettings>
<add key="PYTHONPATH" value="" />
<add key="WSGI_HANDLER" value="app.app" />
<add key="WSGI_RESTART_FILE_REGEX" value="(?i).*\.(py|cnf|config)$" />
</appSettings>
<system.webServer>
<handlers>
<add name="FlaskHandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\python35\python.exe|C:\inetpub\wwwroot\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" />
</handlers>
</system.webServer>
</configuration>

app.py

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
return "Hello from FastCGI via IIS!"

if __name__ == "__main__":
app.run()

applicationHost.config:

全局模块部分:

<add name="FastCgiModule" image="%windir%\System32\inetsrv\iisfcgi.dll" />

模块部分:

<add name="FastCgiModule" lockItem="true" />

系统网络服务器部分:

<section name="fastCgi" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
...
<fastCgi>
<application fullPath="C:\Python35\python.exe" arguments="C:\inetpub\wwwroot\wfastcgi.py">
<environmentVariables>
<environmentVariable name="PYTHONPATH" value="C:\inetpub\wwwroot\" />
<environmentVariable name="WSGI_HANDLER" value="app.app" />
<environmentVariable name="WSGI_LOG" value="c:\logs\my_log.txt" />
</environmentVariables>
</application>
</fastCgi>

所以有些原因它没有按预期工作。

这就是我遇到的情况:

HTTP Error 500.0 - Internal Server Error

C:\python35\python.exe - The FastCGI process exited unexpectedly

我尝试过的东西。

似乎没有正确调用处理程序的 scriptProcessor。它似乎确实被调用了,因为当我将值更改为其他值时,我得到一个错误:

HTTP Error 500.0 - Internal Server Error
<handler> scriptProcessor could not be found in <fastCGI> application configuration

我认为这是一个权限问题,所以我确保 NETWORK SERVICE 帐户具有读取和执行权限。我什至给了每个人帐户完全控制。我认为 NETWORK SERVICE 是需要许可的帐户。

我在 app.py 中添加了日志记录以注销调试信息。我没有得到任何能够写出到日志文件的日志信息。我不确定 wfastcgi.py 如何使用 IIS 配置,即使我将它添加到 web.config 来设置日志文件的位置。也许如果 scriptProcessor 实际上被调用,它最终会设置它。但是查看代码似乎使用了系统环境变量,所以我只是将 WSGI_LOG 值添加为操作系统环境变量。仍未将调试信息记录到日志文件。

所以我尝试了直接在命令行上以 wfastcgi 文件作为参数运行 python 可执行文件,它似乎按预期工作,进入 wfastcgi while 循环 并等待请求。它还将调试信息记录到日志文件中。

python.exe c:\inetpub\wwwroot\wfastcgi.py

当我运行 python 服务器时,当我在浏览器中导航到 localhost:8081 时它会工作,所以我怀疑这是一个配置问题。

python app.py runserver 0.0.0.0:8081

所以这是怎么回事。我没主意了。任何帮助将不胜感激。

谢谢!这让我抓狂。

最佳答案

根据描述,您似乎需要对 IIS 进行一些配置更改。我在 IIS 7.5 上有以下配置设置,并使用 FastCgiModule 运行 Python Flask。以下是您可以采取的步骤:

  1. 打开 IIS 管理器r。在左 Pane 中,单击“服务器名称”。然后在中间 Pane 中双击“FastCGI 设置”。您需要单击右侧 Pane 中的 Actions >> Add 并进行两项设置。我有 Python 2.7,对于你的情况,你必须输入 Python 3.5 的路径

enter image description here

  1. 在 IIS“添加网站”上发布网站。对于下面的截图,站点名称是“pyprojects”,内容发布到物理文件夹“C:\inetpub\wwwroot\pyprojects”

enter image description here

  1. 选择左侧的站点名称并双击“处理程序映射”。在右 Pane 中的“操作”下,单击“添加模块映射”并输入

    • 请求路径:handler.fcgi
    • 模块:FastCgiModule
    • 可执行文件:C:\Python27\python.exe|C:\Python27\Scripts\wfastcgi.py(Python版本具体路径)
    • 名称:Python FastCGI

enter image description here

  1. 再次选择左侧的站点名称。现在双击应用程序设置。对于现有配置,%ROOTDIR% 需要替换为 PYTHONPATHWSGI_ALT_VIRTUALENV_ACTIVATE_THIS 的部署目录.

enter image description here

  1. 浏览您的网站

希望它能对您有所帮助,并为以后遇到同样问题的人节省一些时间。

关于python - 在 Windows 上使用 FastCgiModule 设置 Python 和 Flask 时出现 500 Internal Server Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36744531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com