uWSGIでDjangoを使用する方法—Djangoのドキュメント
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ドキュメントを参照してください。