Bắt khách hàng bị từ chối khi truy cập tập lệnh than chì wsgi


16

Tôi đang cố gắng thiết lập than chì trên con sư tử Mac OS X 10.7 của mình, tôi đã thiết lập apache để gọi tập lệnh graphit python thông qua WSGI, nhưng khi tôi cố gắng truy cập nó, tôi bị cấm sử dụng apache và trong nhật ký lỗi .

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

Tôi đã kiểm tra vị trí tập lệnh được cho phép trong httpd.conf và các quyền của tệp, nhưng chúng có vẻ đúng. Tôi phải làm gì để có quyền truy cập. Dưới đây là httpd.conf, gần như ví dụ về than chì.

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

Bạn có thể giúp?

Câu trả lời:


24

Vì apache 2.4, Require all grantedđược yêu cầu:

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

Lên đến apache 2.2, bạn sẽ viết:

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

Xem ghi chú nâng cấp .

Lưu ý rằng bạn có thể kích hoạt mod_access_compat để sử dụng các lệnh cũ (trước 2.4) trong apache 2.4. Nó có thể hữu ích nếu bạn muốn nhanh chóng loại trừ điều này là nguyên nhân cho vấn đề ban đầu của bạn, nhưng thật lòng mà nói, việc di chuyển Requirelà đủ dễ dàng, không có điểm nào sử dụng mô-đun này chỉ để hoãn lại.


3
Bạn chỉ có thể cầnRequire all granted
chrishiestand


0

Bạn đang thiếu:

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

Bạn cũng không cần:

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

Đó là công cụ 'SetHandler Không' là công cụ mod_python cũ và không cần thiết cho mod_wsgi.


1
mediabí danh & <Directory>cần thiết? Thư mục duy nhất contrib/admintôi có thể tìm thấy trong bản cài đặt Django 1.4 không chứa thư mục con media.
Richard Barnett

Đừng cho rằng vấn đề của bạn là như nhau. Gửi một câu hỏi mới với tất cả các chi tiết cụ thể của bạn.
Graham Dumpleton

Cảm ơn, Graham; Tôi thực sự không có vấn đề gì vì Graphite dường như hoạt động tốt khi bao gồm mediabí danh & <Directory>. Tôi sẽ hỏi một câu hỏi mới nếu nó gặp vấn đề.
Richard Barnett

0

Thiết lập quyền thực thi đã sửa nó cho tôi:

chmod u+x graphite.wsgi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.