在 nginx 和 gunicorn 上运行的 Django 项目中添加模块后出现 502 错误

在 nginx 和 gunicorn 上运行的 Django 项目中添加模块后出现 502 错误

我正在尝试将模块添加到现有的 Django 项目,但完成后出现 502 错误。服务器运行的是 Ubuntu。我认为这与应用程序代码无关,因为我在 django 开发服务器上运行它。当我从 settings.py 中取出应用程序的名称并重新启动 gunicorn 时,它就消失了。

以下是日志的一部分

2011/07/15 01:24:45 [error] 16136#0: *75593 connect() failed (111: Connection refused)   while connecting to upstream, client: 24.17.8.152, server: staging.site.org, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8020/", host: "staging.site.org"

这是 nginx 配置文件。 Nginx 配置文件

我不确定还需要什么其他信息。不确定 gunicorn 日志位于何处。我的服务器管理技能有点欠缺。我应该做哪些事情来找出问题的根源。

答案1

可能是模块中存在错误,导致 django 应用程序完全失败。检查它是否正在运行。

答案2

您是如何安装新模块的?如果您使用 pip、apt-get 等将其安装在开发机器上,请确保在您的服务器上执行相同的操作。

答案3

我不知道这是否适用于您,但我在使用 nginx 和 Passenger 时遇到了类似的问题,我没有将我的 django 根目录(包含 manage.py/settings.py/etc 的目录)包含在工作路径中。我没有使用过 gunicorn,但您是否可能需要sys.path.append在 gunicorn 配置中的某个位置添加该目录?

答案4

Connection refused很明显。这意味着您的后端(在本例中为 gunicorn)没有在您在 nginx 配置中指定的端口(在本例中为 8020)上运行。

这里发生了以下两种情况之一。要么:

  1. gunicorn 在不同的端口上运行,或者
  2. gunicorn 没有运行。

如果您确定这是正确的端口,那么尝试启动 gunicorn。

相关内容