WSGI とともにデプロイするにはLink to this heading

Django の主要なデプロイプラットフォームは、 Web サーバと Web アプリケーション に関して Python の標準である WSGI です。

Django's startproject management command sets up a minimal default WSGI configuration for you, which you can tweak as needed for your project, and direct any WSGI-compliant application server to use.

Django には以下の WSGI サーバのために、手引きとなるドキュメントが用意されています:

application オブジェクトLink to this heading

WSGI デプロイでキーとなる概念は、Web サーバがあなたのコードと通信するために使う application という呼び出し可能オブジェクトです。これは一般的に、サーバにアクセスできる Python モジュールの中で application という名前のオブジェクトとして提供されています。

startproject コマンドは、この application 呼び出し可能オブジェクトを含む <project_name>/wsgi.py ファイルを生成します。

これは、Django のデプロイサーバーによって、また WSGI デプロイプロダクションにおいて、これら両方で使われます。

WSGI サーバーは application 呼び出し可能オブジェクトへのパスを、その設定から取得します。Django のビルトインサーバー (要するに runserver コマンド) は、WSGI_APPLICATION の設定からこれを読み出します。デフォルトでは、 <project_name>/wsgi.py 内の application 呼び出し可能オブジェクトを指す <project_name>.wsgi.application がセットされています。

Settings モジュールを設定するLink to this heading

WSGI サーバがあなたのアプリケーションを読み込むとき、Django は Settings モジュールをインポートする必要があります。そのモジュールは、あなたのアプリケーション全体が定義されている場所です。

Django は適切な Settings モジュールを見つけるために、 DJANGO_SETTINGS_MODULE 環境変数を使用します。これは設定モジュールへのドット区切りのパスを含んでいなければなりません。開発時と実運用時で別々の値を使用することも可能です。どのように設定を組織するか次第です。

この値が設定されていない場合、初期生成ファイルである wsgi.py は、 mysite.settings をこの値として設定します。ここでの mysite はプロジェクトの名前です。このようにして初期設定ファイルを見つけるのが、 runserver にあらかじめ用意されている方法です。

Applying WSGI middlewareLink to this heading

To apply WSGI middleware you can wrap the application object. For instance you could add these lines at the bottom of wsgi.py:

Code
from helloworld.wsgi import HelloWorldApplication
application = HelloWorldApplication(application)

You could also replace the Django WSGI application with a custom WSGI application that later delegates to the Django WSGI application, if you want to combine a Django application with a WSGI application of another framework.