{"title":"Django を uWSGI とともに使うには？","version":"6.0","locale":"ja","docname":"howto/deployment/wsgi/uwsgi","url":"/ja/6.0/howto/deployment/wsgi/uwsgi/","canonical":"https://djangodocs.dev/ja/6.0/howto/deployment/wsgi/uwsgi/","summary":"uWSGI は高速かつ自己回復的、開発者やシステム管理者にとって使いやすいアプリケーションコンテナサーバーで、純粋な C 言語で記述されています。","html":"<h1>Django を uWSGI とともに使うには？<a class=\"heading-anchor\" href=\"#how-to-use-django-with-uwsgi\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p><a class=\"reference external\" href=\"https://uwsgi-docs.readthedocs.io/\">uWSGI</a> は高速かつ自己回復的、開発者やシステム管理者にとって使いやすいアプリケーションコンテナサーバーで、純粋な C 言語で記述されています。</p>\n<aside class=\"admonition admonition-seealso\" role=\"note\">\n<p class=\"admonition-title\">参考</p>\n<p>uWSGI のドキュメントは、Django、nginx および uWSGI をカバーした <a class=\"reference external\" href=\"https://uwsgi.readthedocs.io/en/latest/tutorials/Django_and_nginx.html\">tutorial</a> を提供しています (たくさんあるセットアップ方法の一例です)。以下のドキュメントは、Django を uWSGI と統合する方法に焦点を当てています。</p>\n</aside>\n<section id=\"prerequisite-uwsgi\">\n<h2>前提条件: uWSGI<a class=\"heading-anchor\" href=\"#prerequisite-uwsgi\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>uWSGI の wiki には、いくつかの <a class=\"reference external\" href=\"https://uwsgi-docs.readthedocs.io/en/latest/Install.html\">installation procedures</a> が記載されています。Python のパッケージマネージャーであるpipを使って、あらゆるバージョンの uWSGI を一つのコマンドでインストールすることができます。たとえば:</p>\n<div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\"># </span>Install current stable version.\n<span class=\"gp\">$ </span>python -m pip install uwsgi\n</code></pre></div>\n<section id=\"uwsgi-model\">\n<h3>uWSGI モデル<a class=\"heading-anchor\" href=\"#uwsgi-model\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>uWSGI はクライアントサーバモデルで動作します。Web サーバー (nginx や Apache など) は <code class=\"docutils literal notranslate\">djangoo-uwsgi</code> &quot;worker&quot; プロセスと通信し、動的なコンテンツを提供します。</p>\n</section>\n<section id=\"configuring-and-starting-the-uwsgi-server-for-django\">\n<h3>Django に対して uWSGI サーバーを設定、開始する<a class=\"heading-anchor\" href=\"#configuring-and-starting-the-uwsgi-server-for-django\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>uWSGI では、プロセスを設定する方法が複数提供されています。uWSGI's <a class=\"reference external\" href=\"https://uwsgi.readthedocs.io/en/latest/Configuration.html\">configuration documentation</a> を参照してください。</p>\n<p>以下はuWSGIサーバーを起動するコマンドの例です:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>uwsgi --chdir<span class=\"o\">=</span>/path/to/your/project <span class=\"se\">\\</span>\n    --module<span class=\"o\">=</span>mysite.wsgi:application <span class=\"se\">\\</span>\n    --env <span class=\"nv\">DJANGO_SETTINGS_MODULE</span><span class=\"o\">=</span>mysite.settings <span class=\"se\">\\</span>\n    --master --pidfile<span class=\"o\">=</span>/tmp/project-master.pid <span class=\"se\">\\</span>\n    --socket<span class=\"o\">=</span><span class=\"m\">127</span>.0.0.1:49152 <span class=\"se\">\\ </span>     <span class=\"c1\"># can also be a file</span>\n    --processes<span class=\"o\">=</span><span class=\"m\">5</span> <span class=\"se\">\\ </span>                <span class=\"c1\"># number of worker processes</span>\n    --uid<span class=\"o\">=</span><span class=\"m\">1000</span> --gid<span class=\"o\">=</span><span class=\"m\">2000</span> <span class=\"se\">\\ </span>        <span class=\"c1\"># if root, uwsgi can drop privileges</span>\n    --harakiri<span class=\"o\">=</span><span class=\"m\">20</span> <span class=\"se\">\\ </span>                <span class=\"c1\"># respawn processes taking more than 20 seconds</span>\n    --max-requests<span class=\"o\">=</span><span class=\"m\">5000</span> <span class=\"se\">\\ </span>          <span class=\"c1\"># respawn processes after serving 5000 requests</span>\n    --vacuum <span class=\"se\">\\ </span>                     <span class=\"c1\"># clear environment on exit</span>\n    --home<span class=\"o\">=</span>/path/to/virtual/env <span class=\"se\">\\ </span>  <span class=\"c1\"># optional path to a virtual environment</span>\n    --daemonize<span class=\"o\">=</span>/var/log/uwsgi/yourproject.log      <span class=\"c1\"># background the process</span>\n</code></pre></div>\n<p>この例では、<code class=\"docutils literal notranslate\">mysite</code> と名付けられたトップレベルのプロジェクトパッケージがあり、またその中に <code class=\"file docutils literal notranslate\">mysite/wsgi.py</code> という WSGI <code class=\"docutils literal notranslate\">application</code> オブジェクトを含むモジュールがあると仮定しています。これは、最近のバージョンの Django で <code class=\"docutils literal notranslate\">django-admin startproject mysite</code> (<code class=\"docutils literal notranslate\">mysite</code> には自分のプロジェクト名が入ります) を実行した場合、自動生成されるファイル構成です。もしこのファイルが存在しない場合、自分自身で作る必要があります。このファイルに記述すべきデフォルトの内容と、自分で追加できる部分に関しては、<a class=\"reference internal\" href=\"/ja/6.0/howto/deployment/wsgi/\"><span class=\"doc\">WSGI とともにデプロイするには</span></a> ドキュメントを参照してください。</p>\n<p>Django 特有のオプションは以下の通りです:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">chdir</code>: Python のインポートパス上で必要になるディレクトリへのパス -- つまり <code class=\"docutils literal notranslate\">mysite</code> パッケージを含むディレクトリです。</p></li>\n<li><p><code class=\"docutils literal notranslate\">module</code>: 使われる WSGI モジュール -- 通常は <a class=\"reference internal\" href=\"/ja/6.0/ref/django-admin/#django-admin-startproject\"><code class=\"xref std std-djadmin docutils literal notranslate\">startproject</code></a> によって生成される <code class=\"docutils literal notranslate\">mysite.wsgi</code> モジュールです。</p></li>\n<li><p><code class=\"docutils literal notranslate\">env</code>: 少なくとも <span class=\"target\" id=\"index-2\"></span><a class=\"reference internal\" href=\"/ja/6.0/topics/settings/#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\">DJANGO_SETTINGS_MODULE</code></a> を含む必要があります。</p></li>\n<li><p><code class=\"docutils literal notranslate\">home</code>: プロジェクトの仮想環境へのパスを指定します。</p></li>\n</ul>\n<p>ini 設定ファイルの例:</p>\n<div class=\"code-block\" data-language=\"ini\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Ini</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Ini code\"><code><span class=\"k\">[uwsgi]</span>\n<span class=\"na\">chdir</span><span class=\"o\">=</span><span class=\"s\">/path/to/your/project</span>\n<span class=\"na\">module</span><span class=\"o\">=</span><span class=\"s\">mysite.wsgi:application</span>\n<span class=\"na\">master</span><span class=\"o\">=</span><span class=\"s\">True</span>\n<span class=\"na\">pidfile</span><span class=\"o\">=</span><span class=\"s\">/tmp/project-master.pid</span>\n<span class=\"na\">vacuum</span><span class=\"o\">=</span><span class=\"s\">True</span>\n<span class=\"na\">max-requests</span><span class=\"o\">=</span><span class=\"s\">5000</span>\n<span class=\"na\">daemonize</span><span class=\"o\">=</span><span class=\"s\">/var/log/uwsgi/yourproject.log</span>\n</code></pre></div>\n<p>ini 設定ファイルを使用する例:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>uwsgi --ini uwsgi.ini\n</code></pre></div>\n<aside class=\"admonition-fixing-unicodeencodeerror-for-file-uploads admonition\" role=\"note\">\n<p class=\"admonition-title\">ファイルアップロード時の <code class=\"docutils literal notranslate\">UnicodeEncodeError</code> を修正する</p>\n<p>非 ASCII 文字を含むファイル名でファイルをアップロードするときに <code class=\"docutils literal notranslate\">UnicodeEncodeError</code> が発生する場合は、 <code class=\"docutils literal notranslate\">uwsgi.ini</code> に以下の設定を追加して、uWSGI が非 ASCII ファイル名を受け付けるようにしてください:</p>\n<div class=\"code-block\" data-language=\"ini\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Ini</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Ini code\"><code><span class=\"na\">env</span> <span class=\"o\">=</span> <span class=\"s\">LANG=en_US.UTF-8</span>\n</code></pre></div>\n<p>詳細については、Unicode リファレンスガイドの <a class=\"reference internal\" href=\"/ja/6.0/ref/unicode/#unicode-files\"><span class=\"std std-ref\">ファイル</span></a> セクションを参照してください。</p>\n</aside>\n<p>uWSGI worker の開始、停止およびリロードに関する情報は、uWSGI ドキュメントの <a class=\"reference external\" href=\"https://uwsgi-docs.readthedocs.io/en/latest/Management.html\">managing the uWSGI process</a> を参照してください。</p>\n</section>\n</section>","rootId":"how-to-use-django-with-uwsgi","toc":[{"title":"前提条件: uWSGI","anchor":"prerequisite-uwsgi","children":[{"title":"uWSGI モデル","anchor":"uwsgi-model","children":[]},{"title":"Django に対して uWSGI サーバーを設定、開始する","anchor":"configuring-and-starting-the-uwsgi-server-for-django","children":[]}]}],"breadcrumbs":[{"docname":"howto/index","title":"How-to ガイド","url":"/ja/6.0/howto/"},{"docname":"howto/deployment/index","title":"Djangoをデプロイするには","url":"/ja/6.0/howto/deployment/"},{"docname":"howto/deployment/wsgi/index","title":"WSGI とともにデプロイするには","url":"/ja/6.0/howto/deployment/wsgi/"}],"prev":{"docname":"howto/deployment/wsgi/gunicorn","title":"Django を Gunicorn とともに使う","url":"/ja/6.0/howto/deployment/wsgi/gunicorn/"},"next":{"docname":"howto/deployment/wsgi/modwsgi","title":"Django を Apache と mod_wsgi とともに使うには？","url":"/ja/6.0/howto/deployment/wsgi/modwsgi/"},"formats":{"html":"/ja/6.0/howto/deployment/wsgi/uwsgi/","markdown":"/ja/6.0/howto/deployment/wsgi/uwsgi.md","json":"/ja/6.0/howto/deployment/wsgi/uwsgi.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/howto/deployment/wsgi/uwsgi.txt","official":"https://docs.djangoproject.com/ja/6.0/howto/deployment/wsgi/uwsgi/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}