---
title: "Django を uWSGI とともに使うには？"
version: 5.1
locale: ja
source: https://docs.djangoproject.com/ja/5.1/howto/deployment/wsgi/uwsgi/
canonical: https://djangodocs.dev/ja/5.1/howto/deployment/wsgi/uwsgi/
---
# Django を uWSGI とともに使うには？

[uWSGI](https://uwsgi-docs.readthedocs.io/) は高速かつ自己回復的、開発者やシステム管理者にとって使いやすいアプリケーションコンテナサーバーで、純粋な C 言語で記述されています。

> **See also**
>
> uWSGI のドキュメントは、Django、nginx および uWSGI をカバーした [tutorial](https://uwsgi.readthedocs.io/en/latest/tutorials/Django_and_nginx.html) を提供しています (たくさんあるセットアップ方法の一例です)。以下のドキュメントは、Django を uWSGI と統合する方法に焦点を当てています。

## 前提条件: uWSGI

uWSGI の wiki には、いくつかの [installation procedures](https://uwsgi-docs.readthedocs.io/en/latest/Install.html) が記載されています。Python のパッケージマネージャーであるpipを使って、あらゆるバージョンの uWSGI を一つのコマンドでインストールすることができます。たとえば:

```console
# Install current stable version.
$ python -m pip install uwsgi

# Or install LTS (long term support).
$ python -m pip install https://projects.unbit.it/downloads/uwsgi-lts.tar.gz
```

### uWSGI モデル

uWSGI はクライアントサーバモデルで動作します。Web サーバー (nginx や Apache など) は `djangoo-uwsgi` "worker" プロセスと通信し、動的なコンテンツを提供します。

### Django に対して uWSGI サーバーを設定、開始する

uWSGI では、プロセスを設定する方法が複数提供されています。uWSGI's [configuration documentation](https://uwsgi.readthedocs.io/en/latest/Configuration.html) を参照してください。

以下はuWSGIサーバーを起動するコマンドの例です:

```shell
uwsgi --chdir=/path/to/your/project \
    --module=mysite.wsgi:application \
    --env DJANGO_SETTINGS_MODULE=mysite.settings \
    --master --pidfile=/tmp/project-master.pid \
    --socket=127.0.0.1:49152 \      # can also be a file
    --processes=5 \                 # number of worker processes
    --uid=1000 --gid=2000 \         # if root, uwsgi can drop privileges
    --harakiri=20 \                 # respawn processes taking more than 20 seconds
    --max-requests=5000 \           # respawn processes after serving 5000 requests
    --vacuum \                      # clear environment on exit
    --home=/path/to/virtual/env \   # optional path to a virtual environment
    --daemonize=/var/log/uwsgi/yourproject.log      # background the process
```

この例では、`mysite` と名付けられたトップレベルのプロジェクトパッケージがあり、またその中に `mysite/wsgi.py` という WSGI `application` オブジェクトを含むモジュールがあると仮定しています。これは、最近のバージョンの Django で `django-admin startproject mysite` (`mysite` には自分のプロジェクト名が入ります) を実行した場合、自動生成されるファイル構成です。もしこのファイルが存在しない場合、自分自身で作る必要があります。このファイルに記述すべきデフォルトの内容と、自分で追加できる部分に関しては、[WSGI とともにデプロイするには](/ja/5.1/howto/deployment/wsgi/) ドキュメントを参照してください。

Django 特有のオプションは以下の通りです:

- `chdir`: Python のインポートパス上で必要になるディレクトリへのパス -- つまり `mysite` パッケージを含むディレクトリです。
- `module`: 使われる WSGI モジュール -- 通常は [`startproject`](/ja/5.1/ref/django-admin/#django-admin-startproject) によって生成される `mysite.wsgi` モジュールです。
- `env`: 少なくとも [`DJANGO_SETTINGS_MODULE`](/ja/5.1/topics/settings/#envvar-DJANGO_SETTINGS_MODULE) を含む必要があります。
- `home`: プロジェクトの仮想環境へのパスを指定します。

ini 設定ファイルの例:

```ini
[uwsgi]
chdir=/path/to/your/project
module=mysite.wsgi:application
master=True
pidfile=/tmp/project-master.pid
vacuum=True
max-requests=5000
daemonize=/var/log/uwsgi/yourproject.log
```

ini 設定ファイルを使用する例:

```shell
uwsgi --ini uwsgi.ini
```

> **ファイルアップロード時の UnicodeEncodeError を修正する**
>
> 非 ASCII 文字を含むファイル名でファイルをアップロードするときに `UnicodeEncodeError` が発生する場合は、 `uwsgi.ini` に以下の設定を追加して、uWSGI が非 ASCII ファイル名を受け付けるようにしてください:
>
> ```ini
> env = LANG=en_US.UTF-8
> ```
>
> 詳細については、Unicode リファレンスガイドの [ファイル](/ja/5.1/ref/unicode/#unicode-files) セクションを参照してください。

uWSGI worker の開始、停止およびリロードに関する情報は、uWSGI ドキュメントの [managing the uWSGI process](https://uwsgi-docs.readthedocs.io/en/latest/Management.html) を参照してください。
