【问题标题】:Cannot get django-registration working under nginx+gunicorn无法让 django-registration 在 nginx+gunicorn 下工作
【发布时间】:2011-09-01 12:24:51
【问题描述】:

我有一个 Django 项目,它部署在 Apache2 和 mod_wsgi 下的临时服务器上,并且运行良好。它使用 django-registration 应用程序。

我尝试将我的服务器切换到 nginx 并使用 gunicorn 运行 Django 项目。该项目加载正常,除非我尝试访问 /admin 和 /user/logout(默认是 /account 和 django-registration),它会给我一个“没有名为 urls 的模块”错误。我把头发扯了几个小时。我在 urls.py 中注释掉了注册 url 行,然后管理员显示正常,除了它缺少注册模型。所以管理员失败只是因为注册失败。

理想情况下,我想使用 nginx/gunicorn 设置将我的项目投入生产,但注册似乎并不想很好地发挥作用。我尝试删除注册,从源代码安装 0.8,删除它,pip 安装 0.7,没有任何效果。有效的是停止 nginx,然后再次运行 apache。因此,从本质上讲,除了所使用的 Web 服务器类型之外,该项目没有受到任何影响。

由于注册似乎在 Apache/mod_wsgi 下运行良好,我很想使用该设置推送到生产环境...但我仍然很想知道为什么注册在我尝试时无法与 gunicorn 一起使用.任何帮助将不胜感激。

【问题讨论】:

标签: django nginx django-urls django-registration gunicorn


【解决方案1】:

听起来你的 sys.path 在使用 mod_wsgi 时设置不同。在部署时遇到一个很常见的错误,所以第一步是在运行 gunicorn 时检查您的sys.path。你在用virtualenv吗?确保将 gunicorn 安装到您的 virtualenv 以及 django-registration 和您可能拥有的任何其他依赖项中。如果您在 virtualenv 的 bin 目录中运行 gunicorn 脚本,一切都应该可以正常工作。

【讨论】:

  • 我认为这是一个 PYTHONPATH 问题,所以在我启动 gunicorn 的项目文件夹中,我将路径导出到 dist-packages 以查看它是否可以工作。在 TemplateError 页面中,它似乎正确地浏览了所有正确的 python 文件夹。我还没有尝试过 virtualenv,接下来我可能会尝试。
  • 我总是使用(并推荐)distribute & pip 和 virtualenv。试一试,看看它是否有助于减轻您的部署困境。一般来说,这是一个好主意,因为您可以隔离各种项目并避免依赖冲突等。
  • 我能够让 django-registration 在不同的服务器下与 nginx+gunicorn 一起工作。我不一定有时间在幕后工作以真正找出罪魁祸首,所以我可能会擦除服务器并重试,这次是 virtualenv 继续前进。 :)
猜你喜欢
  • 2010-12-05
  • 2021-08-11
  • 2012-05-27
  • 1970-01-01
  • 2011-12-09
  • 2019-01-04
  • 1970-01-01
  • 2015-11-07
  • 2018-11-25
相关资源
最近更新 更多