在apache上运行python flask webapp

时间:2014-09-04 20:19:27

标签: apache flask

我试图在ubuntu上的apache上运行一个烧瓶应用程序。 我在浏览器中收到此错误:

Internal Server Error

The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.

当日志级别为debug时,apache日志不会指示任何错误。 我的wsgi文件看起来像:

import sys
sys.path.insert(0, '/var/www/myflask/')
from run import app as application

我也尝试过:

from appimport app as application
没有任何运气。 如果我将wsgi文件内容更改为:

def application(environ, start_response):
    status = '200 OK'
    output = 'Hello World!'

    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]

然后它的工作原理。 另外,如果我在python控制台中运行我的wsgi的3行,它不会抛出任何异常。 我有一个run.py scrpt可以用它自己的独立服务器运行应用程序,如下所示:

from flask import Flask
app = Flask(__name__)
from app import app
if __name__ == "__main__":
    app.run(host='0.0.0.0', port=5000)

这是文件系统:

├── app
│   ├── db_access.py
│   ├── db_access.pyc
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── static
│   ├── templates
│   │   └── index.html
│   ├── views.py
│   └── views.pyc
├── __init__.py
├── __init__.pyc
├── myapp.wsgi
├── requirements.txt
├── run.py
├── run.pyc

如何让它在apache上运行? 我已经读过了: http://flask.pocoo.org/docs/0.10/deploying/mod_wsgi/

http://fosshelp.blogspot.in/2014/03/how-to-deploy-flask-application-with.html

1 个答案:

答案 0 :(得分:0)

我设法让它发挥作用。 我没有在wsgi中定位run.py,而是将具有路由标记的views.py作为目标。 另一个问题是我的sqlite数据库没有适当的权限导致应用程序失败,但你不会得到任何错误。 要查看错误,我必须添加:

WSGIRestrictStdout Off

到顶部 /etc/apache2/sites-available/mydomain.com 并添加

sys.stdout = sys.stderr

到我的wsgi并使用python print命令添加异常句柄。