{"title":"WSGI とともにデプロイするには","version":"5.2","locale":"ja","docname":"howto/deployment/wsgi/index","url":"/ja/5.2/howto/deployment/wsgi/","canonical":"https://djangodocs.dev/ja/5.2/howto/deployment/wsgi/","summary":"Django の主要なデプロイプラットフォームは、 Web サーバと Web アプリケーション に関して Python の標準である WSGI です。 Django の startproject 管理コマンドは、最小限のデフォルト WSGI 設定をセットアップしてくれます 。このデフォルト WSGI…","html":"<h1>WSGI とともにデプロイするには<a class=\"heading-anchor\" href=\"#how-to-deploy-with-wsgi\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Django の主要なデプロイプラットフォームは、 Web サーバと Web アプリケーション に関して Python の標準である <a class=\"reference external\" href=\"https://wsgi.readthedocs.io/en/latest/\">WSGI</a> です。</p>\n<p>Django の <a class=\"reference internal\" href=\"/ja/5.2/ref/django-admin/#django-admin-startproject\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">startproject</span></code></a> 管理コマンドは、最小限のデフォルト WSGI 設定をセットアップしてくれます 。このデフォルト WSGI 設定は、あなたのプロジェクトに合わせて調整でき、WSGI に準拠したアプリケーションサーバにその設定を使用させることができます。</p>\n<p>Django には以下の WSGI サーバのために、手引きとなるドキュメントが用意されています:</p>\n<div class=\"toctree-wrapper compound\">\n<ul>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/ja/5.2/howto/deployment/wsgi/gunicorn/\">Django を Gunicorn とともに使う</a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/ja/5.2/howto/deployment/wsgi/uwsgi/\">Django を uWSGI とともに使うには？</a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/ja/5.2/howto/deployment/wsgi/modwsgi/\">Django を Apache と <code class=\"docutils literal notranslate\"><span class=\"pre\">mod_wsgi</span></code> とともに使うには？</a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/ja/5.2/howto/deployment/wsgi/apache-auth/\">Django のユーザーデータベースに対する Apache からの認証</a></li>\n</ul>\n</div>\n<section id=\"the-application-object\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> オブジェクト<a class=\"heading-anchor\" href=\"#the-application-object\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>WSGI デプロイでキーとなる概念は、Web サーバがあなたのコードと通信するために使う <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> という呼び出し可能オブジェクトです。これは一般的に、サーバにアクセスできる Python モジュールの中で <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> という名前のオブジェクトとして提供されています。</p>\n<p><a class=\"reference internal\" href=\"/ja/5.2/ref/django-admin/#django-admin-startproject\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">startproject</span></code></a> コマンドは、この <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> 呼び出し可能オブジェクトを含む <code class=\"file docutils literal notranslate\"><span class=\"pre\">&lt;project_name&gt;/wsgi.py</span></code> ファイルを生成します。</p>\n<p>これは、Django のデプロイサーバーによって、また WSGI デプロイプロダクションにおいて、これら両方で使われます。</p>\n<p>WSGI サーバーは <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> 呼び出し可能オブジェクトへのパスを、その設定から取得します。Django のビルトインサーバー (要するに <a class=\"reference internal\" href=\"/ja/5.2/ref/django-admin/#django-admin-runserver\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">runserver</span></code></a> コマンド) は、<a class=\"reference internal\" href=\"/ja/5.2/ref/settings/#std-setting-WSGI_APPLICATION\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">WSGI_APPLICATION</span></code></a> の設定からこれを読み出します。デフォルトでは、 <code class=\"file docutils literal notranslate\"><span class=\"pre\">&lt;project_name&gt;/wsgi.py</span></code> 内の <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> 呼び出し可能オブジェクトを指す <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;project_name&gt;.wsgi.application</span></code> がセットされています。</p>\n</section>\n<section id=\"configuring-the-settings-module\">\n<h2>Settings モジュールを設定する<a class=\"heading-anchor\" href=\"#configuring-the-settings-module\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>WSGI サーバがあなたのアプリケーションを読み込むとき、Django は Settings モジュールをインポートする必要があります。そのモジュールは、あなたのアプリケーション全体が定義されている場所です。</p>\n<p>Django は適切な Settings モジュールを見つけるために、 <span class=\"target\" id=\"index-4\"></span><a class=\"reference internal\" href=\"/ja/5.2/topics/settings/#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></code></a> 環境変数を使用します。これは設定モジュールへのドット区切りのパスを含んでいなければなりません。開発時と実運用時で別々の値を使用することも可能です。どのように設定を組織するか次第です。</p>\n<p>この値が設定されていない場合、初期生成ファイルである <code class=\"file docutils literal notranslate\"><span class=\"pre\">wsgi.py</span></code> は、 <code class=\"docutils literal notranslate\"><span class=\"pre\">mysite.settings</span></code> をこの値として設定します。ここでの <code class=\"docutils literal notranslate\"><span class=\"pre\">mysite</span></code> はプロジェクトの名前です。このようにして初期設定ファイルを見つけるのが、 <a class=\"reference internal\" href=\"/ja/5.2/ref/django-admin/#django-admin-runserver\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">runserver</span></code></a> にあらかじめ用意されている方法です。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p>環境変数は、同一プロセス内においては同じ値が使われます。このため、単一プロセスで複数の Django サイトを運用する場合は、適切に機能しません。これは mod_wsgi を使用する場合に起こります。</p>\n<p>この問題を回避するためには、サイトごとに固有の daemon プロセスを mod_wsgi の daemon モードで運用するか、もしくは <code class=\"file docutils literal notranslate\"><span class=\"pre\">wsgi.py</span></code> ファイル内で <code class=\"docutils literal notranslate\"><span class=\"pre\">os.environ[&quot;DJANGO_SETTINGS_MODULE&quot;]</span> <span class=\"pre\">=</span> <span class=\"pre\">&quot;mysite.settings&quot;</span></code> を実行して環境変数の値を上書きします。</p>\n</aside>\n</section>\n<section id=\"applying-wsgi-middleware\">\n<h2>WSGIミドルウェアを適用する<a class=\"heading-anchor\" href=\"#applying-wsgi-middleware\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p><span class=\"target\" id=\"index-5\"></span><a class=\"pep reference external\" href=\"https://peps.python.org/pep-3333/#middleware-components-that-play-both-sides\"><strong>WSGI ミドルウェア</strong></a> を適用するには、アプリケーションオブジェクトをラップします。例えば、 <code class=\"file docutils literal notranslate\"><span class=\"pre\">wsgi.py</span></code> の一番下に以下の行を追加します:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</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=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">helloworld.wsgi</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">HelloWorldApplication</span>\n\n<span class=\"n\">application</span> <span class=\"o\">=</span> <span class=\"n\">HelloWorldApplication</span><span class=\"p\">(</span><span class=\"n\">application</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>DjangoのWSGIアプリケーションをカスタムWSGIアプリケーションに置き換え、その後でDjangoのWSGIアプリケーションに委譲することもできます。これは、Djangoアプリケーションを他のフレームワークのWSGIアプリケーションと組み合わせたい場合に有効です。</p>\n</section>","rootId":"how-to-deploy-with-wsgi","toc":[{"title":"application オブジェクト","anchor":"the-application-object","children":[]},{"title":"Settings モジュールを設定する","anchor":"configuring-the-settings-module","children":[]},{"title":"WSGIミドルウェアを適用する","anchor":"applying-wsgi-middleware","children":[]}],"breadcrumbs":[{"docname":"howto/index","title":"How-to ガイド","url":"/ja/5.2/howto/"},{"docname":"howto/deployment/index","title":"Djangoをデプロイするには","url":"/ja/5.2/howto/deployment/"}],"prev":{"docname":"howto/deployment/index","title":"Djangoをデプロイするには","url":"/ja/5.2/howto/deployment/"},"next":{"docname":"howto/deployment/wsgi/gunicorn","title":"Django を Gunicorn とともに使う","url":"/ja/5.2/howto/deployment/wsgi/gunicorn/"},"formats":{"html":"/ja/5.2/howto/deployment/wsgi/","markdown":"/ja/5.2/howto/deployment/wsgi.md","json":"/ja/5.2/howto/deployment/wsgi.json"},"source":"https://github.com/django/django/blob/stable/5.2.x/docs/howto/deployment/wsgi/index.txt","official":"https://docs.djangoproject.com/ja/5.2/howto/deployment/wsgi/","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"]}