Как решить 404 для статических файлов с Django и Nginx?

Я установил доверенную виртуальную машину с Django + Nginx ( другие материалы тоже).

Сервер работает, я получаю страницу "Welcome to Django" . Но когда я вхожу в servername/admin, он загружает страницу HTML , но не может загрузить статический контент.

И на странице администратора есть ссылки на статический контент:

<link rel="stylesheet" type="text/css" href="/static/admin/css/base.css" />
<link rel="stylesheet" type="text/css" href="/static/admin/css/login.css" />

Оба файла CSS дают мне 404, как показывает журнал Nginx:

192.168.56.1 - - [05/Jun/2014:12:04:09 -0300] "GET /admin HTTP/1.1" 301 5 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0"
192.168.56.1 - - [05/Jun/2014:12:04:09 -0300] "GET /admin/ HTTP/1.1" 200 833 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0"
192.168.56.1 - - [05/Jun/2014:12:04:10 -0300] "GET /static/admin/css/base.css HTTP/1.1" 404 142 "http://ubuntu-server/admin/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0"
192.168.56.1 - - [05/Jun/2014:12:04:10 -0300] "GET /static/admin/css/login.css HTTP/1.1" 404 142 "http://ubuntu-server/admin/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0"

Я думаю, что ошибка в моем файле nginx.conf , но не знаю, как ее решить. Это дерево сайтов:

screenshoot

Основные файлы: urls.py , settings.py .

4
задан 13 June 2014 в 18:48

3 ответа

Это наиболее вероятно проблема конфигурации в django или Nginx

Существует две вещи, которые Вы хотите проверить:

  1. Ваши staticfiles настроены правильно в settings.py? Для основной django страницы эти настройки не необходимы, но для Ваших статических файлов, необходимо настроить статические файлы. Это не необходимо для производственного использования, потому что там веб-сервер служит статическим файлам. Они собраны? После того, как настроенный Вам, возможно, придется работать python manage.py collectstatic.

    Например,

    #settings.py
    INSTALLED_APPS += [django.contrib.staticfiles,]
    STATIC_URL = '/static/'
    STATIC_ROOT = '/your_path/.../static/'
    
    # This collects all files in /static/ directories and puts them in the static ROOT folder.
    python manage.py collectstatic
    
  2. Django не служит статическим файлам отдельно (если Вы не устанавливаете DEBUG=True в settings.py), таким образом необходимо будет добавить конфигурацию в механизме x, чтобы заставить его служить статическим файлам. Вам, возможно, придется перезапустить nginx и/или добавить autoindex on; к Вашей конфигурации для/static/в nginx.conf.

Посмотрите Развертывающиеся статические файлы.

В разработке Вам, возможно, также придется добавить /static/ URL к Вашему urls.py (в разработке) и не только настройки.

6
ответ дан 13 June 2014 в 18:48

Я предполагаю, что у Вас есть неправильные пути к файлам. Согласно тому, что сервер говорит, что администратор и статические папки находятся в том же пути.

Также на Linux / корневой путь. Ваши файлы не находятся в корневом каталоге.

Снова я просто предполагаю, надежда, что это помогает!

0
ответ дан 13 June 2014 в 18:48

Я столкнулся с той же проблемой, и небольшое изменение в nginx конфигурации решило ее для меня.

Это было моей конфигурацией nginx для обслуживания статических файлов:

location /static/ {
    root /home/muqube/muqube_website/muqube/muqube_static_root/;
}

решение состояло в том, чтобы заменить root alias, как так:

location /static/ {
    alias /home/muqube/muqube_website/muqube/muqube_static_root/;
}
3
ответ дан 13 June 2014 в 18:48

Другие вопросы по тегам:

Похожие вопросы: