在 Xampp 中使用 cgi 脚本部署 Flask 应用程序

Posted

技术标签:

【中文标题】在 Xampp 中使用 cgi 脚本部署 Flask 应用程序【英文标题】:Deploying a Flask application using cgi script in Xampp 【发布时间】:2018-07-28 06:05:40 【问题描述】:

我正在尝试在 XAMMP 上部署一个简单的 Hello World script。

如果这里的链接被删除是application.py:

from flask import Flask 
app = Flask(__name__)
@app.route("/")
def hello():
    return "Hello World!"

我的applciation.cgi脚本如下:

#!C:/Users/Simon/Documents/Python/Scripts/python.exe
from wsgiref.handlers import CGIHandler
from application import hello
CGIHandler().run(app)

C:/Users/Simon/Documents/Python/是我的虚拟python环境的位置。

我已经通过以下方式配置了 XAMMP (httpd.conf):

AddHandler cgi-script .py
ScriptInterpreterSource Registry-Strict

我在所有情况下都保留了这个配置。

我按照in the documentation的建议尝试了以下操作:

ScriptAlias /Network C:/Users/Simon/Documents/Network/application.cgi

这失败了,我按照here 中的建议尝试了这个:

<Directory "C:/Users/Simon/Documents/Network">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require all granted
</Directory>

Alias /Network "C:/Users/Simon/Documents/Network"

在所有情况下都返回了 Error 500 Server error!

我不确定是否需要它,但这是access.log 中显示的相关错误:

192.168.0.8 - - [17/Feb/2018:13:21:12 +0000] "GET / HTTP/1.1" 500 1100 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/64.0.3282.167 Safari/537.36"

如果有什么遗漏请告诉我,我会补充的。

如何正确配置我的服务器以便我可以运行此脚本?


application.cgi 有错误:

#!C:/Users/Simon/Documents/Python/Scripts/python.exe
from wsgiref.handlers import CGIHandler
from application import hello
CGIHandler().run(hello)

然而它仍然返回一个错误:

发生服务器错误。请联系管理员。

【问题讨论】:

这个任务你完成了吗? @VaibhavkumarChaudhary 不幸的是没有。我最终放弃了它。 【参考方案1】:

您在 CGI 脚本中导入了错误的内容;结果app 没有定义。您应该导入它而不是 hello

【讨论】:

这是一个严重的错误。我现在收到另一个错误:A server error occurred. Please contact the administrator. 你知道是什么原因造成的吗? 现在你改错了。您应该导入app 并将其传递给run() 现在尝试from application import appCGIHandler().run(app)。我收到 404 错误(未找到错误),您无法告诉我是否应该使用 ScriptAlias /Network C:/Users/Simon/Documents/Network/application.cgi 或其他列出的(或两者)

以上是关于在 Xampp 中使用 cgi 脚本部署 Flask 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 XAMPP 从 Python cgi 脚本写入 PYTHON_EGG_CACHE

如何在ubuntu中使用xampp运行python脚本

XAMPP-python脚本执行

如何在 apache Web 服务器上运行 cgi 脚本

在 XAMPP (WINDOWS 8.1) 中作为脚本在 PHP 中运行 Python

无法将其他flas动画片段访问到动作脚本3