Mendapatkan klien ditolak ketika mengakses skrip grafit wsgi

16

Saya mencoba mengatur grafit pada singa Mac OS X 10.7 saya, saya telah mengatur apache untuk memanggil skrip grafit python melalui WSGI, tetapi ketika saya mencoba mengaksesnya, saya mendapatkan forbiden dari apache dan di log kesalahan .

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

Saya telah memeriksa bahwa lokasi skrip diizinkan di httpd.conf, dan izin file, tetapi tampaknya benar. Apa yang harus saya lakukan untuk mendapatkan akses. Di bawah ini adalah httpd.conf, yang hampir merupakan contoh grafit.

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

Bisakah kamu menolong?

Dr BDO Adams
sumber

Jawaban:

24

Sejak apache 2.4, Require all granteddiperlukan:

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

Hingga apache 2.2, Anda akan menulis:

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

Lihat meningkatkan catatan .

Perhatikan bahwa Anda dapat mengaktifkan mod_access_compat untuk menggunakan arahan lama (pra 2.4) di apache 2.4. Mungkin berguna jika Anda ingin dengan cepat mengesampingkan ini sebagai penyebab masalah awal Anda, tetapi terus terang, migrasi ke Requirecukup mudah, tidak ada gunanya menggunakan modul ini hanya untuk menunda itu.

Bwire
sumber
3
Anda mungkin hanya perluRequire all granted
chrishiestand
0

Kamu hilang:

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

Anda juga tidak perlu:

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

Barang 'SetHandler None' itu adalah barang mod_python lama dan tidak diperlukan untuk mod_wsgi.

Graham Dumpleton
sumber
1
Apakah mediaalias & <Directory>perlu? Satu-satunya contrib/admindirektori yang dapat saya temukan di instalasi Django 1.4 saya tidak mengandung mediasubdir.
Richard Barnett
Jangan menganggap masalah Anda sama. Posting pertanyaan baru dengan semua detail spesifik Anda.
Graham Dumpleton
Terima kasih, Graham; Saya sebenarnya tidak memiliki masalah karena Graphite tampaknya berfungsi dengan baik ketika menyertakan mediaalias & <Directory>. Saya akan mengajukan pertanyaan baru jika itu mengenai masalah.
Richard Barnett
0

Pengaturan mengeksekusi izin memperbaikinya untuk saya:

chmod u+x graphite.wsgi
Gerry
sumber