基于 NGINX+uWSGI 的 OpenStack

基于 NGINX+uWSGI 的 OpenStack

以下是这个不太受欢迎的问题:OpenStack 与 NGINX+uWSGI

我已经开始使用...NGINX和uWSGI来构建我的仪表板节点,但是我现在面临路径问题。

确实,uWSGI 正确启动了进程并且 NGINX 正确连接到它。

但是,当我尝试检索仪表板主页时,NGINX 会抛出 503 错误页面,并且我的 uWSGI 实例会向我显示以下错误消息:

ImportError:无法导入设置“openstack_dashboard.settings”(它在 sys.path 上吗?):没有名为 openstack_dashboard.settings 的模块

这不是完整的堆栈,而是其中的相关部分。

对于我来说,这只是一个PythonPath的问题,但重点是我不知道如何解决这个问题。

确实,我现在知道 PythonPath 是一个环境变量,并且我已经在我的根用户上设置了这样的变量:

导出 PYTHONPATH='/srv/www/openstack-dashboard/'

现在,我的问题是,似乎这个环境变量没有被 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)

因此,如果有人知道如何解决这个问题,我会很高兴阅读它;-)

答案1

您应该花一点时间了解 pythonpath 的工作原理,这对于掌握 python(显然还有 django)至关重要。例如,您将 /srv/www/openstack-dashboard/ 添加到您的 pythonpath(我假设您已将变量设置在正确的位置),因此当请求 openstack-dashboard.settings 时,python 将搜索 /srv/www/openstack-dashboard/openstack-dashboard/settings.py。除此之外,我建议您阅读官方 uWSGI“WSGI 快速入门”,因为它报告了如何部署新旧版本的 Django。

相关内容