【问题标题】:Django site not accessible after gunicorn startedgunicorn 启动后无法访问 Django 站点
【发布时间】:2013-01-19 18:36:32
【问题描述】:

我正在尝试使用 shell 脚本启动 gunicorn 服务器。问题是一个站点不可访问(当我尝试通过浏览器访问它时连接超时)。我这里有 2 个脚本,一个有效,一个无效。我试图了解为什么第一个脚本不起作用以及如何解决问题。

第一个脚本不起作用;当我尝试访问 domain.com:8000 站点时连接超时;日志中没有错误):

#!/bin/bash
  set -e
  LOGFILE=/var/log/gunicorn/hello.log
  LOGDIR=$(dirname $LOGFILE)
  NUM_WORKERS=3

  USER=lumiawor
  GROUP=lumiawor

  cd /home/lumiawor/public_html/test/hello
  source /home/lumiawor/public_html/test/bin/activate
  test -d $LOGDIR || mkdir -p $LOGDIR

  gunicorn_django -w $NUM_WORKERS \
      --user $USER --group $GROUP --log-level debug \
      --log-file $LOGFILE 2>>$LOGFILE

第二个脚本有效;站点加载到 domain.com:8000):

#!/bin/bash
  set -e
  LOGFILE=/var/log/gunicorn/hello.log
  LOGDIR=$(dirname $LOGFILE)
  NUM_WORKERS=3

  USER=lumiawor
  GROUP=lumiawor

  cd /home/lumiawor/public_html/test/hello
  source /home/lumiawor/public_html/test/bin/activate
  test -d $LOGDIR || mkdir -p $LOGDIR

  gunicorn_django -w $NUM_WORKERS -b 0.0.0.0:8000
      --user $USER --group $GROUP --log-level debug \
      --log-file $LOGFILE 2>>$LOGFILE

唯一的区别在于 gunicorn_django 行。我实际上不确定反斜杠是什么意思。它是否告诉 gunicorn 在默认地址上运行?

【问题讨论】:

    标签: django gunicorn


    【解决方案1】:

    黑斜线只是将单个命令继续到下一行的一种方式。

    这里的关键是 -b 0.0.0.0:8000,它告诉 gunicorn 在您的所有网络接口上提供服务。如果没有 -b 参数,它将绑定到 127.0.0.1:8000 并且只处理来自本地机器的请求。

    如果 gunicorn 直接处理来自外部世界的请求,-b 0.0.0.0:8000 很可能只是您想要的。如果您使用 nginx 或其他一些反向代理服务器(常见设置)并且只希望 gunicorn 服务来自同一台机器的请求,您将需要使用第一个脚本。

    典型的设置如下:

    • 用户 -> nginx 监听 0.0.0.0:80 或公共 ip -> gunicorn 监听 127.0.0.1:8000

    顺便说一句,您可以使用 ifconfig 命令查看您机器的可用接口列表。

    【讨论】:

    • 非常感谢
    猜你喜欢
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 2016-09-12
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多