我通过我制作的.bash文件启动gunicorn时无法访问服务器。当我使用此命令手动执行此操作时,它可以正常工作
$ gunicorn project.wsgi:application --bind 192.168.1.130:8000
从教程中创建了一个gunicorn.bash文件。我看起来像是这样,没有过错。
#!/bin/bash
NAME="project" # Name of the application
DJANGODIR=/home/username/projects/project # Django project directory
SOCKFILE=/home/username/.venvs/project/run/gunicorn.sock # We will communicate using this unix socket
USER=username # the user to run as
GROUP=username # the group to run as
NUM_WORKERS=1 # how many worker processes shoul Gunicorn spawn
DJANGO_SETTINGS_MODULE=project.settings.production # which settings file should Django use
DJANGO_WSGI_MODULE=project.wsgi # WSGI module name
echo "Starting $NAME as `whoami`"
# Activate the virtual environment
cd $DJANGODIR
source /home/username/.venvs/project/bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH
# Create the run directory if it doesn't exsist
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR
# Start yout Django Unicorn
# Programs meant to be run under supervisor should not daemonize themselves (do not use daemon)
exec gunicorn ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
--user=$USER --group=$GROUP \
--bind=unix:$SOCKFILE \
--log-level=debug \
--log-file=-
我不知道如何解决这个问题?也许某些命令可以查看从手动启动gunicorn和.bash文件中运行设置的不同之处?
答案 0 :(得分:0)
$ gunicorn project.wsgi:application --bind 192.168.1.130:8000
以上使用--bind
与host:port
但在下方:
exec gunicorn ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
--user=$USER --group=$GROUP \
--bind=unix:$SOCKFILE \
--log-level=debug \
--log-file=-
你指定unix:file
这将使你的gunicorn监听unix socket文件而不是你的网络接口:port,所以只需将unix:$SOCKFILE
替换为192.168.1.130:8000
,它应该可以访问预期
此外,您可以尝试使用curl
(curl --unix-socket /path/to/socket http:/some/resurce
)或您选择的其他工具连接到当前配置,以验证它是否实际运行