revision-up-to: | 17812 (1.4) |
---|
Django の主要なデプロイプラットフォームは、 Web サーバと Web アプリケーション に関して Python の標準である WSGI です。
Django の startproject
管理コマンドはシンプルなデフォルトの WSGI 設
定をセットアップします。プロジェクトと WSGI 準拠の Web サーバに合わせて、必要
なら微調整することができます。 Django には以下の WSGI サーバのための手引きとな
るドキュメントが用意されています:
application
オブジェクト¶WSGI デプロイでのキー概念の一つは、中心となる application
という呼び出し可
能オブジェクトを設定することです。 Web サーバはこれをあなたのコードとの連絡の
ために使います。これはサーバにアクセスできる Python モジュールのなかで一般に
application
という名前のオブジェクトとして設定されるものです。
リリースノートを参照してください
startproject
コマンドは、そのような application オブジェクトを含む
projectname/wsgi.py
ファイルを作ります。
Note
以前のバージョンの Django からのアップデートして、 wsgi.py
ファイル
がプロジェクト内にない場合は、単にプロジェクトのトップレベルパッケージに
(おそらく settings.py
と urls.py
の次に) 下記の内容を含む
ファイルを追加できます。
runserver
がこの WSGI ファイルを使うようにしたければ、
WSGI_APPLICATION = "mysite.wsgi.application"
を settings に追加します。
(mysite
をプロジェクト名に置き換えてください)
最初の状態ではこのファイルは次のようになっています:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
# This application object is used by the development server
# as well as any WSGI server configured to use this file.
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
os.environ.setdefault
の行は、明示的に DJANGO_SETTINGS_MODULE
環
境変数が設定されていなければ、デフォルトの設定を使うようにセットします。
settings モジュールへのパスが正しくなるように、この行の mysite
をプロジェ
クトのパッケージ名で置き換える必要があるでしょう。
WSGI middleware を適用するために、同じファイルの中で application オブジェク トを単純にラップすることができます:
from helloworld.wsgi import HelloWorldApplication
application = HelloWorldApplication(application)
また、Django アプリケーションと他のフレームワークの WSGI アプリケーションと を組み合わせたければ、あとで Django の WSGI application に処理を委譲するような カスタムの WSGI application を用意して Django の WSGI application を置き換える こともできます。
Oct 26, 2017