Apache обслуживает только первый уровень директории статических файлов Django - PullRequest
0 голосов
/ 11 сентября 2011

У меня есть сайт, который я создал с помощью Django, и я пытаюсь развернуть его на сервере Apache, на котором я лежу (используя mod_wsgi в соответствии с рекомендациями официальных документов), и по большей части все идет отлично. У меня проблема с получением Apache для правильной обработки статических файлов, связанных с моим проектом. Судя по сравнению источника визуализированного HTML с файловой структурой моего сервера, я бы сказал, что мое приложение запрашивает правильные файлы из нужных мест, но по какой-то причине Apache выдает мне 404. Вот мой конфиг для apache:

<VirtualHost *:80>
    ServerName book
    ServerAlias www.book.dev book.dev

    DocumentRoot /var/www/book


    Alias   /static/        /var/www/book/static
    Alias   /media/         /var/www/book/media

    <Directory /var/www/book/static>
            Order deny,allow
            Allow from all
    </Directory>

    WSGIScriptAlias / /home/rich/sites/book/apache/django.wsgi

    <Directory /home/rich/sites/book>
            Order allow,deny
            Allow from all
    </Directory>

</VirtualHost>

Если я перехожу на STATIC_ROOT в своем веб-браузере (в данном случае www.book.dev/static), я вижу (правильный) список первого уровня в структуре каталогов на сервере. Однако, пытаясь перейти по ссылкам на подкаталоги или даже файлы в корневом каталоге, мы получим только 404. Я использую Django 1.3, Python 2.6 и некоторую версию apache в диапазоне 2.X последняя версия в репозитории Debian)

Любая помощь приветствуется.

РЕДАКТИРОВАТЬ: (сюжет утолщается!)

Итак, еще немного поиграв, я нашел кое-что, что мне показалось интересным. Я обнаружил, что если я запускаю сервер разработки, URL-адреса, из которых извлекается статический контент, идентичны URL-адресам статических файлов, которые генерируются, когда Apache обслуживает файлы. Это означает, что все они принимают форму /static/<file>, настроенную в settings.py, но иногда это не работает.

Ответы [ 2 ]

1 голос
/ 11 сентября 2011

Попробуйте иметь:

Alias   /static/        /var/www/book/static/
Alias   /media/         /var/www/book/media/

Если для вспомогательного URL-адреса используются конечные косые черты, путь к целевой файловой системе также должен иметь косую черту.

Сравнить с документацией по адресу:

http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines#Hosting_Of_Static_Files

0 голосов
/ 11 сентября 2011

Пожалуйста, проверьте ваш файл settings.py.Ищите запятые и логику структуры каталогов.Особенно о STATIC_ROOT и MEDIA ... dirs.Проблемы часто не в том, откуда они пришли.

И вы можете создать символическую ссылку на apache dir ... и перенести ее туда, где она была в вашем проекте в структуре файла dev ... Попробуйте, что это может показать ваши ошибкив шаблонах, если они существуют ...

...