iis python.exe -FastCGI进程意外退出

b1payxdu  于 2022-11-12  发布在  Python
关注(0)|答案(4)|浏览(616)

我已经阅读了所有关于这个问题的帖子,在这里和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操作系统
  • 互联网信息服务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++生成工具。
而且IIS的配置已经通过“共享配置”从我的机器共享到了服务器,所以一切都是一样的,我只是在config文件中改编了一些路径。
我也试着在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>
3ks5zfa0

3ks5zfa01#

我的问题是,我可以通过cmd/PowerShell运行Flask应用程序,但当我通过IIS运行它时,它返回上述错误,错误代码为0x 00000067。我尝试了很多不同的方法,包括设置权限等。最后,我通过重新安装Python(在我的例子中是3.9.6)解决了这个问题。我为所有用户安装了它(通过高级选项),在文件夹C:\Python39(我很小心,没有把它放在C:\Program Files中,因为有些人报告了双引号的问题)。

ovfsdjhp

ovfsdjhp2#

我试图安装Windows C以外的其他路径。我得到了同样的错误。然后我通过进行以下设置成功地将其安装在E驱动器上。
您可以查看以下链接
https://mtuseeq.medium.com/how-to-deploy-flask-app-on-windows-server-using-fastcgi-and-iis-73d8139d5342

8ulbf1ek

8ulbf1ek3#

您可以按照以下步骤在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)下面是我 flask 例子:

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。
右键单击服务器名称并选择“添加站点”。

请输入站点名称物理路径和站点绑定。
添加站点后,请选择站点名称,然后从中间窗格中选择处理程序Map功能。

单击“添加模块Map”

可执行文件路径值:
C:\Python37-32\python.exe| C:\Python37-32\数据库\网站包\wfastcgi.py
x1c4d 1x指令集
单击“请求限制”。确保取消选中“仅当请求Map到时才调用处理程序:“复选框:

单击此处的“是”:


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

从操作窗格中单击添加。


指令集
设置PYTHONPATH变量(即站点文件夹路径):


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


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

注意:不要忘记为站点文件夹与python文件夹分配iis_iusrs与iusr权限.

50pmv0ei

50pmv0ei4#

检查您的机器中是否安装了python的生产版本和最新安装的python版本,您必须安装产品版本(您开发Web应用程序时使用的版本)并按原样配置fastcgi和处理程序。

相关问题