将flask应用程序部署到Apache共享主机

时间:2015-11-24 19:28:29

标签: python apache deployment flask cgi

我正在尝试在Apache共享托管服务器中部署一个简单的烧瓶应用程序。

我不确定这里有什么问题。

我现在卡在.cgi文件中。

烧瓶app - hello.py:

#!/usr/bin/python

from flask import Flask
app = Flask(__name__)

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

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

myapp.cgi文件:

#!/usr/bin/python  

import os
from wsgiref.handlers import CGIHandler
from hello import app


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目录

相同的cgi-bin有一个名为myenv的目录 - 它是我创建的virtualenvvirtualenv处于有效状态。

现在,

我导航到cgi-bin目录并运行 -

 python hello.py

我明白了:

* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

所以这很好。现在我正在运行myapp.cgi文件:

python myapp.cgi

我明白了:

Status: 301 MOVED PERMANENTLY
Content-Type: text/html; charset=utf-8
Content-Length: 251
Location: http://127.0.0.1:5000/

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>Redirecting...</title>
<h1>Redirecting...</h1>
<p>You should be redirected automatically to target URL: <a href="http://127.0.0.1:5000/">http://127.0.0.1:5000/</a>.  If not click the link.

如何将此状态设置为200 OK, 请建议。

谢谢!

2 个答案:

答案 0 :(得分:0)

我认为在cgi的帮助下,你对apache如何使用烧瓶有两大误解。

  1. Apache使用系统directorys作为python解释器。实际上,您可以更改sys.path Like here descriped。但这远非理想。

  2. 您不必为您的cgi文件调用python。当您正确配置

  3. 时,服务器将执行此操作

    in the cgi doc of flask是让服务器使用cgi文件的一些方法。

    由于您说您希望它在共享主机上传,因此您需要的.htaccess文件是最常用的方式,因为大多数服务只允许您使用公共目录。在这种情况下,您还必须使用python在服务器上的共享托管服务器,或者希望安装python以及您需要的所有软件包,因为您无法自行安装任何软件包。

    您可以尝试changing of the interpreter path,但如果可以在共享托管上使用,我没有经验。

答案 1 :(得分:0)

我必须在import os from wsgiref.handlers import CGIHandler from hello import app CGIHandler().run(app) 文件中进行一些更改。以下是最终文件。

hello.py

并在我的import os import sys sys.path.insert(0, '/home/username/public_html/cgi-bin/myenv/lib/python2.6/site-packages') 文件中添加了这些行:

{{1}}

请参阅 - https://medium.com/@mohdejazsiddiqui/deploy-flask-app-in-apache-shared-hosting-5b3c82c8fd5e