Django を uWSGI とともに使うには?Link to this heading

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

前提条件: uWSGILink to this heading

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

Shell
# Install current stable version.
$ pip install uwsgi

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

uWSGI モデルLink to this heading

uWSGI は、クライアント・サーバーモデルで作動します。ウェブサーバー (nginx や Apache 等) は、django-uwsgi の "worker" と通信して、動的コンテンツを提供します。

Django に対して uWSGI サーバーを設定、開始するLink to this heading

uWSGI では、プロセスを設定する方法が複数提供されています。uWSGI's configuration documentation を参照してください。

これは、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 virtualenv
    --daemonize=/var/log/uwsgi/yourproject.log      # background the process

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

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

  • chdir: Python のインポートパス上で必要になるディレクトリへのパス -- つまり mysite パッケージを含むディレクトリです。

  • module: 使われる WSGI モジュール -- 通常は startproject によって生成される mysite.wsgi モジュールです。

  • env: 通常、最低でも DJANGO_SETTINGS_MODULE を含む必要があります。

  • home: プロジェクトの virtualenv. へのパスで、任意です。

ini 設定ファイルの例:

Shell
[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

uWSGI worker の開始、停止およびリロードに関する情報は、uWSGI ドキュメントの managing the uWSGI process を参照してください。