Статические файлы 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>
Другие вопросы по тегам