Відмову клієнту під час доступу до графітного сценарію wsgi


16

Я намагаюся встановити графіт на моєму леві Mac OS X 10.7, я налаштував apache для виклику графітового сценарію python через 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>

До апашу 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
Христос


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, не містить mediaпідкаталогу.
Річард Барнетт

Не вважайте, що ваша проблема однакова. Опублікуйте нове запитання з усіма вашими конкретними деталями.
Грем Дамплетон

Спасибі, Грехем; У мене насправді немає проблеми, оскільки, здається, Graphite працює нормально, включаючи mediaпсевдонім & <Directory>. Я поставлю свіже запитання, чи не виникають це проблеми.
Річард Барнетт

0

Налаштування дозволів на виконання зафіксувало це для мене:

chmod u+x graphite.wsgi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.