{"title":"Så här distribuerar du med WSGI","version":"5.2","locale":"sv","docname":"howto/deployment/wsgi/index","url":"/sv/5.2/howto/deployment/wsgi/","canonical":"https://djangodocs.dev/sv/5.2/howto/deployment/wsgi/","summary":"Djangos primära distributionsplattform är WSGI , Python-standarden för webbservrar och applikationer. Djangos hanteringskommando startproject sätter upp en minimal…","html":"<h1>Så här distribuerar du med 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>Djangos primära distributionsplattform är <a class=\"reference external\" href=\"https://wsgi.readthedocs.io/en/latest/\">WSGI</a>, Python-standarden för webbservrar och applikationer.</p>\n<p>Djangos hanteringskommando <a class=\"reference internal\" href=\"/sv/5.2/ref/django-admin/#django-admin-startproject\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">startproject</span></code></a> sätter upp en minimal standardkonfiguration för WSGI åt dig, som du kan justera efter behov för ditt projekt och styra vilken WSGI-kompatibel applikationsserver som helst att använda.</p>\n<p>Django innehåller dokumentation för att komma igång med följande WSGI-servrar:</p>\n<div class=\"toctree-wrapper compound\">\n<ul>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/sv/5.2/howto/deployment/wsgi/gunicorn/\">Så här använder du Django med Gunicorn</a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/sv/5.2/howto/deployment/wsgi/uwsgi/\">Så här använder du Django med uWSGI</a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/sv/5.2/howto/deployment/wsgi/modwsgi/\">Så här använder du Django med Apache och <code class=\"docutils literal notranslate\"><span class=\"pre\">mod_wsgi</span></code></a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/sv/5.2/howto/deployment/wsgi/apache-auth/\">Hur man autentiserar sig mot Djangos användardatabas från Apache</a></li>\n</ul>\n</div>\n<section id=\"the-application-object\">\n<h2>Objektet <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>applikation<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>Nyckelbegreppet för att distribuera med WSGI är <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> callable som applikationsservern använder för att kommunicera med din kod. Den tillhandahålls vanligen som ett objekt med namnet <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> i en Python-modul som är tillgänglig för servern.</p>\n<p>Kommandot <a class=\"reference internal\" href=\"/sv/5.2/ref/django-admin/#django-admin-startproject\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">startproject</span></code></a> skapar en fil <code class=\"file docutils literal notranslate\"><span class=\"pre\">&lt;project_name&gt;/wsgi.py</span></code> som innehåller en sådan <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> callable.</p>\n<p>Den används både av Djangos utvecklingsserver och i WSGI-produktionsdistributioner.</p>\n<p>WSGI-servrar hämtar sökvägen till <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> callable från sin konfiguration. Djangos inbyggda server, nämligen kommandot <a class=\"reference internal\" href=\"/sv/5.2/ref/django-admin/#django-admin-runserver\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">runserver</span></code></a>, läser den från inställningen <a class=\"reference internal\" href=\"/sv/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>. Som standard är den inställd på <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;project_name&gt;.wsgi.application</span></code>, som pekar på anropet <code class=\"docutils literal notranslate\"><span class=\"pre\">application</span></code> i <code class=\"file docutils literal notranslate\"><span class=\"pre\">&lt;project_name&gt;/wsgi.py</span></code>.</p>\n</section>\n<section id=\"configuring-the-settings-module\">\n<h2>Konfigurera inställningsmodulen<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>När WSGI-servern laddar din applikation måste Django importera inställningsmodulen - det är där hela din applikation definieras.</p>\n<p>Django använder miljövariabeln <span class=\"target\" id=\"index-4\"></span><a class=\"reference internal\" href=\"/sv/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> för att hitta rätt inställningsmodul. Den måste innehålla den prickade sökvägen till inställningsmodulen. Du kan använda ett annat värde för utveckling och produktion; det beror helt på hur du organiserar dina inställningar.</p>\n<p>Om den här variabeln inte är inställd, ställer standard <code class=\"file docutils literal notranslate\"><span class=\"pre\">wsgi.py</span></code> in den på <code class=\"docutils literal notranslate\"><span class=\"pre\">mysite.settings</span></code>, där <code class=\"docutils literal notranslate\"><span class=\"pre\">mysite</span></code> är namnet på ditt projekt. Det är så <a class=\"reference internal\" href=\"/sv/5.2/ref/django-admin/#django-admin-runserver\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">runserver</span></code></a> upptäcker standardinställningsfilen som standard.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>Eftersom miljövariabler är processövergripande fungerar inte detta när du kör flera Django-webbplatser i samma process. Detta händer med mod_wsgi.</p>\n<p>För att undvika detta problem, använd mod_wsgis daemonläge med varje webbplats i sin egen daemonprocess, eller åsidosätt värdet från miljön genom att tvinga fram <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> i din <code class=\"file docutils literal notranslate\"><span class=\"pre\">wsgi.py`</span></code>.</p>\n</aside>\n</section>\n<section id=\"applying-wsgi-middleware\">\n<h2>Tillämpning av WSGI-mellanprogram<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>För att tillämpa <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 middleware</strong></a> kan du linda in applikationsobjektet. Till exempel kan du lägga till dessa rader längst ner i <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>Du kan också ersätta Djangos WSGI-applikation med en egen WSGI-applikation som senare delegerar till Djangos WSGI-applikation, om du vill kombinera en Django-applikation med en WSGI-applikation från ett annat ramverk.</p>\n</section>","rootId":"how-to-deploy-with-wsgi","toc":[{"title":"Objektet ``applikation","anchor":"the-application-object","children":[]},{"title":"Konfigurera inställningsmodulen","anchor":"configuring-the-settings-module","children":[]},{"title":"Tillämpning av WSGI-mellanprogram","anchor":"applying-wsgi-middleware","children":[]}],"breadcrumbs":[{"docname":"howto/index","title":"Hur man gör-guider","url":"/sv/5.2/howto/"},{"docname":"howto/deployment/index","title":"Så här distribuerar du Django","url":"/sv/5.2/howto/deployment/"}],"prev":{"docname":"howto/deployment/index","title":"Så här distribuerar du Django","url":"/sv/5.2/howto/deployment/"},"next":{"docname":"howto/deployment/wsgi/gunicorn","title":"Så här använder du Django med Gunicorn","url":"/sv/5.2/howto/deployment/wsgi/gunicorn/"},"formats":{"html":"/sv/5.2/howto/deployment/wsgi/","markdown":"/sv/5.2/howto/deployment/wsgi.md","json":"/sv/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/sv/5.2/howto/deployment/wsgi/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}