仍有问题在Godaddy共享托管上部署烧瓶应用程序

时间:2016-06-08 03:47:04

标签: python .htaccess flask cgi shared-hosting

我已经尝试了一段时间在Godaddy托管服务器上部署我的烧瓶应用程序。我已经在线进行了大量搜索并跟踪了他们,但我仍然遇到问题。现在我的应用程序只显示为普通的HTML,所以我在页面上显示{{my_var}}之类的内容。我的烧瓶应用程序在本地工作,这是文件夹结构;

myApp 文件夹,其中包含用于css,javascript和图片的静态文件夹,用于我的html的模板文件夹以及myapp.py和forms.py文件位于myApp文件夹

在我的托管服务器上,我的文件夹结构是当前的; $ HOME / public_html ,其中包含index.html和base.html(index.html继承自此文件的页眉和页脚), $ HOME / public_html / cgi-bin 其中包含myapp.cgi,myapp.py和.htaccess文件。

我创建了一个cgi文件,并将其保存在public_html / cgi-bin文件夹中。该文件也可以755权限执行。这些是内容;

#!/home/username/public_html/cgi-bin/flask_app/bin/python
from wsgiref.handlers import CGIHandler
from myapp import app
import os
import cgitb; cgitb.enable()

os.environ["SERVER_NAME"] = "127.0.0.1"
os.environ["SERVER_PORT"] = "4000"
os.environ["REQUEST_METHOD"] = "GET"
os.environ["SERVER_PROTOCOL"] = "http/1.1"

CGIHandler().run(app)

注意我文件上的shebang是我的virtualenv的路径,我安装了flask。 python的版本是v2.7 我也有我的主要烧瓶应用程序(myapp.py也是可执行的,具有755权限)文件,路由和内容如下;

#!/home/username/public_html/cgi-bin/flask_app/bin/python
import os
import sys

sys.path.insert(0, '/home/aofadero/public_html/cgi-bin')#path to myapp.py

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def home():
    return render_template("index.html")


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

此文件也在我的public_html / cgi-bin文件夹中。我还有一个.htaccess文件,其中包含以下内容;

AddHandler cgi-script .cgi .py
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(/home/username/public_html/cgi-bin/myapp.cgi)
RewriteRule ^(.*)$ /home/username/public_html/cgi-bin/myapp.cgi/$1 [L]

现在这个.htaccess文件目前在我的public_html / cgi-bin文件夹中,因为如果我将它放在public_html文件夹中,我会收到500错误消息。我没有得到错误的唯一一次是.htaccess文件在cgi-bin文件夹中。我做过的一些研究表明将它放在cgi-bin文件夹中,其他人说在public_html文件夹中。我发现它只适用于我在cgi-bin文件夹中。如果我这样做./myapp.cgi我收到以下错误;

Status: 404 NOT FOUND
Content-Type: text/html
Content-Length: 233

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>404 Not Found</title>...

任何人都可以帮助我,因为我已经尝试了我自己可以做的一切。现在我只是得到普通的html,并没有显示任何烧瓶组件。感谢

2 个答案:

答案 0 :(得分:0)

我有类似的问题。我了解 index.htm 文件必须放在 public_html ,但是当您尝试执行 render_template(“index.htm”)时, Flask将在 templates 文件夹中查找此文件。渲染实际上并未执行。 index.htm 文件将始终作为默认页面显示在浏览器上。你能找到解决方案吗?

答案 1 :(得分:0)

您无需在public_html中包含Python脚本。如果您转到Cpanel主页并搜索Python。从那里,您可以创建一个Python应用程序,该应用程序将使您可以指导您的网站运行Python脚本。

Application root = python存储文件夹的路径。我将我的文件存储在私有html根目录下的Python文件夹中。

应用程序网址=要获取该脚本,您需要在浏览器中输入什么网址。

应用程序启动文件= Python脚本的名称。

应用程序入口点= Python脚本中的可调用对象(在您的情况下为应用程序)。

有关此过程的演练,请参见此处的视频:https://www.youtube.com/watch?v=xFxL7Mvut6g&ab_channel=Hob-iZadeAdemEfendi