Apache не может загружать таблицы стилей и скрипты в статический каталог Django - PullRequest
0 голосов
/ 05 сентября 2011

Я занимаюсь разработкой сайта с использованием Django.До сих пор, когда я использовал его в среде разработки, он работал нормально, загружая все таблицы стилей и сценарии в обычном режиме.Однако в настоящее время я перешел на производственную среду, использующую веб-сервер Apache с mod_wsgi для обслуживания страниц Django.Теперь, когда я просматриваю сайт, он сообщает, что файлы css и js не могут быть загружены и были возвращены с кодом ошибки 403 - Доступ запрещен.Мой веб-сайт - это каталог "C:\Users\rohitm\Web Applications\WebApp".Я установил Apache 2.2 на "C:\Program Files\Apache Software Foundation\Apache2.2".Я отредактировал файл httpd.conf в подкаталоге conf в папке установки Apache следующим образом:

Alias /static/ "C:/Users/rohitm/Web Applications/WebApp/static"
<Directory "C:/Users/rohitm/Web Applications/WebApp/static">
Order allow,deny
Allow from all
</Directory>

Alias /static/images/ "C:/Users/rohitm/Web Applications/WebApp/static/images"
<Directory "C:/Users/rohitm/Web Applications/WebApp/static/images">
Order allow,deny
Allow from all
</Directory>

Alias /static/javascript/ "C:/Users/rohitm/Web Applications/WebApp/static/javascript"
<Directory "C:/Users/rohitm/Web Applications/WebApp/static/javascript">
Order allow,deny
Allow from all
</Directory>

Alias /static/stylesheets/ "C:/Users/rohitm/Web Applications/WebApp/static/stylesheets"
<Directory "C:/Users/rohitm/Web Applications/WebApp/static/stylesheets">
Order allow,deny
Allow from all
</Directory>

Alias /static/admin/ "C:/Users/rohitm/Web Applications/WebApp/static/admin"
<Directory "C:/Users/rohitm/Web Applications/WebApp/static/admin">
Order allow,deny
Allow from all
</Directory>

WSGIScriptAlias / "C:/Users/rohitm/Web Applications/WebApp/apache/django.wsgi"
<Directory "C:/Users/rohitm/Web Applications/WebApp/apache">
Order allow,deny
Allow from all
</Directory>

Я создал файл django.wsgi в папке apache в папке WebApp.Содержимое:

import os
import sys
sys.path.append('C:/Users/rohitm/Web Applications/')
sys.path.append('C:/Users/rohitm/Web Applications/WebApp/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'WebApp.settings'

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()

Параметры статических файлов в файле settings.py следующие:

STATIC_ROOT = 'C:/Users/rohitm/Web Applications/WebApp/static/'

STATIC_URL = '/static/'

ADMIN_MEDIA_PREFIX = '/static/admin/'

После выполнения команды manage.py collectstaic в статической папке есть 4 подпапки.- admin, images, stylesheets и javascript.Папка таблицы стилей содержит файл main.css, а папка javascipt содержит файл jquery.min.js.Папка admin содержит все связанные css и js, связанные с администратором.Теперь, когда я просматриваю сайт через http://localhost, файлы css и javascript не загружаются, а консоль браузера (Chrome - Crtl + Shift + J) сообщает, что файлы не удалось загрузить, поскольку сервер ответил ошибкой 403 (Запрещено).

Пожалуйста, помогите срочно.

Ответы [ 2 ]

3 голосов
/ 05 сентября 2011

Удалите косую черту на первом пути, заданном директивой Alias, или альтернативно добавьте косую черту на второй путь. Использование конечной косой черты должно быть сбалансированным, т. Е. Ни на одном, ни на обоих.

Вам также нужен блок Alias ​​/ Directory только для верхнего каталога, в котором находятся статические файлы. Вам не нужно перечислять его для всех подкаталогов. Таким образом используйте:

Alias /static "C:/Users/rohitm/Web Applications/WebApp/static"
<Directory "C:/Users/rohitm/Web Applications/WebApp/static">
Order allow,deny
Allow from all
</Directory>

Обратите внимание, что теперь используется '/ static', а не '/static/'.

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

Я думаю, что пользователь, под которым работает Apache, не имеет доступа к папке C:/Users/rohitm/Web Applications/WebApp/static.

В общем, лучше всего размещать эти файлы где-то в центре, а не в вашем личном домашнем каталоге.

...