mid*_*lll 7 python iis flask windows-server-2016 wfastcgi
我已经阅读了有关此问题的所有帖子,在这里和 IIS 论坛上,也将其带到了 Google 上的第二页......但仍然无法让它工作。
我想在 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
Run Code Online (Sandbox Code Playgroud)
我设法让它在我的机器(Windows 10)上工作,但在服务器上不行。
环境
我尝试了不同版本的Python(3.6、3.7、3.8)。在我的 Windows 10 上,它运行 Python 3.7 并且运行良好。我无法使用 Python 3.4.2,正如其中一篇文章所建议的那样,因为 Flask 在 3.5 及更高版本上运行,并且显然wfastcgi在我的机器上与 Python 3.7 配合得很好。
我向我的应用程序池以及 Web 应用程序文件夹和 Python 文件夹上的 IIS_IUSRS 授予了完全权限。
我也安装了 Microsoft C++ 构建工具。
而且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
Run Code Online (Sandbox Code Playgroud)
编辑:添加了 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>
Run Code Online (Sandbox Code Playgroud)
您可以按照以下步骤在 iis 中配置 python Flask 应用程序:
\n\n1)首先,您需要在服务器上安装python、wfastcgi和flask。
\n\n您可以从以下链接下载Python:
\n\nhttps://www.python.org/downloads/
\n\n注意:如果可能请使用3.6以上的python版本。
\n\n2)安装python后安装wfastcgi。以管理员身份运行命令提示符并运行以下命令:
\n\npip install wfastcgi\n\nwfastcgi-enable\nRun Code Online (Sandbox Code Playgroud)\n\n3)下面是我的烧瓶示例:
\n\nfrom flask import Flask\napp = Flask(__name__)\n@app.route("/")\ndef hello():\n return "Hello from FastCGI via IIS!"\nif __name__ == "__main__":\n app.run()\nRun Code Online (Sandbox Code Playgroud)\n\n4)创建应用程序后运行它使用以下命令:
\n\npython app.py\nRun Code Online (Sandbox Code Playgroud)\n\n5)启用iis的cgi功能:
\n\n\n\n6)打开iis。
\n\n右键单击服务器名称并选择添加站点。
\n\n\n\n输入站点名称物理路径和站点绑定。
\n\n添加站点后,选择站点名称并从中间窗格中选择处理程序映射功能。
\n\n\n\n单击\xe2\x80\x9c添加模块映射\xe2\x80\x9d
\n\n\n\n可执行路径值:
\n\nC:\\Python37-32\\python.exe|C:\\Python37-32\\Lib\\site-packages\\wfastcgi.py
\n\n\n\n单击\xe2\x80\x9c请求限制\xe2\x80\x9d。确保仅当请求映射到 \xe2\x80\x9cInvoke 处理程序时:\xe2\x80\x9d 复选框未选中:
\n\n\n\n单击此处的 \xe2\x80\x9cYes\xe2\x80\x9d:
\n\n\n\n7)现在返回并选择应用程序设置功能。
\n\n\n\n从操作窗格中单击“添加”。
\n\n\n\n设置 PYTHONPATH 变量(这是您的站点文件夹路径):
\n\n\n\nWSGI_HANDLER(我的 Flask 应用程序名为 app.py,因此该值是 app.app \xe2\x80\x94,如果您的应用程序名为 site.py,则值为 site.app 或类似):
\n\n\n\n8) 单击“确定”并浏览到您的站点。
\n\n\n\n注意:不要忘记为站点文件夹和 python 文件夹分配 iis_iusrs 和 iusr 权限。
\n| 归档时间: |
|
| 查看次数: |
15620 次 |
| 最近记录: |