我正在运行一个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...
有任何线索吗?
非常感谢,
答案 0 :(得分:1)
尝试在不执行exec ~/.virtualenvs/hello_project/bin/gunicorn
的情况下运行脚本。
而是尝试使用gunicorn
然后使用args运行它。
假设您有权在没有virtualenv的情况下在系统上安装gunicorn。
我有一个要点,开始你尝试运行的同一个过程。 (Django,Nginx,Gunicorn) https://gist.github.com/marcusshepp/129c822e2065e20122d8
我发现您正在使用supervisor
,因此您不想使用我在脚本中使用的--deamon
选项。