我正在尝试使用apache2和mod_wsgi运行一个基本的helloworld,但是根据flask文档中的教程,我得到的是一个错误500.
一切都在/ var / www / myapp
中myapp.wsgi
from yourapplication import app as application
的/ etc / apache2的/位点可获取/默认
<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()
答案 0 :(得分:2)
首先,您应该配置某种logging,这样您就可以看到500响应背后的实际异常。
根据您的代码,当您尝试从app
而不是yourapplication
导入hello
时,可能会在WSGI文件中生成ImportError。尝试:
from hello import app as application
如果您在此处发布的内容与您服务器上的内容相符,那么您还可以使用myap
代替myapp
。无论哪种方式,记录您的错误都应该确认。
答案 1 :(得分:2)
我注意到3件事:
在尝试部署到Apache之前,请确保您的代码使用Flask的Web服务器。 你的最终代码看起来应该是这样的:
hello.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)