gunicorn启动后Django网站无法访问



我正在尝试用shell脚本启动gunicorn服务器。问题是无法访问网站(当我尝试通过浏览器访问网站时,连接超时)。我这里有两个剧本,一个有效,一个无效。我正在努力理解为什么第一个脚本不起作用,以及如何解决这个问题。

第一个srpt不工作;当我尝试访问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在默认地址上运行?

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

这里的关键是-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命令查看机器可用接口的列表。

最新更新