WSGIを使用してデプロイする方法—Djangoドキュメント

提供:Dev Guides
< DjangoDjango/docs/3.2.x/howto/deployment/wsgi/index
移動先:案内検索

WSGIを使用して展開する方法

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

Djangoの:djadmin: `startproject` 管理コマンドは、最小限のデフォルトのWSGI構成をセットアップします。これは、プロジェクトの必要に応じて微調整し、WSGI準拠のアプリケーションサーバーに使用を指示できます。

Djangoには、次のWSGIサーバーの入門ドキュメントが含まれています。

applicationオブジェクト

WSGIを使用したデプロイの重要な概念は、アプリケーションサーバーがコードとの通信に使用するapplication呼び出し可能オブジェクトです。 これは通常、サーバーにアクセス可能なPythonモジュールでapplicationという名前のオブジェクトとして提供されます。

:djadmin: `startproject` コマンドは、そのようなapplication呼び出し可能ファイルを含むファイル<project_name>/wsgi.pyを作成します。

これは、Djangoの開発サーバーと本番WSGIデプロイメントの両方で使用されます。

WSGIサーバーは、構成から呼び出し可能なapplicationへのパスを取得します。 Djangoの組み込みサーバー、つまり:djadmin: `runserver` コマンドは、:setting:` WSGI_APPLICATION` 設定から読み取ります。 デフォルトでは、<project_name>.wsgi.applicationに設定されています。これは、<project_name>/wsgi.pyで呼び出し可能なapplicationを指します。


設定モジュールの構成

WSGIサーバーがアプリケーションをロードするとき、Djangoは設定モジュールをインポートする必要があります—ここでアプリケーション全体が定義されます。

Djangoは、 DJANGO_SETTINGS_MODULE 環境変数を使用して、適切な設定モジュールを見つけます。 設定モジュールへの点線のパスが含まれている必要があります。 開発と本番には異なる値を使用できます。 それはすべて、設定をどのように整理するかによって異なります。

この変数が設定されていない場合、デフォルトのwsgi.pymysite.settingsに設定します。ここで、mysiteはプロジェクトの名前です。 これが、:djadmin: `runserver` がデフォルトでデフォルト設定ファイルを検出する方法です。

ノート

環境変数はプロセス全体であるため、同じプロセスで複数のDjangoサイトを実行する場合は機能しません。 これはmod_wsgiで発生します。

この問題を回避するには、各サイトで独自のデーモンプロセスでmod_wsgiのデーモンモードを使用するか、wsgi.pyos.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings"を適用して環境からの値をオーバーライドします。


WSGIミドルウェアの適用

WSGIミドルウェアを適用するには、アプリケーションオブジェクトをラップします。 たとえば、wsgi.pyの下部に次の行を追加できます。

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

Djangoアプリケーションを別のフレームワークのWSGIアプリケーションと組み合わせる場合は、DjangoWSGIアプリケーションを後でDjangoWSGIアプリケーションに委任するカスタムWSGIアプリケーションに置き換えることもできます。