it-swarm-ja.com

Django / Apache / mod_wsgi:ホームディレクトリをワールド実行可能にすることなく403を回避する方法は?

[最新のステータスについては、質問の下部をご覧ください!]

Vanilla Debian6.0マシンでApache + mod_wsgiを使用してDjangoをセットアップしようとしています。

残念ながら、ブラウザでマシンのIPアドレスにアクセスすると、403 Forbidden: You don't have permission to access / on this serverが表示されます。 Apacheログには次のように書かれています。

[Wed May 04 10:20:56 2011] [error] [client x.x.x.x] (13)Permission denied: access to / denied

これが私がやろうとしたことです。次のように、新しいDjangoプロジェクトを~/fruit/myfruitに、いくつかのWSGI/Apacheファイルを~/fruit/Apacheに設定しました。

**~/fruit/Apache/Django.wsgi**
import os
import sys
path = '~/fruit'
if path not in sys.path:
    sys.path.append(path)
os.environ['Django_SETTINGS_MODULE'] = 'myfruit.settings'
import Django.core.handlers.wsgi
application = Django.core.handlers.wsgi.WSGIHandler()

**~/fruit/Apache/Django_wsgi.conf**
WSGIScriptAlias / "/root/fruit/Apache/Django.wsgi"
<Directory "/root/fruit/Apache">
Order deny,allow
Allow from all
</Directory>

そして、私はさまざまなApacheファイルを次のように編集しました。

**/etc/Apache2/httpd.conf **
LoadModule wsgi_module modules/mod_wsgi.so
Include "/root/fruit/Apache/Django_wsgi.conf"

**/etc/hosts**
127.0.0.1 localhost
[[my_ip_address]] debian debian

Apacheを再起動すると(rootとして実行)、次の警告が表示されます。

[email protected]:~/fruit/Apache# /etc/init.d/Apache2 restart
Restarting web server: Apache2[Wed May 04 10:27:36 2011] [warn] module wsgi_module is already loaded, skipping
Apache2: Could not reliably determine the server's fully qualified domain name, using [[my_ip_address]] for ServerName
 ... waiting [Wed May 04 10:27:37 2011] [warn] module wsgi_module is already loaded, skipping
Apache2: Could not reliably determine the server's fully qualified domain name, using [[my_ip_address]] for ServerName
.

これらがパーミッションエラーに関連しているかどうか、またはエラーメッセージが2回出力されることが重要かどうかはわかりません。

誰かが私が間違っていることを教えてもらえますか? Apacheの経験はほとんどありません!

どうもありがとう!

更新:ファイルのアクセス許可エラーの場合は、myfruitおよびApacheディレクトリ内のすべてのファイルとディレクトリ自体に対してchmod a+x *を実行し、Apacheを再起動しました。喜びはありません。

更新:ローカルホストに接続することさえできません:

[email protected]:~/fruit# wget http://localhost
--2011-05-04 10:44:41--  http://localhost/
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 403 Forbidden
2011-05-04 10:44:41 ERROR 403: Forbidden.

更新:OKで解決しましたrootディレクトリにchmod a+xを設定します。私はこれがまったく好きではありません-確かにそれはセキュリティホールであるに違いありませんか?代わりに何をすべきですか?

1
simon

rootとしてWebアプリケーションを実行することはお勧めできません!

すでに理解しているように、これは権限の問題です。/rootでa + xをchmodしなければならなかった理由は、Apacheを実行しているユーザーを含め、他のユーザーが/ rootディレクトリに対する権限を持っていないためです(プライベートである必要があります!)。

/ var/wwwフォルダーからWebサーバーのユーザー(debian IIRC上のwww-data)を使用してアプリケーションを提供するか、さらに良いことに、完全に新しいユーザーを作成します。

1
h0tw1r3