为什么是nginx+;django+;gunicorn不提供静态文件

为什么是nginx+;django+;gunicorn不提供静态文件,django,nginx,gunicorn,supervisord,Django,Nginx,Gunicorn,Supervisord,我刚刚试过很多东西。希望你们能帮我解决这个问题 我在为django 1.5项目提供静态文件时遇到了一个典型的问题。我试图得到一个css文件,每个例子,它抛出404 我的nginx配置: server { listen *:80; server_name t1.bpt.local www.t1.bpt.local; root /srv/sites/bikepolo_tournament-t1; index index.html index.htm index.ph

我刚刚试过很多东西。希望你们能帮我解决这个问题

我在为django 1.5项目提供静态文件时遇到了一个典型的问题。我试图得到一个css文件,每个例子,它抛出404

我的nginx配置:

server {
    listen *:80;

    server_name t1.bpt.local www.t1.bpt.local;
    root /srv/sites/bikepolo_tournament-t1;
    index index.html index.htm index.php index.cgi index.pl index.xhtml;

    error_log /var/log/nginx/t1.bpt.local-error.log;
    access_log /var/log/nginx/t1.bpt.local-access.log combined;

    ## Disable .htaccess and other hidden files
    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location /static/ {
        autoindex on;
        alias /srv/sites/bikepolo_tournament-t1/bikepolo_tournament/assets;
    }


    location / {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_connect_timeout 10;
        proxy_read_timeout 10;
        proxy_pass http://localhost:8100;
    }
}
我的主管配置文件:

[program:bikepolo_tournament_t1]
directory=/srv/sites/bikepolo_tournament-t1
command=/srv/sites/bikepolo_tournament-t1/deploy/start_gunicorn_t1.sh
autostart=true
user=tom
stdout_logfile = /var/log/supervisor/%(program_name)s.log
stderr_logfile = /var/log/supervisor/%(program_name)s-error.log
主管命令文件:

#!/bin/bash

set -e

APP_NAME="bikepolo_tournament"
PROJ_NAME="bikepolo_tournament"
DIR_SUFFIX="-t1"

VENV_PROJECTS="/srv/sites"
VENV_DIR="/home/tom/venvs/bikepolo-tournament"
GUN_CONF_MODULE="deploy/gunicorn.conf.py"

PROJ_HOME=$VENV_PROJECTS/$PROJ_NAME$DIR_SUFFIX
WSGI_MODULE=$APP_NAME.wsgi

source $VENV_DIR/bin/activate

cd $PROJ_HOME
exec gunicorn -c $GUN_CONF_MODULE $WSGI_MODULE:application
gunicorn.conf.py:

import multiprocessing
import os
import sys


GB_BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

sys.path.append(os.path.join(GB_BASE_DIR, 'bikepolo_tournament'))

from settings import get_run_mode


_run_mode = get_run_mode() # getting 'prod', 'test' or 'dev'

if _run_mode == 'prod':
    _bind_port = '8101'
    _number_workers = 1 + multiprocessing.cpu_count() * 2
    _log_filename = 'gunicorn_www-error.log'
elif _run_mode == 'test' or _run_mode == 'dev':
    _bind_port = '8100'
    _number_workers = 1
    _log_filename = 'gunicorn_t1-error.log'
else:
    raise ValueError('Unexpected run mode: %s' % _run_mode)

debug = True

bind = '127.0.0.1:%s' % _bind_port

backlog = 1024
workers = _number_workers
我的django设置的相关部分:

here = lambda *x: os.path.join(os.path.abspath(os.path.dirname(__file__)), *x)
PROJECT_ROOT = here("..")
root = lambda *x: os.path.join(os.path.abspath(PROJECT_ROOT), *x)
STATIC_ROOT = root('static')
STATIC_URL = '/static/'
如果我没有忘记什么的话,那就是我的设置让我头疼不已

那么,我做错了什么?我忘了什么


提前谢谢

您是否已运行了python manage.py?
ls-lt/srv/sites/bikepolo_锦标赛-t1/bikepolo_锦标赛/assets
展示了什么?
ls-lt/srv/sites/bikepolo_锦标赛-t1/bikepolo_锦标赛/assets总计12 drwxr-xr-x 3 tom tom 4096 may 16 19:17 img drwxr-xr-x 2 tom 4096 may 16 19:17 css drwxr-xr-x 3 tom 4096 may 16 19:17 js
我收集了大量静态数据我找到了答案!在nginx config中,location/static/中的别名必须有一个尾随斜杠!