Статические файлы Django не видны
Мой сайт Django не будет отображать CSS или JS с использованием статического управления файлами Django
Мой HTML ( живая версия доступна здесь)
{% load staticfiles %}
<html>
<head>
<!-- THESE WORK LOCALY BUT DO NOT WORK ON THE SERVER -->
<link rel = "stylesheet" href ="{% static "survey/css/bootstrap.min.css" %}" >
<link rel = "stylesheet" href ="{% static "survey/css/bootstrap.css" %}">
<link rel="stylesheet" href ="{% static "survey/css/jquery-ui.css" %}">
<link rel="stylesheet" href ="{% static "survey/css/slider.css" %}">
<link rel="stylesheet" href="{% static "survey/resources/demos/style.css" %}">
<script src="{% static "survey/js/jquery.min.js" %}"></script>
<script src="{% static "survey/js/jquery-ui.js" %}"></script>
<script src="{% static "survey/js/slider.js" %}"></script>
Мои settings.py
STATIC_ROOT = '/var/www/bias_experiment/static'
STATIC_URL = '/static/'
Мой файл Apache по умолчанию / etc / apache2 / sites-available / defaults
ПРИМЕЧАНИЕ: я не могу использовать <VirtualHost>
из-за того факта, что "имя сервера, которое вы используете, является основным именем этого сервера", как я выяснил в другом вопросе SO, я поместил все это в файл значений по умолчанию.
<VirtualHost *:80>
AliasMatch ^/([^/]*\.css) /var/www/bias_experiment/src/survey/static/$1
Alias /static/ /var/www/bias_experiment/src/survey/static/
<Directory /var/www/bias_experiment/src/survey/static>
Order deny,allow
Allow from all
</Directory>
WSGIScriptAlias /bias_experiment /var/www/bias_experiment/src/bias_experiment/index.wsgi
<Directory /var/www/bias_experiment/src/bias_experiment>
<Files index.wsgi>
Order deny,allow
Allow from all
</Files>
</Directory>
....
(other Apache default code here)
....
</VirtualHost>
'django.contrib.staticfiles',
включен в INSTALLED_APPS- Я установил права доступа статической папки к www-данным
- Я бегал
collectstatic
Это часть результатов `colllectstatic'
....
Copying '/var/www/bias_experiment/src/survey/static/survey/css/jquery-ui.theme.css'
Copying '/var/www/bias_experiment/src/survey/static/survey/css/bootstrap.min.css'
Copying '/var/www/bias_experiment/src/survey/static/survey/css/bootstrap-theme.css'
Copying '/var/www/bias_experiment/src/survey/static/survey/css/slider.css'
36 static files copied, 103 unmodified.
- I have restarted Apache
Я нахожусь на общей виртуальной машине под управлением Apache 2.2.22 и mod_wsgi 3.3-4ubuntu0.1
Тем не менее, ни один из статических файлов не появится.
Любая помощь высоко ценится
РЕДАКТИРОВАТЬ 1
Согласно предложению Стивенса, я обновил статический корень до
STATIC_ROOT = '/var/www/bias_experiment/src/survey/static/'
Но без удачи.
РЕДАКТИРОВАТЬ 2
Это права доступа к файлам для каждого из файлов вплоть до одного из файлов CSS. Я верю, что они правы?
/var/www/bias_experiment/static/survey/css/bootstrap.css
-rw-r--r-- 1 www-data www-data 121463 Jul 22 19:17 bootstrap.css
/ Вар / WWW / bias_experiment / статический / обзор / CSS
drwxr-xr-x 2 www-data www-data 4096 Jul 22 19:17 css
/ Вар / WWW / bias_experiment / статический / опрос
drwxr-xr-x 6 www-data www-data 4096 Jul 18 14:44 survey
/ Var / WWW / bias_experiment / статический
drwxr-xr-x 10 www-data www-data 4096 Jul 22 19:17 static
РЕДАКТИРОВАТЬ 3 ls -ltr / var / www / bias_experiment / src / survey / static /
4 ответа
Ваш STATIC_ROOT неверен, он должен быть
STATIC_ROOT = /var/www/bias_experiment/src/survey/static/
У тебя есть STATICFILES_DIRS
установлен правильно: похоже, что ваш статический корень может быть в этом кортеже на основе вывода collectstatic
,
Наконец, это AliasMatch
делать что-нибудь полезное?
С вашего живого сайта я заметил, что вы получаете 403 Forbidden
ответы на ваши статические файлы, что означает, что файлы есть, но www-data
не имеет разрешения на чтение на них. Убедись, что ты chown
рекурсивный статический корень (после того, как все статические активы есть).
Просто sudo chown -R www-data:www-data /var/www/bias_experiment/src/survey/static/
должен это исправить.
В вашем конфигурационном файле apache измените "Разрешить из всех" на "Требовать все предоставленные". Также убедитесь, что у вас есть правильные права доступа к вашим статическим файлам.
Эээ... STATIC_ROOT должна быть папкой, в которую вы хотите собирать ваши статические файлы, а STATICFILES_DIRS - папками, где статические файлы собираются из дополнительной информации. Итак, STATICFILES_DIRS должен находиться за пределами вашей папки STATIC_ROOT, и вы хотите, чтобы Apache обслуживал файлы, которые находятся в STATIC_ROOT.
Когда ваши STATIC_ROOT и STATICFILES_DIRS установлены правильно (один из способов проверить это - это запуск на локальном хосте с DEBUG= режим True и DEBUG=False режим после вызова collectstatic), вам нужно только установить псевдоним для вашей статики.
WSGIScriptAlias / <REPLACE_BY_YOUR_WSGI_FILE_PATH>
Alias /static/ <REPLACE_BY_YOUR_STATIC_ROOT>