关注这个不太受欢迎的问题:OpenStack & NGINX+uWSGI
我已经开始使用 well... 构建我的仪表板节点……当然是 NGINX 和 uWSGI,但我现在面临路径问题。
实际上,uWSGI 正在正确启动进程并且 NGINX 已正确连接到它。
但是,一旦我尝试检索仪表板主页,NGINX 就会抛出一个 503 错误页面,而我的 uWSGI 实例向我显示此错误消息:
导入错误:无法导入设置“openstack_dashboard.settings”(是否在 sys.path 上?):没有名为 openstack_dashboard.settings 的模块
这不是完整的堆栈,而是它的相关部分。
关于我,这只是PythonPath的问题,但关键是我不知道如何解决这个问题。
事实上,我现在 PythonPath 是一个 env 变量,我已经在我的 root 用户上设置了这样一个:
export PYTHONPATH='/srv/www/openstack-dashboard/'
现在,我的问题是这个 env 变量似乎没有被 python 检测到或没有使用,因为 uWSGI 继续崩溃并出现以下完整堆栈:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/django/core/handlers/wsgi.py", line 219, in __call__
self.load_middleware()
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py", line 39, in load_middleware
for middleware_path in settings.MIDDLEWARE_CLASSES:
File "/usr/lib/python2.7/dist-packages/django/utils/functional.py", line 184, in inner
self._setup()
File "/usr/lib/python2.7/dist-packages/django/conf/__init__.py", line 42, in _setup
self._wrapped = Settings(settings_module)
File "/usr/lib/python2.7/dist-packages/django/conf/__init__.py", line 95, in __init__
raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
ImportError: Could not import settings 'openstack_dashboard.settings' (Is it on sys.path?): No module named openstack_dashboard.settings
[pid: 31409|app: 0|req: 1/1] 172.21.150.91 () {36 vars in 556 bytes} [Mon Apr 8 11:02:35 2013] GET / => generated 0 bytes in 1 msecs (HTTP/1.1 500) 0 headers in 0 bytes (0 switches on core 0)
所以,如果有人知道解决这个问题的方法,我会很乐意阅读它;-)
您应该花点时间了解 pythonpath 的工作原理,这对于掌握 python(显然还有 django)至关重要。例如,您将 /srv/www/openstack-dashboard/ 添加到您的 pythonpath(我假设您已将变量设置在正确的位置),因此当询问 openstack-dashboard.settings 时,python 将搜索 /srv/www/openstack-仪表板/openstack-仪表板/settings.py。除此之外,我建议您阅读官方的 uWSGI“WSGI Quickstart”,因为它报告了如何部署新旧 Django 版本。