WSGI と Apache を使用して Django をセットアップする
質問
私は mod_python ではなく mod_wsgi と apache を販売してきました。すべてのパーツ (django、apache、mod_wsgi) をインストールしましたが、デプロイ中に問題が発生しました。
私はApache 2.2とDjango 1.0b2、mod_wsgi-2.3を搭載したOSX 10.5を使用しています。
私のアプリケーションは tred と呼ばれます。
関連するファイルは次のとおりです。httpd-vhosts (httpd-conf に含まれます)
NameVirtualHost tred:80 ServerName tred Alias /admin_media /usr/lib/python2.5/site-packages/django/contrib/admin/media Order allow,deny Allow from all Alias /media /Users/dmg/Sites/tred/media Order allow,deny Allow from all Alias / /Users/dmg/Sites/tred/ Order allow,deny Allow from all WSGIScriptAlias / /Users/dmg/Sites/tred/mod_wsgi-handler.wsgi WSGIDaemonProcess tred user=dmg group=staff processes=1 threads=10 WSGIProcessGroup tred
mod_wsgi-handle.wsgi
import sys import os sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..') os.environ['DJANGO_SETTINGS_MODULE'] = 'tred.settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler()
に行くときは http://tred レンダリングされた Web サイトではなく、ディレクトリのリストが表示されます。チュートリアルに正しく従ったつもりですが、明らかに正しくありません。これを機能させるにはどうすればよいでしょうか?
解決
を削除するとどうなりますか Alias /
指令?
他のヒント
Alias ディレクティブと WSGIScriptAlias ディレクティブには同じ優先順位がないことに注意してください。したがって、これらは書き込まれたとおりのファイル順序で処理されません。代わりに、すべての Alias ディレクティブが WSGIScriptAlias ディレクティブよりも優先されます。したがって、「/」のエイリアスが WSGIScriptAlias の後に出現しても問題はなく、それが優先されます。
それは動作します。理由は分かりませんが、そうなります。
今後の参考のために:
これが機能するのは、Apache がエイリアス ディレクティブを順番に処理し、最初に一致したものを使用するためです。いつも当たってた Alias /
, 、前のものに一致します。 WSGIScriptAlias
.
まず、エイリアスが処理される前にすべてのリダイレクトが処理されるため、
Redirect
またはRedirectMatch
エイリアスが適用されることはありません。次に、エイリアスとリダイレクトは、構成ファイルに出現する順序で処理され、最初に一致したものが優先されます。
このチュートリアルに従ってみてください - http://singlas.in/5-step-tutorial-for-using-django-with-apache-and-mod_wsgi/
Apache /var/www/ フォルダーと Django アプリの両方をルート (/) でホストしようとしています。Alias ディレクティブは WSGIScriptAlias よりも優先されるため、Apache ディレクトリがレンダリングされます。
/app で Django アプリをホストしてみてください。あるいは、/var/www/ フォルダーを /public などの別の場所でホストします。