gunicorn开始后,Django网站无法访问

fin*_*pin 2 django gunicorn

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

第一次sript(不起作用 ;当我尝试访问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
Run Code Online (Sandbox Code Playgroud)

第二个脚本(工作 ;在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
Run Code Online (Sandbox Code Playgroud)

唯一的区别在于gunicorn_django线.我真的不确定反斜杠是什么意思.它会告诉gunicorn在默认地址上运行吗?

Nat*_*eri 8

黑色滑动只是将一个命令继续到下一行的一种方式.

这里的关键是-b 0.0.0.0:8000,它告诉gunicorn在你的所有网络接口上提供服务.如果没有-b参数,它将绑定到1​​27.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命令查看计算机可用接口的列表.