Obtendo o Cliente Negado ao Acessar um Script de Grafite wsgi

16

Estou tentando configurar grafite no meu Mac OS X 10.7 lion, configurei o apache para chamar o script de grafite python via WSGI, mas quando tento acessá-lo, recebo uma proibição do apache e no log de erros .

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

Verifiquei se a localização dos scripts é permitida no httpd.conf e as permissões do arquivo, mas elas parecem corretas. O que preciso fazer para obter acesso. Abaixo está o httpd.conf, que é quase o exemplo de grafite.

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

Você pode ajudar?

Dr BDO Adams
fonte

Respostas:

24

Desde o apache 2.4, Require all grantedé necessário:

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

Até o apache 2.2, você escrevia:

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

Veja as notas de atualização .

Observe que você pode ativar o mod_access_compat para usar diretivas antigas (anteriores à 2.4) no apache 2.4. Pode ser útil se você deseja descartar isso rapidamente como a causa do seu problema inicial, mas, francamente, a migração para Requireé fácil o suficiente, não faz sentido usar este módulo apenas para adiá-lo.

Bwire
fonte
3
Você só pode precisarRequire all granted
chrishiestand
0

Você está faltando:

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

Você também não precisa de:

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

Esse material 'SetHandler None' é um material antigo mod_python e não é necessário para o mod_wsgi.

Graham Dumpleton
fonte
11
O mediaalias e <Directory>necessário? O único contrib/admindiretório que posso encontrar na minha instalação do Django 1.4 não contém um mediasubdiretório.
Richard Barnett
Não assuma que seu problema é o mesmo. Poste uma nova pergunta com todos os seus detalhes específicos.
Graham Dumpleton
Obrigado, Graham; Eu realmente não tenho um problema como Grafite parece estar funcionando muito bem quando incluindo o mediaapelido & <Directory>. Farei uma nova pergunta se encontrar problemas.
Richard Barnett
0

Definir permissões de execução corrigiu para mim:

chmod u+x graphite.wsgi
Gerry
fonte