1

我正在尝试使用 apache2 和 mod_wsgi 运行一个基本的 helloworld,但是按照烧瓶文档中的教程进行操作,我得到的只是错误 500。

一切都在 /var/www/myapp

我的应用程序.wsgi

from yourapplication import app as application

/etc/apache2/site-availables/default

<VirtualHost *:80>
ServerName mydomain

WSGIDaemonProcess myap user=web group=www-data  threads=5
WSGIScriptAlias / /var/www/mydomain/myap.wsgi

<Directory /var/www/myapp>
    WSGIProcessGroup myap
    WSGIApplicationGroup %{GLOBAL}
    Order deny,allow
    Allow from all
</Directory>

hello.py(烧瓶应用程序)

#!/usr/bin/env python
from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def hello():
    return render_template('hello.html')

 if __name__ == '__main__':
     app.run()
4

2 回答 2

2

首先,您应该配置某种日志记录,以便查看 500 响应背后的实际异常。

根据您的代码,当您尝试导入appfromyourapplication而不是hello. 尝试:

from hello import app as application

如果您在此处发布的内容与您的服务器上的内容相匹配,您还有几个地方可以使用myap而不是。myapp无论哪种方式,记录您的错误都应该确认它。

于 2012-06-18T19:41:29.747 回答
2

我注意到 3 件事:

  1. 为您的 .wsgi 和 .py 使用相同的名称
  2. 在 .wsgi 模块中导入自己的程序
  3. 您在 apache 配置中将 myapp 拼错为 myap.wsgi

在尝试部署到 Apache 之前,请确保您的代码使用 Flask 的网络服务器工作。您的最终代码应该看起来像这样才能工作:

你好.wsgi

import sys
sys.path.insert(0, '/path/to/your/application')
from hello import app as application

httpd.conf

<VirtualHost *:80>
ServerName mydomain

WSGIDaemonProcess myapp user=web group=www-data  threads=5
WSGIScriptAlias / /var/www/mydomain/myapp.wsgi

<Directory /var/www/mydomain>
    WSGIProcessGroup myapp
    WSGIApplicationGroup %{GLOBAL}
    Order deny,allow
    Allow from all
</Directory>

最后,如果发生任何错误,您可以在 Apache 的文件夹中的 Logs/error_log 中跟踪它们。正如 Graham 所说,在 Flask 中打开调试模式,您将在应用程序中看到任何错误,并在此处更好地解释。基本上你只需要在你的 hello.py 中改变它:

if __name__ == '__main__':
    app.run(debug= True)
于 2014-07-15T18:34:44.917 回答