Django статический файл хостинг Apache - PullRequest
20 голосов
/ 16 апреля 2011

Я пытаюсь перевести сайт Django, над которым я работал, из стадии сервера разработки в реальную среду хостинга. В настоящее время я просто хостинг на моей личной машине. У меня уже установлены Apache и mod-wsgi, но у меня проблемы с загрузкой статических файлов. Я почти уверен, что это связано с Apache. Вот мой конфигурационный файл для сайта:

<VirtualHost *:80>

    ServerName localhost
    ServerAlias daifotis.dyndns.org
    ServerAdmin webmaster@daifotis.com

    DocumentRoot /home/daifotis/code/

    Alias /media/ /home/daifotis/code/feris/sitestatic
    Alias /static/ /home/daifotis/code/feris/sitestatic
    #AliasMatch ^/([^/]*\.css) /home/daifotis/code/feris/sitestatic/$1

    <Directory /home/daifotis/code/feris/sitestatic>
        Order allow,deny
        Allow from all
    </Directory>

    <Directory /home/daifotis/code/feris>
        Order allow,deny
        Allow from all
    </Directory>

    <Directory /home/daifotis/code/feris/jobsite>
        Order allow,deny
        Allow from all
    </Directory>

    WSGIDaemonProcess feris processes=2 threads=15 display-name=%{GROUP}
    WSGIProcessGroup feris

    WSGIScriptAlias / /home/daifotis/code/feris/apache/django.wsgi

    <Directory /home/daifotis/code/feris/apache>
        Order allow,deny
        Allow from all
    </Directory>

</VirtualHost>

Я пытаюсь разместить файлы из каталога, который я называю псевдонимом static. Когда я пытаюсь загрузить сайт, появляется весь контент, но нет CSS. Кроме того, когда я нажимаю на мой адрес www.server.com/static/, отображается страница с правильным содержимым каталога. Однако я не понимаю, почему, если я нажимаю на ссылку, чтобы просмотреть файл, он говорит, что URL не существует. Я застрял на этом некоторое время, поэтому любая помощь будет высоко ценится.

Ответы [ 2 ]

41 голосов
/ 16 апреля 2011

Разобрался. У меня была ошибка конфигурации apache в этой строке:

Alias /static/ /home/daifotis/code/feris/sitestatic

Я должен был написать static без косой черты. С помощью косой черты Apache не будет расширять путь URL.

Alias /static /home/daifotis/code/feris/sitestatic
3 голосов
/ 16 апреля 2011

Я предполагаю, что вы используете Django 1.3 и «новый» способ обслуживания статических файлов. Не могли бы вы показать нам настройки в вашем файле settings.py, относящиеся к MEDIA и STATIC? Обе версии ROOT И URL. Также покажите свои STATICFILES_DIRS.

Наиболее вероятная причина в том, что Django настроен только на обслуживание статических файлов с contrib.staticfiles. Возможно, вам потребуется запустить команду управления python manage.py collectstatic, чтобы собрать все статические файлы приложения в каталог, готовый для обслуживания apache.

См. мой ответ здесь относительно настроек для использования django.contrib.staticfiles.

Если ваши статические файлы существуют, 100%, в каталоге, указанном Alias /static/ /home/daifotis/code/feris/sitestatic, то ваши разрешения для apache, вероятно, настроены неправильно. Вы проверили файл /var/log/httpd/error_log, чтобы увидеть, есть ли ошибка IOPermissions при попытке передать статический контент?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...