uWSGIでDjangoを使用する方法—Djangoのドキュメント

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

uWSGIでDjangoを使用する方法

uWSGI は、純粋なCでコード化された、高速で自己修復型の開発者/システム管理者向けのアプリケーションコンテナサーバーです。

も参照してください

uWSGIドキュメントは、Django、nginx、およびuWSGI(多くの可能な展開セットアップの1つ)をカバーするチュートリアルを提供します。 以下のドキュメントは、DjangoをuWSGIと統合する方法に焦点を当てています。


前提条件:uWSGI

uWSGI wikiには、いくつかのインストール手順が記載されています。 Pythonパッケージマネージャーであるpipを使用すると、1つのコマンドで任意のuWSGIバージョンをインストールできます。 例えば:

# 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など)は、django-uwsgi「ワーカー」プロセスと通信して、動的コンテンツを提供します。


Django用のuWSGIサーバーの構成と起動

uWSGIは、プロセスを構成するための複数の方法をサポートしています。 uWSGIの構成ドキュメントを参照してください。

uWSGIサーバーを起動するコマンドの例を次に示します。

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という名前のトップレベルプロジェクトパッケージがあり、その中にWSGI applicationオブジェクトを含むモジュールmysite/wsgi.pyがあることを前提としています。 これは、最近のバージョンのDjangoでdjango-admin startproject mysiteを(mysiteの代わりに独自のプロジェクト名を使用して)実行した場合のレイアウトです。 このファイルが存在しない場合は、作成する必要があります。 このファイルに入れる必要のあるデフォルトの内容と、他に何を追加できるかについては、 WSGI を使用して展開する方法のドキュメントを参照してください。

ここでのDjango固有のオプションは次のとおりです。

  • chdir:Pythonのインポートパス上にある必要があるディレクトリへのパス。つまり、mysiteパッケージを含むディレクトリ。
  • module:使用するWSGIモジュール–おそらく:djadmin: `startproject` が作成するmysite.wsgiモジュール。
  • env:おそらく少なくとも DJANGO_SETTINGS_MODULE が含まれている必要があります。
  • home:プロジェクト仮想環境へのオプションのパス。

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構成ファイルの使用例:

uwsgi --ini uwsgi.ini

ファイルアップロードのUnicodeEncodeErrorを修正

非ASCII文字を含むファイル名のファイルをアップロードするときにUnicodeEncodeErrorが表示される場合は、これをuwsgi.iniに追加して、uWSGIが非ASCIIファイル名を受け入れるように構成されていることを確認してください。

env = LANG=en_US.UTF-8

詳細については、Unicodeリファレンスガイドのファイルセクションを参照してください。


uWSGIワーカーの開始、停止、および再ロードについては、 uWSGIプロセスの管理に関するuWSGIドキュメントを参照してください。