Я использую Django с Gunicorn, Virtualenv, Supervisor и Nginx.
Когда я перешел на Nginx, при щелчке по домашнему URL моего блога отображается «mydjangoblogserver», и результат не найден, но все другие функции работают нормально, кроме «click home».
Я думаю, что Nginx и Gunicorn несут ответственность за проблему.
ngnix.conf:
user root;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream mydjangoblogserver {
server unix:/home/blog/dev/DjangoBlog/run/gunicorn.sock fail_timeout=0;
}
server{
server_name www.xxx.club;
root /home/blog/dev/DjangoBlog;
listen 80;
keepalive_timeout 70;
location /collectedstatic/ {
expires max;
alias /home/blog/dev/DjangoBlog/;
}
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
if (!-f $request_filename) {
#proxy_pass http://xxx.club;
proxy_pass http://mydjangoblogserver;
break;
}
}
}
файл django_start:
#!/bin/bash
NAME="djangoblog" # Name of the application
DJANGODIR=/home/blog/dev/DjangoBlog # Django project directory
SOCKFILE=/home/blog/dev/DjangoBlog/run/gunicorn.sock # we will communicte using this unix socket
USER=root # the user to run as
GROUP=root # the group to run as
NUM_WORKERS=3 # how many worker processes should Gunicorn spawn
DJANGO_SETTINGS_MODULE=DjangoBlog.settings # which settings file should Django use
DJANGO_WSGI_MODULE=DjangoBlog.wsgi # WSGI module name
echo "Starting $NAME as `whoami`"
# Activate the virtual environment
cd $DJANGODIR
source /home/blog/dev/python3/bin/activate
export django_settings_module=$DJANGO_SETTINGS_MODULE
#export pythonpath=$djangodir:$pythonpath
export PYTHONPATH=$DJANGODIR:$PYTHONPATH
# create the run directory if it doesn't exist
#rundir=$(dirname $sockfile)
RUNDIR=$(dirname $SOCKFILE)
echo $RUNDIR
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 /var/www/dev/python3/bin/gunicorn ${django_wsgi_module}:application \
echo ${django_wsgi_module}
exec /home/blog/dev/python3/bin/gunicorn -b 0.0.0.0:8000 ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
--user=$USER --group=$GROUP \
--bind=unix:$SOCKFILE \
--log-level=debug \
--log-file=/home/blog/dev/DjangoBlog/gunicorn.log
supervisor.conf:
[program:djangoblog]
command = /home/blog/dev/DjangoBlog/bin/django_start
user = root
autostart=true
autorestart=true
redirect_stderr = true
stdout_logfile = /root/logs/blog/robot.log
stderr_logfile=/root/logs/blog/err.log