Negazione del client durante l'accesso a uno script di grafite wsgi


16

Sto cercando di impostare la grafite sul mio Mac OS X 10.7 lion, ho impostato apache per chiamare lo script di grafite python tramite WSGI, ma quando provo ad accedervi, ottengo un divieto da apache e nel registro degli errori .

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

Ho verificato che la posizione degli script sia consentita in httpd.conf e le autorizzazioni del file, ma sembrano corrette. Cosa devo fare per ottenere l'accesso. Di seguito è httpd.conf, che è quasi l'esempio della 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>

Puoi aiutare?

Risposte:


24

Da apache 2.4, Require all grantedè richiesto:

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

Fino ad Apache 2.2, dovresti scrivere:

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

Vedi le note di aggiornamento .

Nota che puoi attivare mod_access_compat per usare le vecchie direttive (pre 2.4) in apache 2.4. Potrebbe essere utile se si desidera escludere rapidamente questo come causa del problema iniziale, ma francamente, la migrazione Requireè abbastanza semplice, non ha senso utilizzare questo modulo solo per rimandarlo.


3
Potresti aver solo bisogno diRequire all granted
chrishiestand,


0

Ti manca:

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

Inoltre non è necessario:

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

Quella roba 'SetHandler None' è roba vecchia mod_python e non necessaria per mod_wsgi.


1
L' mediaalias è <Directory>necessario? L'unica contrib/admindirectory che posso trovare nella mia installazione di Django 1.4 non contiene un mediasottodir.
Richard Barnett,

Non dare per scontato che il tuo problema sia lo stesso. Pubblica una nuova domanda con tutti i tuoi dettagli specifici.
Graham Dumpleton,

Grazie, Graham; In realtà non ho alcun problema in quanto la grafite sembra funzionare bene quando si include l' mediaalias & <Directory>. Ti faccio una nuova domanda se colpisce problemi.
Richard Barnett,

0

L'impostazione delle autorizzazioni di esecuzione ha risolto il problema per me:

chmod u+x graphite.wsgi
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.