【发布时间】:2014-05-23 06:45:14
【问题描述】:
所以我正在运行非常标准的设置,我遵循了与之前相同的教程,但现在由于未知原因它不起作用。
当我运行./manage.py runserver my_ip:8000 时,它运行良好。
当我通过bin/gunicorn_start 运行我的 gunicorn 脚本时,它工作正常并创建了 sock 文件
但是,当我通过主管和 nginx 运行 gunicorn 脚本时,结果为Internal Server Error,并且错误日志中没有信息。我究竟做错了什么?我猜是gunicorn还是权限问题?
bin/gunicorn_start
#!/bin/bash
NAME="today" # Name of the application
DJANGODIR=~/deployment/today_project/
SOCKFILE=~/deployment/run/gunicorn.sock # we will communicte using this unix socket
USER=ferski # the user to run as
GROUP=ferski # the group to run as
NUM_WORKERS=3 # how many worker processes should Gunicorn spawn
DJANGO_SETTINGS_MODULE=today_project.settings # which settings file should Django use
DJANGO_WSGI_MODULE=today_project.wsgi # WSGI module name
echo "Starting $NAME as `whoami`"
# Activate the virtual environment
cd $DJANGODIR
source ../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 ../bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
--user=$USER --group=$GROUP \
--log-level=debug \
--bind=unix:$SOCKFILE
/etc/supervisord.conf(只是未注释的文件)
[unix_http_server]
file=/tmp/supervisor.sock ; (the path to the socket file)
...
[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket
...
[program:today]
command = /home/ferski/deployment/bin/gunicorn_start
user = ferski
stdout_logfile = /home/ferski/deployment/logs/gunicorn_supervisor.log
redirect_stderr = true
...
最后是 nginx.conf
upstream today_app_server {
server unix:/home/ferski/deployment/run/gunicorn.sock fail_timeout=0;
}
server {
listen 80;
server_name haxelita.pl;
client_max_body_size 4G;
access_log /home/ferski/deployment/logs/nginx-access.log;
error_log /home/ferski/deployment/logs/nginx-error.log;
location /static/ {
alias /home/ferski/deployment/today_project/today/static/;
}
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://today_app_server;
break;
}
}
# Error pages
error_page 500 502 503 504 /500.html;
location = /500.html {
root /home/ferski/deployment/today_project/today/static/;
}
}
这里有什么问题?是权限问题吗?
【问题讨论】:
标签: python django nginx gunicorn