Obtener el cliente denegado al acceder a un script de grafito wsgi

16

Estoy tratando de configurar el grafito en mi Mac OS X 10.7 lion, configuré apache para llamar al script de grafito de python a través de WSGI, pero cuando trato de acceder a él, aparece una prohibición de apache y en el registro de errores .

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

Verifiqué que la ubicación de los scripts está permitida en httpd.conf y los permisos del archivo, pero parecen correctos. ¿Qué debo hacer para acceder? A continuación se muestra httpd.conf, que es casi el ejemplo de grafito.

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

¿Puede usted ayudar?

Dr. BDO Adams
fuente

Respuestas:

24

Desde apache 2.4, Require all grantedse requiere:

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

Hasta apache 2.2, escribirías:

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

Ver notas de actualización .

Tenga en cuenta que puede activar mod_access_compat para usar directivas antiguas (anteriores a 2.4) en apache 2.4. Puede ser útil si desea descartar rápidamente esto como la causa de su problema inicial, pero, francamente, la migración Requirees bastante fácil, no tiene sentido usar este módulo solo para posponerlo.

Bwire
fuente
3
Es posible que solo necesiteRequire all granted
chrishiestand
0

Estás perdido:

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

Tampoco necesitas:

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

Ese material 'SetHandler None' es material antiguo de mod_python y no es necesario para mod_wsgi.

Graham Dumpleton
fuente
1
¿Es el mediaalias y <Directory>necesario? El único contrib/admindirectorio que puedo encontrar en mi instalación de Django 1.4 no contiene un mediasubdirectorio.
Richard Barnett
No asumas que tu problema es el mismo. Publique una nueva pregunta con todos sus detalles específicos.
Graham Dumpleton
Gracias Graham; En realidad, no tengo ningún problema, ya que Graphite parece estar funcionando bien cuando se incluye el mediaalias & <Directory>. Haré una nueva pregunta si tiene problemas.
Richard Barnett
0

Establecer permisos de ejecución lo arregló para mí:

chmod u+x graphite.wsgi
Gerry
fuente