Gunicorn Socket文件丢失了

时间:2016-05-19 17:02:54

标签: django sockets unix nginx gunicorn

我正在运行一个Django项目,我希望Gunicorn和Nginx能够为这个项目服务。 我正在使用Gunicorn 19.5。

问题基本上是我的套接字文件没有被创建,我尝试了所有东西(chmod 777,chown,...),但没有任何工作。

这是我的bash脚本启动gunicorn:

#!/bin/bash
NAME="hello_project" # Name of the application
DJANGODIR=/home/ubuntu/git/hello_project # Django project directory
SOCKFILE=/home/ubuntu/git/hello_project/run/gunicorn.sock # we will communicte using this unix socket
LOG_FILE=/home/ubuntu/git/hello_project/logs/gunicorn.log

USER=ubuntu # the user to run as
GROUP=ubuntu # the group to run as
NUM_WORKERS=3 # how many worker processes should Gunicorn spawn

MAX_REQUESTS=1 # reload the application server for each request
DJANGO_SETTINGS_MODULE=hello_project.settings # which settings file should Django use
DJANGO_WSGI_MODULE=hello_project.wsgi # WSGI module name

echo "Starting $NAME as `whoami`"

# Activate the virtual environment
cd $DJANGODIR
source ~/.virtualenvs/hello_project/bin/activate

export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH

# Create the run directory if it doesn’t exist
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR

# Start your Django Unicorn

# Programs meant to be run under supervisor should not daemonize themselves (do not use –daemon)
exec ~/.virtualenvs/hello_project/bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
–name $NAME \
–workers $NUM_WORKERS \
–max-requests $MAX_REQUESTS \
–user=$USER –group=$GROUP \
–bind=unix:$SOCKFILE \
–log-level=debug \
–log-file=$LOG_FILE

我在这里变得疯狂,没有我可以看到的日志文件,我甚至尝试自己创建套接字文件但没有成功。我怀疑这是一个权限问题,但即使我用sudo运行脚本,它也不起作用。 我的目录“run”虽然已创建。

以下是error.log文件中的nginx错误:

2016/05/19 16:56:32 [crit] 11053#0: *28 connect() to unix:/home/ubuntu/git/hello_project/run/gunicorn.sock failed (2: No such file or directory) while connecting to upstream...

有任何线索吗?

非常感谢,

1 个答案:

答案 0 :(得分:1)

尝试在不执行exec ~/.virtualenvs/hello_project/bin/gunicorn的情况下运行脚本。

而是尝试使用gunicorn然后使用args运行它。

假设您有权在没有virtualenv的情况下在系统上安装gunicorn。

我有一个要点,开始你尝试运行的同一个过程。 (Django,Nginx,Gunicorn) https://gist.github.com/marcusshepp/129c822e2065e20122d8

我发现您正在使用supervisor,因此您不想使用我在脚本中使用的--deamon选项。