WSGIグラファイトスクリプトにアクセスするときにクライアントを拒否する


16

Mac OS X 10.7ライオンにグラファイトを設定しようとしています。WSGI経由でPythonグラファイトスクリプトを呼び出すようにApacheを設定しましたが、アクセスしようとすると、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をアクティブにして、Apache 2.4の古い(2.4より前の)ディレクティブを使用できることに注意してください。これを最初の問題の原因としてすぐに除外したい場合に便利かもしれませんが、率直に言って、移行Requireは十分に簡単であり、このモジュールを延期するだけでは意味がありません。


3
あなただけが必要な場合がありますRequire all granted
chrishiestand 14


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/adminDjango 1.4インストールで見つけることができる唯一のディレクトリには、mediaサブディレクトリが含まれていません。
リチャードバーネット

あなたの問題が同じであると仮定しないでください。具体的な詳細をすべて記載した新しい質問を投稿してください。
グラハムダンプルトン

ありがとう、グラハム。Graphiteはmediaエイリアス&を含めると正常に機能しているように見えるため、実際には問題はありません<Directory>。問題が発生した場合は、新しい質問をします。
リチャードバーネット

0

実行権限を設定すると修正されました:

chmod u+x graphite.wsgi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.