在共享Web托管上将Flask部署为CGI

时间:2014-11-10 10:57:13

标签: python .htaccess flask cgi

我想部署小型Flask应用程序。我在bigrock.com上购买了域名和托管服务。 我写了一个小的模拟应用来测试我的Flask应用程序是否可以用作CGi。 我使用了以下配置:

档案:/home/USERNAME/public_html/cgi-bin/cgi.cgi

#!/usr/bin/env 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'] = '5000'
os.environ['REQUEST_METHOD'] = 'GET'
os.environ['PATH_INFO'] = ""
CGIHandler().run(app)

档案:/home/USERNAME/public_html/cgi-bin/myapp.py

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "This is Hello World!\n"

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

档案:/home/USERNAME/public_html/.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /home/USERNAME/public_html/cgi-bin/cgi.cgi/$1 [L]

使用ssh会话作为./cgi.cgi

运行cgi.cgi

给出以下输出:

Status: 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 21

This is Hello World!

还将myapp.py作为

运行
  

python myapp.py

激活开发服务器:

Running on http://127.0.0.1:5000/

现在,无论我何时访问我的网站:

www.mysite.com

www.mysite.com/cgi.cgi

www.mysite.com/cgi-bin/cgi.cgi

我收到500内部服务器错误。

当我使用Python hello world cgi脚本时,它运行得很好:

#!/usr/bin/env python
print "Content-Type: text/html"
print
print """\
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
"""

我知道一再提出类似的问题,但没有一个问题得到妥善回答,或者答案似乎无法解决。

1 个答案:

答案 0 :(得分:0)

经过多次调整后,我终于开始工作了。 谢谢你们。

我认为这样做了: 我将所有文件上传到/ scgi-bin并编辑.htaccess以反映相同的内容。