Назад | Перейти на главную страницу

Отказ клиента при доступе к графитовому скрипту wsgi

Я пытаюсь настроить графит на моем 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>

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

Начиная с 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 достаточно просто, нет смысла использовать этот модуль, чтобы просто откладывать его.

http://wiki.apache.org/httpd/ClientDeniedByServerConfiguration

это всегда одна из тех причин.

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

<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.

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

chmod u+x graphite.wsgi