[英]Flask website -- 500 Internal Server Error
我一生都无法弄清楚为什么我尝试启动的这个烧瓶应用程序不起作用。 我在 5 美元的 Digital Ocean 液滴上运行它。 这是(希望)您需要了解的所有信息:
目录布局(包含在/var/www/
):
FlaskApp
FlaskApp
__init__.py
static
templates
venv
flaskapp.wsgi
__init__.py
:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "yay it worked"
if __name__ == "__main__":
app.run()
flaskapp.wsgi
:
#!/usr/bin/python
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/FlaskApp/")
from FlaskApp import app as application
application.secret_key = 'Add your secret key'
FlaskApp.conf
(包含在/etc/apache2/sites-availble
):
<VirtualHost *:80>
ServerName the.ip.blah.blah
ServerAdmin admin@mywebsite.com
WSGIScriptAlias / /var/www/FlaskApp/flaskapp.wsgi
<Directory /var/www/FlaskApp/FlaskApp/>
Order allow,deny
Allow from all
</Directory>
Alias /static /var/www/FlaskApp/FlaskApp/static
<Directory /var/www/FlaskApp/FlaskApp/static/>
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
venv
是通过在/var/www/FlaskApp/FlaskApp/
调用virtualenv venv
创建的。 在使用source venv/bin/activate
进入venv
后,我使用pip install flask
flask 在venv
中pip install flask
。
Wsgi 已启用 ( a2enmod wsgi
)。 FlaskApp.conf 已启用( a2ensite FlaskApp
)。 最后,我多次重新启动 apache,但都没有成功( service apache2 restart
)。
我下面这个关于如何建立一个烧瓶应用指南。
这是我的错误的屏幕截图:
任何有关使其工作的帮助将不胜感激。
提前致谢。
编辑:我发现了问题: ImportError: No module named flask
。 这有点奇怪,因为我确实在 virtualenv pip install flask
执行了pip install flask
。 当我只是在 virtualenv 中打开一个 python 控制台会话并尝试import flask
我没有收到任何错误,所以不确定发生了什么。
另外,这个应用程序如何使用venv
? 我没有看到它在任何地方被访问,那么它是如何使用它的? 也许这就是我收到ImportError
原因,因为我只在 virtualenv 上安装了 Flask 但它没有被使用?
问题本质上是您在虚拟环境中安装 Flask,可能还有其他需要的库,但是 python(wsgi 接口)与系统 python 一起运行,而系统 python 没有安装这些额外的库。
我最近在 Apache 上运行 Python 的经验很少(我来自 mod_python 和 cgi 的时代),但显然处理这个问题的一种方法是使用site
包将site-packages
从您的 venv 添加到执行的 Python . 这将出现在您的.wsgi
文件中。
import site
site.addsitedir('/path/to/your/venv/lib/pythonX.X/site-packages')
我认为解决您的问题的最佳方法是添加告诉您的 wsgi 文件有关您的虚拟环境并激活它:将以下代码放入您的flaskapp.wsgi
activate_this = '/path/to/env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
并重新启动apache。 希望它会有所帮助! 在这里找到更多
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.