Получение клиента отклонено при доступе к графическому сценарию wsgi


16

Я пытаюсь настроить графит на своем Mac OS X 10.7 lion, я настроил apache для вызова графитового скрипта python через WSGI, но когда я пытаюсь получить к нему доступ, я получаю запрет от apache и в журнале ошибок ,

 "client denied by server configuration: /opt/graphite/webapp/graphite.wsgi"

Я проверил, что местоположение скриптов разрешено в httpd.conf, и права доступа к файлу, но они кажутся правильными. Что мне нужно сделать, чтобы получить доступ. Ниже приведен httpd.conf, который является почти графическим примером.

<IfModule !wsgi_module.c>
   LoadModule wsgi_module modules/mod_wsgi.so
</IfModule>
WSGISocketPrefix /usr/local/apache/run/wigs   
<VirtualHost _default_:*>
    ServerName graphite
    DocumentRoot "/opt/graphite/webapp"
    ErrorLog /opt/graphite/storage/log/webapp/error.log
    CustomLog /opt/graphite/storage/log/webapp/access.log common
    WSGIDaemonProcess graphite processes=5 threads=5 display-name='%{GROUP}' inactivity-timeout=120
    WSGIProcessGroup graphite
    WSGIApplicationGroup %{GLOBAL}
    WSGIImportScript /opt/graphite/conf/graphite.wsgi process-group=graphite application-group=%{GLOBAL}
    # XXX You will need to create this file! There is a graphite.wsgi.example
    # file in this directory that you can safely use, just copy it to graphite.wgsi
    WSGIScriptAlias / /opt/graphite/webapp/graphite.wsgi
    Alias /content/ /opt/graphite/webapp/content/
    <Location "/content/">
            SetHandler None
    </Location>
    # XXX In order for the django admin site media to work you
    Alias /media/ "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-   packages/django/contrib/admin/media/"
    <Location "/media/">
            SetHandler None
    </Location>
    # The graphite.wsgi file has to be accessible by apache. 
    <Directory "/opt/graphite/webapp/">
            Options +ExecCGI
            Order deny,allow
            Allow from all
    </Directory>
</VirtualHost>

Вы можете помочь?

Ответы:


24

Начиная с Apache 2.4, Require all grantedтребуется:

<Directory /opt/graphite/conf>
    Require all granted
</Directory>

До apache 2.2 вы написали бы:

<Directory /opt/graphite/conf>
    Order deny,allow
    Allow from all
</Directory>

Смотрите обновления заметок .

Обратите внимание, что вы можете активировать mod_access_compat для использования старых (до 2.4) директив в apache 2.4. Это может быть полезно, если вы хотите быстро исключить это как причину вашей первоначальной проблемы, но, честно говоря, переход на Requireдостаточно прост, нет смысла использовать этот модуль просто для того, чтобы отложить его.


3
Вы можете только нуждатьсяRequire all granted
chrishiestand


0

Вам не хватает:

<Directory /opt/graphite/webapp>
Order deny,allow
Allow from all
</Directory>

<Directory /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-   packages/django/contrib/admin/media>
Order deny,allow
Allow from all
</Directory>

Вам также не нужно:

<Location "/content/">
        SetHandler None
</Location>
<Location "/media/">
        SetHandler None
</Location>

Эта вещь 'SetHandler None' старая вещь mod_python и не нужна для mod_wsgi.


1
Является ли mediaпсевдоним & <Directory>необходимо? Единственный contrib/adminкаталог, который я могу найти в моей установке Django 1.4, не содержит mediaподкаталога.
Ричард Барнетт

Не думайте, что ваша проблема такая же. Опубликовать свежий вопрос со всеми вашими конкретными деталями.
Грэм Дамплтон

Спасибо, Грэм; На самом деле у меня нет проблемы, поскольку кажется, что Graphite работает нормально, включая mediaпсевдоним & <Directory>. Я задам свежий вопрос, если он столкнется с проблемами.
Ричард Барнетт

0

Установка разрешения на выполнение исправила это для меня:

chmod u+x graphite.wsgi
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.