【发布时间】:2023-03-12 23:27:02
【问题描述】:
我一生都无法理解为什么我尝试启动的这个烧瓶应用程序不起作用。我在 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 在venv 中安装了flask。
Wsgi 已启用 (a2enmod wsgi)。 FlaskApp.conf 已启用 (a2ensite FlaskApp)。最后,我多次重启 apache,但都没有成功 (service apache2 restart)。
我正在关注this 指南,了解如何设置烧瓶应用程序。
这是我的错误的截图:
我们将不胜感激任何有关使其工作的帮助。
提前致谢。
编辑:我发现了问题:ImportError: No module named flask。这有点奇怪,因为我确实在 virtualenv 中做了pip install flask。当我在 virtualenv 中打开一个 python 控制台会话并尝试 import flask 时,我没有收到任何错误,所以不确定发生了什么。
另外,这个应用程序如何使用venv?我看不到它在任何地方都可以访问,所以它是如何使用它的?也许这就是我得到ImportError 的原因,因为我只在 virtualenv 上安装了烧瓶但它没有被使用?
【问题讨论】:
-
您是否按照错误页面的提示查看了 apache 服务器错误日志?
-
@JohnGordon 我在哪里查看 apache 服务器错误日志?
-
您可能只需更改 wsgi 文件顶部的 shebang 以指向您的 venv 的 python 二进制文件。类似
#!/some/path/to/bin/python -
要找到
correctpython的路径,激活virtualenv并运行which python -
您也可以在此处尝试“创建 wsgi 文件”下列出的内容:thecodeship.com/deployment/…。主要是您想要的
import site和site.addsitedir(...)。我非常喜欢 uwsgi + nginx 的原因之一。
标签: python flask wsgi digital-ocean