2015-08-24 2 views
0

Я настраиваю сайт django, используя python2.7, apache2.2, mod_wsgi4.4 и django1.8. У меня очень странная ошибка при попытке использовать простые статические изображения. Мой корень проекта находится в /var/www/siteName/, и все мои статические файлы обслуживаются от /var/www/siteName/static/. У меня есть небольшая иерархия файлов в пределах .../static/, чтобы упорядочить все изображения сайта. Файл дерево выглядит следующим образом:с помощью mod wsgi & apache, изображения только обрабатываются, если в подкаталоге

  • статические
    • изображения
    • монитор // CSS файлы для все мое страницы

Моя проблема в том, что я могу использовать изображения, которые находятся в пределах пронумерованных каталогов, но не все изображения, которые находятся непосредственно в каталоге images. Я не могу понять, почему. Перемещение файла изображения с images на images/3/ works..but Я не хочу этого делать. Всякий раз, когда я пытаюсь получить доступ к файлу изображения в static я получаю пощечину этого сообщения об ошибке

(13) Разрешение отказано: права доступа к файлам запретить доступ к серверу:/вар/WWW/SiteName/статический/изображения/GroupShot. JPG

жестко прописывать пути в .html шаблон дает те же результаты:

<div class="imageContainer"> 
<img src='/static/images/3/stethoscope/groupshot.jpg'> 
</div> 
<div class="imageContainer"> 
<img src='/static/images/groupshot.jpg'> 
</div> 

Первый IMG тег работает отлично, а второй нет.

Ниже VirtualHost определение из моего httpd.conf файла:

<VirtualHost *:80> 
     WSGIScriptAlias//var/www/siteName/projName/wsgi.py 
     Alias /static/ /var/www/siteName/static/ 
<Directory /var/www/siteName/static> 
Order deny,allow 
Allow from all 
</Directory> 


<Directory /var/www/siteName/projName> 
     <Files wsgi.py> 
       Order deny,allow 
       Allow from all 
     </Files> 
</Directory> 
LogLevel warn 
ErrorLog /var/www/siteName/logs/error.log 
CustomLog /var/www/siteName/access.log combined 
</VirtualHost> 

Кто-нибудь еще видел что-нибудь подобное? Я проверил и дважды проверил с помощью инструмента под названием namei все права доступа к файлам. Большинство статических файлов принадлежат root: root. Каталоги 755, а файлы имеют 644 разрешения.

выход namei -l static/images/3/stethoscope/groupshot.jpg:

f: static/images/3/stethoscope/groupshot.jpg 
drwxr-xr-x root root static 
drwxr-xr-x root root images 
drwxr-xr-x root root 3 
drwxr-xr-x root root stethoscope 
-rw-r--r-- root root groupshot.jpg 

выход namei -l static/images/groupshot.jpg:

drwxr-xr-x root root static 
drwxr-xr-x root root images 
-rw-r--r-- root root groupshot.jpg 
+0

"Каталоги - 755, а файлы - 644 разрешений" - какие каталоги? Все они? И файлы? – kittykittybangbang

+0

@kittykittybangbang, спасибо, что указали это. Я редактировал вопрос, чтобы показать, какие директории я имел в виду. Когда я увидел, что разрешение отклонено, я дважды перешел к этой странице вики-страницы Apache (http://wiki.apache.org/httpd/FileSystemPermissions), чтобы дважды проверить. –

ответ

0

После немного больше исследований я наткнулся на this article by Pete Freitag. Похоже, что это была проблема SELinux. Я использовал chcon, чтобы установить правильный контекст безопасности для моих статических файлов. В моем случае, так как я имел рабочий подкаталог я использовал этот каталог в качестве ссылки для родителей:

sudo chcon -R --reference=/var/www/siteName/static/images/3 /var/www/siteName/static

и что сделал трюк!

 Смежные вопросы

  • Нет связанных вопросов^_^