การรับไคลเอ็นต์ถูกปฏิเสธเมื่อเข้าถึงสคริปต์กราไฟท์ wsgi


16

ฉันพยายามที่จะตั้งค่าไฟท์บน Mac OS X 10.7 lion ฉันได้ตั้ง apache เพื่อเรียกสคริปต์ python graphite ผ่าน WSGI แต่เมื่อฉันพยายามเข้าถึงมันฉันจะได้รับการห้ามจาก apache และในบันทึกข้อผิดพลาด .

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

ฉันได้ตรวจสอบแล้วว่าตำแหน่งสคริปต์ได้รับอนุญาตใน httpd.conf และการอนุญาตของไฟล์ แต่ดูเหมือนว่าถูกต้อง ฉันต้องทำอะไรเพื่อเข้าถึง ด้านล่างคือ httpd.conf ซึ่งเกือบจะเป็นตัวอย่างของกราไฟท์

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

คุณช่วยได้ไหม

คำตอบ:


24

เนื่องจาก apache 2.4 Require all grantedจำเป็นต้องมี:

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

มากถึง apache 2.2 คุณจะเขียน:

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

ดูบันทึกการอัพเกรด

โปรดทราบว่าคุณสามารถเปิดใช้งานmod_access_compatเพื่อใช้คำสั่งเก่า (ก่อน 2.4) ใน apache 2.4 มันอาจมีประโยชน์หากคุณต้องการแยกแยะสิ่งนี้อย่างรวดเร็วว่าเป็นสาเหตุของปัญหาเริ่มต้นของคุณ แต่ตรงไปตรงมาการโยกย้ายไปที่Requireนั้นง่ายพอไม่มีจุดใช้โมดูลนี้เพื่อเลื่อนออกไป


3
คุณอาจต้องการเพียงRequire all granted
chrishiestand


0

คุณหายไป:

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

คุณไม่จำเป็นต้อง:

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

นั่นคือสิ่งที่ 'SetHandler None' เป็นสิ่งเก่า mod_python และไม่จำเป็นสำหรับ mod_wsgi


1
เป็นmediaนามแฝงและ<Directory>จำเป็น? contrib/adminไดเรกทอรีเดียวที่ฉันพบในการติดตั้ง Django 1.4 ของฉันไม่มีmediasubdir
Richard Barnett

อย่าคิดว่าปัญหาของคุณเหมือนกัน โพสต์คำถามใหม่พร้อมรายละเอียดเฉพาะทั้งหมดของคุณ
Graham Dumpleton

ขอบคุณเกรแฮม ฉันไม่จริงมีปัญหาเป็นกราไฟท์ดูเหมือนว่าจะทำงานดีเมื่อรวมทั้งmediaนามแฝง <Directory>& ฉันจะถามคำถามใหม่หากพบปัญหา
Richard Barnett

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.