Konfigurace webových aplikací v Pythonu pro službu IIS
Pokud používáte internetovou informační službu (IIS) jako webový server na počítači s Windows (včetně virtuálních počítačů s Windows v Azure), musíte nakonfigurovat webovou aplikaci Python tak, aby služba IIS správně zpracovávala kód Pythonu. Konfigurace se provádí prostřednictvím nastavení v souboru web.config
webové aplikace v Pythonu. Tento článek popisuje, jak nakonfigurovat potřebná nastavení.
Požadavky
Python je nainstalovaný ve Windows. Pokud chcete spustit webovou aplikaci, nejprve nainstalujte požadovanou verzi Pythonu přímo na hostitelský počítač s Windows, jak je popsáno v tématu Instalace interpretů Pythonu.
- Určete umístění interpreta
python.exe
. Pro usnadnění můžete toto umístění přidat do proměnné prostředí PATH.
- Určete umístění interpreta
Nainstalované požadované balíčky. Pro vyhrazeného hostitele můžete ke spuštění aplikace místo virtuálního prostředí použít globální prostředí Pythonu. Proto můžete nainstalovat všechny požadavky vaší aplikace do globálního prostředí spuštěním příkazu
pip install -r requirements.txt
.
Nastavte web.config tak, aby odkazoval na interpret Pythonu.
Soubor web.config
vaší aplikace v Pythonu dává webovému serveru IIS (verze 7 nebo novější) ve Windows pokyn, jak by měl zpracovávat požadavky Pythonu prostřednictvím HttpPlatformHandler (doporučeno) nebo FastCGI. Visual Studio verze 2015 a starší tyto úpravy provádějí automaticky. Pro Visual Studio 2017 a novější je nutné soubor web.config
upravit ručně.
Pokud projekt ještě neobsahuje soubor web.config
, můžete ho přidat tak, že kliknete pravým tlačítkem na adresář projektu, vyberete Přidat > Nová položka a vyhledáte web.config
nebo vytvoříte prázdný soubor web.config
XML.
Možnost 1: Konfigurace obslužné rutiny HttpPlatformHandler
Modul HttpPlatform předává připojení soketů přímo do samostatného procesu Pythonu. Tento průchod umožňuje spustit libovolný webový server, který se vám líbí, ale vyžaduje spouštěcí skript, který spouští místní webový server. Tento přístup se běžně provádí pomocí webové architektury Pythonu, jako je Flask nebo Django. Skript zadáte v <httpPlatform>
elementu souboru web.config
. Atribut processPath
odkazuje na interpret Pythonu webového rozšíření. Atribut arguments
odkazuje na spouštěcí skript, který spouští místní webový server, v tomto případě runserver.py
a všechny argumenty, které chcete zadat:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="PythonHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
</handlers>
<httpPlatform processPath="c:\python36-32\python.exe"
arguments="c:\home\site\wwwroot\runserver.py --port %HTTP_PLATFORM_PORT%"
stdoutLogEnabled="true"
stdoutLogFile="c:\home\LogFiles\python.log"
startupTimeLimit="60"
processesPerApplication="16">
<environmentVariables>
<environmentVariable name="SERVER_PORT" value="%HTTP_PLATFORM_PORT%" />
</environmentVariables>
</httpPlatform>
</system.webServer>
</configuration>
V tomto příkladu proměnná prostředí HTTP_PLATFORM_PORT
obsahuje port, na který má váš místní server naslouchat pro připojení z localhost
. Tento příklad také ukazuje, jak vytvořit jinou proměnnou prostředí SERVER_PORT
. Proměnné prostředí můžete vytvářet a přiřazovat podle potřeby.
Možnost 2: Konfigurace obslužné rutiny FastCGI
Případně můžete ke konfiguraci aplikací použít FastCGI. FastCGI je rozhraní, které funguje na úrovni požadavku. Služba IIS přijímá příchozí připojení a předává každý požadavek do aplikace WSGI spuštěné v jednom nebo více trvalých procesech Pythonu.
Poznámka
I když můžete projekt nastavit pomocí FastCGI, doporučujeme ke konfiguraci aplikací použít HttpPlatformHandler, protože WFastCGI projekt už není zachován a může vést k chybám.
Chcete-li použít FastCGI, nejprve nainstalujte a nakonfigurujte balíček wfastcgi, jak je popsáno v pypi.org/project/wfastcgi/.
Dále upravte soubor web.config
aplikace tak, aby zahrnoval úplné cesty ke spustitelnému souboru python.exe
a souboru wfastcgi.py
v klíči PythonHandler
. Následující kroky předpokládají, že je Python nainstalovaný ve složce c:\python36-32 a kód aplikace je ve složce c:\home\site\wwwroot. Upravte tyto hodnoty pro cesty odpovídajícím způsobem.
Upravte položku
PythonHandler
v souboruweb.config
tak, aby cesta odpovídala umístění instalace Pythonu. Další informace naleznete v referenční dokumentaci konfigurace služby IIS (iis.net).<system.webServer> <handlers> <add name="PythonHandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="c:\python36-32\python.exe|c:\python36-32\wfastcgi.py" resourceType="Unspecified" requireAccess="Script"/> </handlers> </system.webServer>
V
<appSettings>
části souboruweb.config
přidejte klíče proWSGI_HANDLER
,WSGI_LOG
(volitelné) aPYTHONPATH
:<appSettings> <add key="PYTHONPATH" value="c:\home\site\wwwroot"/> <!-- The handler here is specific to Bottle; see the next section. --> <add key="WSGI_HANDLER" value="app.wsgi_app()"/> <add key="WSGI_LOG" value="c:\home\LogFiles\wfastcgi.log"/> </appSettings>
Tyto
<appSettings>
hodnoty jsou pro vaši aplikaci k dispozici jako proměnné prostředí:- Hodnota klíče
PYTHONPATH
se dá volně rozšířit, ale musí obsahovat kořen aplikace. - Klíč
WSGI_HANDLER
musí odkazovat na aplikaci WSGI, která se dá importovat z vaší aplikace. - Klíč
WSGI_LOG
je volitelný, ale pro ladění aplikace se doporučuje klíč.
- Hodnota klíče
Nastavte položku
WSGI_HANDLER
v souboruweb.config
podle toho, jakou architekturu používáte:Bottle: Přidejte závorky za hodnotu
app.wsgi_app
, jak je ukázáno v tomto příkladu. Závorky jsou nezbytné, protože objekt je funkce spíše než proměnná. Syntaxi můžete zobrazit v souboruapp.py
.<!-- Bottle apps only --> <add key="WSGI_HANDLER" value="app.wsgi_app()"/>
Flask: Změňte hodnotu
WSGI_HANDLER
na<project_name>.app
, kde<project_name>
odpovídá názvu projektu. Přesný identifikátor najdete tak, že se podíváte na příkazfrom <project_name> import app
v souborurunserver.py
. Pokud má projekt například názevFlaskAzurePublishExample
, položka se zobrazí takto:<!-- Flask apps only: Change the project name to match your app --> <add key="WSGI_HANDLER" value="FlaskAzurePublishExample.app"/>
Django: Pro soubory projektů Django jsou potřeba dvě změny
web.config
.Změňte hodnotu
WSGI_HANDLER
nadjango.core.wsgi.get_wsgi_application()
. Objekt je v souboruwsgi.py
.<!-- Django apps only --> <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()"/>
Následující položku přidejte hned za položku pro klíč
WSGI_HANDLER
. Nahraďte hodnotuDjangoAzurePublishExample
názvem projektu:<add key="DJANGO_SETTINGS_MODULE" value="django_iis_example.settings" />
Pouze pro aplikace Django: V souboru projektu Django
settings.py
přidejte doménu nebo IP adresu URL vašeho webu do záznamuALLOWED_HOSTS
. Nahraďte 1.2.3.4 adresou URL nebo IP adresou:# Change the URL or IP address to your specific site ALLOWED_HOSTS = ['1.2.3.4']
Pokud adresu URL nepřidáte do výsledků pole, zobrazí se následující chyba:
DisallowedHost at / Invalid HTTP_HOST header: '\<site URL\>'. You might need to add '\<site URL\>' to ALLOWED_HOSTS.
Když je pole prázdné, Django automaticky povolí 'localhost'
a '127.0.0.1'
jako hostitele. Pokud přidáte produkční adresu URL, nebudou tyto hostitelské weby automaticky povolené. Z tohoto důvodu můžete chtít udržovat samostatné vývojové a produkční kopie souboru settings.py
nebo pomocí proměnných prostředí řídit hodnoty modulu runtime.
Nasazení do služby IIS nebo virtuálního počítače s Windows
Pokud máte v projektu správný web.config
soubor, můžete publikovat na počítač, který má spuštěnou službu IIS, z Průzkumníka řešení. Klikněte pravým tlačítkem myši na projekt, vyberte Publikovata pak vyberte IIS, FTP atd.. V takovém případě visual Studio kopíruje pouze soubory projektu na server. Zodpovídáte za veškerou konfiguraci na straně serveru.
Související obsah
- Referenční konfigurace IIS (iis.net)
- Instalace interpretů Pythonu
- virtuálních počítačů s Windows v Azure