#python #css #django #nginx #static
#python #css #django #nginx #статический
Вопрос:
Мое приложение django хорошо работает на Ubuntu 14.04 / nginx 1.10 / django 1.10.2 / uwsgi 2.0.14, оно также может загружать статические файлы (js, css, изображения), но файлы css не применяются к моему веб-сайту. Ниже приведена моя конфигурация.
структура приложения
example.com/
├── example.com
├── static (generated by collectstatic)
│ └── css
│ └── js
│ └── images
├── templates
└── website
└── static (django collected from)
пример настройки uwsgi.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, щелкнув исходный путь с веб-страницы в браузере и проверив доступ.log он также возвращает 200, никаких ошибок.log не создан.
"GET /static/admin/css/base.a846c0e2ef65.css HTTP/1.1" 200
Статические файлы, я думаю, уже обслуживаются nginx, но они не работают в рабочей среде (работают в runserver
), есть ли какая-либо конфигурация, которую я пропустил, или выполнение woring, или какое-либо разрешение, которое я должен проверить? Спасибо за помощь.
Комментарии:
1. есть ли какая-либо ошибка, отображаемая в консоли браузера?
2. Я не уверен, но я думаю, что местоположение для
/static/
в nginx должно быть :alias /var/www/example.com/website/static/;
3. @Anurag в консоли браузера не выводится ошибка, но дело в том, что я просматриваю папку css в sources> вкладка sources на панели отладки (chrome), файл css существует, но пустой текст, может быть проблема с кешем или?
4. @ruddra, я пробовал, что после перезапуска nginx все статические файлы недоступны, верните 404
5. @pqteru, /static/admin/css/base.a846c0e2ef65.css возвращает css или возвращает пустой? Настройки кажутся нормальными, я подозреваю, что каким-то образом staticfiles_storage вызывает эту проблему .. можете ли вы прокомментировать это и попытаться протестировать? Вы также добавили промежуточное программное обеспечение whitenoise?
Ответ №1:
Согласно обсуждению, класс промежуточного программного обеспечения отсутствовал,
setting.py
MIDDLEWARE_CLASSES = [
...
'whitenoise.middleware.WhiteNoiseMiddleware',
...
]
nginx.conf
server {
...
include /etc/nginx/mime.types;
...
}
Комментарии:
1. @pqteru Я думал, вы также примете этот ответ 😉