2016-10-24 2 views
0

Приложение django хорошо работает на Ubuntu 14.04/nginx 1.10/django 1.10.2/uwsgi 2.0.14, оно также может загружать статические файлы (js, css, images), но css файлы не распространяются на мой сайт. Ниже приведена моя конфигурация.Развертывание статических файлов django в процессе производства

Структура приложения

example.com/ 
├── example.com 
├── static (generated by collectstatic) 
│ └── css 
│ └── js 
│ └── images 
├── templates 
└── website 
    └── static (django collected from) 

установка uwsgi example.com.ini

[uwsgi] 
... 
socket=/var/www/example.com/uwsgi.sock 
chdir=/var/www/example.com 
chmod-socket=664 
... 

nginx.conf

server { 
    listen  80 default_server; 
    server_name example.com; 

    charset utf-8; 
    access_log /var/log/nginx/access.log; 

    error_page 404    /var/www/example.com/template/404.html; 
    error_page 500 502 503 504 /var/www/example.com/template/500.html; 

    location/{ 
     uwsgi_pass  unix:///var/www/example.com/uwsgi.sock; 
     include   uwsgi_params; 
    } 

    location /static/ { 
     alias /var/www/example.com/static/; 
    } 
} 

setting.py

INSTALLED_APPS = (
    ... 
    'django.contrib.staticfiles', 
    ... 
) 

STATIC_ROOT = os.path.join(BASE_DIR, "static") 
STATIC_URL = '/static/' 

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "website/static"), 
) 

STATICFILES_FINDERS = [ 
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
    ... 
] 

STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage' 

После запуска ./manager collectstatic, я могу получить доступ .css файлы, нажав на исходный путь от веб-страницы в браузере, а также проверки access.log он также возвращает 200, ни какого-либо error.log производится ,

"GET /static/admin/css/base.a846c0e2ef65.css HTTP/1.1" 200 

Статические файлы уже обслуживаются Nginx, я думаю, но это не работает в производстве (работа в runserver), есть ли конфигурация, которую я пропустил или делать woring, или любое разрешение, которое я должен проверить? Спасибо за помощь.

+0

есть какая-либо ошибка печатается в консоли браузера? – Anurag

+0

Я не уверен, но я думаю, что местоположение для '/ static /' в nginx должно быть: 'alias /var/www/example.com/website/static/;' – ruddra

+0

@Anurag, в консоли браузера нет ошибки, но что я просматриваю папку css на вкладках sources> sources из панели отладки (chrome), файл css существует, но пустой текст, может быть проблема с кешем или? – pqteru

ответ

0

Согласно дискуссионной Middleware класса не хватало,

setting.py

MIDDLEWARE_CLASSES = [ 
    ... 
    'whitenoise.middleware.WhiteNoiseMiddleware', 
    ... 
] 

nginx.conf

server { 
    ... 
    include /etc/nginx/mime.types; 
    ... 
} 
+0

@pqteru Я думал, что вы тоже согласитесь с этим ответом ;-) – Anurag

Смежные вопросы