Я установил доверенную виртуальную машину с 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 , но не знаю, как ее решить. Это дерево сайтов:
Основные файлы: urls.py
, settings.py
.
Это наиболее вероятно проблема конфигурации в django или Nginx
Существует две вещи, которые Вы хотите проверить:
Ваши 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
Django не служит статическим файлам отдельно (если Вы не устанавливаете DEBUG=True
в settings.py
), таким образом необходимо будет добавить конфигурацию в механизме x, чтобы заставить его служить статическим файлам. Вам, возможно, придется перезапустить nginx и/или добавить autoindex on;
к Вашей конфигурации для/static/в nginx.conf.
Посмотрите Развертывающиеся статические файлы.
В разработке Вам, возможно, также придется добавить /static/
URL к Вашему urls.py (в разработке) и не только настройки.
Я предполагаю, что у Вас есть неправильные пути к файлам. Согласно тому, что сервер говорит, что администратор и статические папки находятся в том же пути.
Также на Linux / корневой путь. Ваши файлы не находятся в корневом каталоге.
Снова я просто предполагаю, надежда, что это помогает!
Я столкнулся с той же проблемой, и небольшое изменение в 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/;
}