在 Ubuntu 14.04 VPS (Digital Ocean) 上部署 Flask 应用程序的问题
Posted
技术标签:
【中文标题】在 Ubuntu 14.04 VPS (Digital Ocean) 上部署 Flask 应用程序的问题【英文标题】:Issues with Deploying Flask app on Ubuntu 14.04 VPS (Digital Ocean) 【发布时间】:2014-06-20 13:11:13 【问题描述】:我在本地开发了一个很棒的 Flask 应用程序。现在似乎无法在我的一生中部署。
我收到带有以下错误日志的内部服务器错误:
[2014 年 5 月 3 日星期六 22:24:11.355281] [:error] [pid 17560:tid 139814473037568] [client 68.40.196.121:52221] mod_wsgi (pid=17560): Target WSGI script '/var/www/dhh/dhh. wsgi' 不能作为 Python 模块加载。 [2014 年 5 月 3 日星期六 22:24:11.355380] [:error] [pid 17560:tid 139814473037568] [client 68.40.196.121:52221] mod_wsgi (pid=17560): 处理 WSGI 脚本'/var/www/dhh/ 时发生异常dhh.wsgi'。 [2014 年 5 月 3 日星期六 22:24:11.355467] [:error] [pid 17560:tid 139814473037568] [client 68.40.196.121:52221] Traceback(最近一次通话最后): [2014 年 5 月 3 日星期六 22:24:11.355541] [:error] [pid 17560:tid 139814473037568] [client 68.40.196.121:52221] 文件“/var/www/dhh/dhh.wsgi”,第 7 行,在 [Sat May 03 22:24:11.355754 2014] [:error] [pid 17560:tid 139814473037568] [client 68.40.196.121:52221] from dhh.app import app as application [2014 年 5 月 3 日星期六 22:24:11.355815] [:error] [pid 17560:tid 139814473037568] [client 68.40.196.121:52221] ImportError: No module named dhh.app当前文件结构树:
/dhh |--/应用 |--------/静态 |--------/模板 |--------__init__.py |--------views.py |--/烧瓶 |--------/bin |--------/包括 |--------/库 |--------/本地 |--/tmp相关文件
__init__.py
views.py
/etc/apache2/sites-available/dhh.conf
ServerName davidhagan.me
ServerAdmin david@davidhhagan.com
WSGIScriptAlias / /var/www/dhh/dhh.wsgi
Order allow,deny
Allow from all
Alias /static /var/www/dhh/dhh/app/static
Order allow,deny
Allow from all
ErrorLog $APACHE_LOG_DIR/error.log
LogLevel warn
CustomLog $APACHE_LOG_DIR/access.log combined
dhh.wsgi
虽然这是一个非常空的应用程序版本,但它似乎导致了错误。我确信这是如何设置 apache 服务器的一个简单错误,但无法通过其他 SO Q/A 弄清楚。我不仅想知道如何解决这个问题,还想知道为什么会这样!
更新/解决方案
我最终需要更改路径以及调用模块的方式。
sys.path.insert(0, "/var/www/dhh/")
变成
sys.path.insert(0, "/var/www/dhh/dhh/")
和
从 dhh.app 导入应用程序作为应用程序
变成
从应用导入应用作为应用
【问题讨论】:
这可能是 How to solve import errors while trying to deploy Flask using WSGI on Apache2 的副本——要记住的关键是 Python 导入了它可以在sys.path
(和 a few other places)中找到的内容——如果你的应用不在 Python 的 @ 987654329@它不会找到它。
感谢链接,由于某种原因,我搜索时没有弹出该问题。结合下面的答案,我得到了它的工作。更新的问题。
【参考方案1】:
代替:
from dhh.app import app as application
使用:
from app import app as application
【讨论】:
不幸的是,更改此设置在错误日志中留下了相同的错误。 推测您可能没有重新启动 Apache,因为如果错误仍然准确引用“从 dhh.app 导入应用程序作为应用程序”,那么它没有看到代码更改。以上是关于在 Ubuntu 14.04 VPS (Digital Ocean) 上部署 Flask 应用程序的问题的主要内容,如果未能解决你的问题,请参考以下文章