---
title: "WSGI とともにデプロイするには"
version: 4.1
locale: ja
source: https://docs.djangoproject.com/ja/4.1/howto/deployment/wsgi/
canonical: https://djangodocs.dev/ja/4.1/howto/deployment/wsgi/
---
# WSGI とともにデプロイするには

Django の主要なデプロイプラットフォームは、 Web サーバと Web アプリケーション に関して Python の標準である [WSGI](https://wsgi.readthedocs.io/en/latest/) です。

Django's [`startproject`](/ja/4.1/ref/django-admin/#django-admin-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 サーバのために、手引きとなるドキュメントが用意されています:

- [How to use Django with Gunicorn](/ja/4.1/howto/deployment/wsgi/gunicorn/)
- [Django を uWSGI とともに使うには？](/ja/4.1/howto/deployment/wsgi/uwsgi/)
- [Django を Apache と `mod_wsgi` とともに使うには？](/ja/4.1/howto/deployment/wsgi/modwsgi/)
- [How to authenticate against Django's user database from Apache](/ja/4.1/howto/deployment/wsgi/apache-auth/)

## `application` オブジェクト

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

[`startproject`](/ja/4.1/ref/django-admin/#django-admin-startproject) コマンドは、この `application` 呼び出し可能オブジェクトを含む `<project_name>/wsgi.py` ファイルを生成します。

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

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

## Settings モジュールを設定する

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

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

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

> **Note**
>
> 環境変数は、同一プロセス内においては同じ値が使われます。このため、単一プロセスで複数の Django サイトを運用する場合は、適切に機能しません。これは mod\_wsgi を使用する場合に起こります。
>
> この問題を回避するためには、サイトごとに固有の daemon プロセスを mod\_wsgi の daemon モードで運用するか、もしくは `wsgi.py` ファイル内で `os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings"` を実行して環境変数の値を上書きします。

## Applying WSGI middleware

To apply [**WSGI middleware**](https://peps.python.org/pep-3333/#middleware-components-that-play-both-sides) you can wrap the application
object. For instance you could add these lines at the bottom of
`wsgi.py`:

```
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.
