Odmowa klienta podczas uzyskiwania dostępu do grafitowego skryptu wsgi

16

Próbuję skonfigurować grafit na moim lwie Mac OS X 10.7, skonfigurowałem apache do wywoływania grafitowego skryptu python przez WSGI, ale kiedy próbuję uzyskać do niego dostęp, dostaję zakaz apache i dziennika błędów .

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

Sprawdziłem, czy lokalizacja skryptów jest dozwolona w httpd.conf i uprawnienia do pliku, ale wydają się poprawne. Co muszę zrobić, aby uzyskać dostęp. Poniżej znajduje się httpd.conf, który jest prawie grafitowym przykładem.

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

Możesz pomóc?

Dr BDO Adams
źródło

Odpowiedzi:

24

Ponieważ apache 2.4 Require all grantedjest wymagany:

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

Do wersji Apache 2.2 napisałbyś:

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

Zobacz uwagi dotyczące aktualizacji .

Zauważ, że możesz aktywować mod_access_compat, aby używać starych (wcześniejszych niż 2.4) dyrektyw w Apache 2.4. Może to być przydatne, jeśli chcesz szybko wykluczyć to jako przyczynę początkowego problemu, ale szczerze mówiąc, migracja do Requirejest dość łatwa, nie ma sensu używać tego modułu, aby go odłożyć.

Bwire
źródło
3
Możesz tylko potrzebowaćRequire all granted
chrishiestand
0

Brakuje:

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

Nie potrzebujesz również:

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

To „SetHandler None” to stare mod_python i nie jest potrzebne dla mod_wsgi.

Graham Dumpleton
źródło
1
Czy mediaalias jest <Directory>konieczny? Jedyny contrib/adminkatalog, który mogę znaleźć w mojej instalacji Django 1.4, nie zawiera mediapodkatalogu.
Richard Barnett
Nie zakładaj, że Twój problem jest taki sam. Opublikuj nowe pytanie ze wszystkimi szczegółami.
Graham Dumpleton
Dzięki, Graham; Tak naprawdę nie mam problemu, ponieważ grafit wydaje się działać dobrze, jeśli zawiera mediaalias i <Directory>. Zadam nowe pytanie, czy to będzie problematyczne.
Richard Barnett
0

Ustawienie uprawnień do wykonywania naprawiło to dla mnie:

chmod u+x graphite.wsgi
Gerry
źródło