Client wird beim Zugriff auf ein wsgi-Graphit-Skript abgelehnt

16

Ich versuche, Graphite auf meinem Mac OS X 10.7 Lion einzurichten. Ich habe Apache so eingerichtet, dass es das Python-Graphite-Skript über WSGI aufruft. Wenn ich jedoch versuche, darauf zuzugreifen, erhalte ich ein Verbot von Apache und im Fehlerprotokoll .

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

Ich habe überprüft, ob der Speicherort der Skripte in httpd.conf und die Berechtigungen der Datei zulässig sind, aber sie scheinen korrekt zu sein. Was muss ich tun, um Zugang zu erhalten? Unten ist die httpd.conf, die fast das Graphitbeispiel ist.

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

Kannst du helfen?

Dr. BDO Adams
quelle

Antworten:

24

Seit Apache 2.4 Require all grantedwird benötigt:

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

Bis zu Apache 2.2 würden Sie schreiben:

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

Siehe Upgrade-Hinweise .

Beachten Sie, dass Sie mod_access_compat aktivieren können , um alte (vor 2.4) Direktiven in Apache 2.4 zu verwenden. Es kann nützlich sein, wenn Sie dies als Ursache für Ihr erstes Problem schnell ausschließen möchten, aber ehrlich gesagt ist die Migration zu Requireeinfach genug. Es hat keinen Sinn, dieses Modul nur zu verwenden, um es zu verschieben.

Bwire
quelle
3
Sie brauchen vielleicht nurRequire all granted
chrishiestand
0

Du fehlst:

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

Sie brauchen auch nicht:

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

Das 'SetHandler None'-Zeug ist altes mod_python-Zeug und wird für mod_wsgi nicht benötigt.

Graham Dumpleton
quelle
1
Ist der mediaAlias ​​& <Directory>notwendig? Das einzige contrib/adminVerzeichnis, das ich in meiner Django 1.4-Installation finden kann, enthält kein mediaUnterverzeichnis.
Richard Barnett
Gehen Sie nicht davon aus, dass Ihr Problem dasselbe ist. Stellen Sie eine neue Frage mit all Ihren spezifischen Details.
Graham Dumpleton
Danke, Graham; Ich habe eigentlich kein Problem, da Graphite beim Einfügen des mediaAlias ​​& gut zu funktionieren scheint <Directory>. Ich stelle eine neue Frage, wenn es Probleme gibt.
Richard Barnett
0

Das Setzen von Ausführungsberechtigungen hat es für mich behoben:

chmod u+x graphite.wsgi
Gerry
quelle