【问题标题】:Deploying flask app to Apache shared hosting将烧瓶应用程序部署到 Apache 共享主机
【发布时间】:2015-11-24 19:28:28
【问题描述】:

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

我不确定这里出了什么问题。

我现在卡在.cgi 文件中。

烧瓶应用 - 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, 请提出建议。

谢谢!

【问题讨论】:

  • @Burhan:你能建议我吗?

标签: python apache deployment flask cgi


【解决方案1】:

我不得不对.cgi 文件进行一些更改。以下是最终文件。

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') 

参考这个 - https://medium.com/@mohdejazsiddiqui/deploy-flask-app-in-apache-shared-hosting-5b3c82c8fd5e

【讨论】:

  • 链接已失效 :(
  • @CiprianTomoiagă:更新了新链接。您可以查看here
【解决方案2】:

我认为你对 apache 如何在 cgi 的帮助下与烧瓶一起工作有两个很大的误解。

  1. Apache 使用 Python 解释器的系统目录。实际上,您可以更改 sys.path Like here descriped。但这远非理想。

  2. 您不必为您的 cgi 文件调用 python。当您正确进行配置时,服务器会这样做

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

既然您说您希望它在共享主机上上传,为您的需要编写一个.htaccess 文件将是最有前途的方式,因为大多数这些服务只允许您在公共目录中工作。在这种情况下,您还必须在服务器上使用 python 的共享主机,或者愿意安装 python 以及您需要的所有包,因为您不能自己安装任何包。

你可以试试changing of the interpreter path,但我不知道这是否适用于共享主机。

【讨论】:

    猜你喜欢
    • 2013-08-18
    • 1970-01-01
    • 2014-11-13
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多