| revision-up-to: | 11321 (1.1) |
|---|
Apache と mod_wsgi の組み合わせは、推奨の Django の実運用環境です。
mod_wsgi は、 Django を含む Python WSGI インタフェース をサポートする Python アプリケーションを運用するときに使う Apache のモジュールです。 Django は mod_wsgi をサポートするすべてのバージョンの Apache 上で動作します。
mod_wsgi の公式ドキュメント はすばらしい出来で、 mod_wsgi を使う上で必要 なことがすべて書かれています。まずは インストールと設定のガイド から読み 始めるとよいでしょう。
mod_wsgi をインストールして有効にしたら、 httpd.conf ファイルを編集して、 以下の宣言を追加してください:
WSGIScriptAlias / /path/to/mysite/apache/django.wsgi
上の宣言の最初の引数は、アプリケーションを提供する場所 (/ はルート URL を表しています)、二つ目の引数はシステム上の「WSGI ファイル(後述)」の場所です。 WSGI は通常、プロジェクトの中に置きます。これで、 Apache はルート URL 以下 のすべてのリクエストを、指定の WSGI ファイルを使って処理します。
次は、実際に WSGI アプリケーションを作りましょう。そこで、 WSGIScriptAlias ディレクティブの二つ目の引数に指定した場所にファイルを 作成し、以下のようなスクリプトを記述します:
import os
import sys
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
プロジェクトが PYTHONPATH 上にないのなら、以下の 1 行を import 文の直後 に追加します:
sys.path.append('/usr/local/django')
'mysite.settings' や '/usr/local/django' は実際の自分の環境に合わせ て適切に設定してください。
Django 自身には、メディアファイルを自動的に提供する機能はありません。メディ アファイルの提供は Web サーバの仕事です。
メディアファイルの提供には、別個の Web サーバ、つまり Django を動作させてい ない別のサーバを使うよう勧めます。以下のようなサーバが、選択肢としておすす めです:
メディアファイルを Django が稼働しているのと同じ VirtualHost で提供せざ るを得ない場合には、 Apache を設定して、ある URL では静的なメディアを提供し、 別の URL では mod_wsgi インタフェースを介して Django に処理させるよう設定で きます。
以下の例では、 Django にサイトルート以下へのリクエストを処理させながら、 robots.txt, favicon.ico, CSS ファイル、および /media/ URL空間以 下のすべてのファイルは静的ファイルとして処理させます:
Alias /robots.txt /usr/local/wsgi/static/robots.txt
Alias /favicon.ico /usr/local/wsgi/static/favicon.ico
AliasMatch /([^/]*\.css) /usr/local/wsgi/static/styles/$1
Alias /media/ /usr/local/wsgi/static/media/
<Directory /usr/local/wsgi/static>
Order deny,allow
Allow from all
</Directory>
WSGIScriptAlias / /usr/local/wsgi/scripts/django.wsgi
<Directory /usr/local/wsgi/scripts>
Order allow,deny
Allow from all
</Directory>
mod_wsgi サイトで静的ファイルを提供するための方法は、 mod_wsgi ドキュメント の 静的ファイルのホスティング に詳しく解説されています。
その他詳細は、 Django 組み込みについての mod_wsgi のドキュメント を参照してください。このドキュメントには、 mod_wsgi でデプロイするときに使 う様々なオプションについての詳しい解説があります。
Aug 19, 2010