Konfigurace webových aplikací v Pythonu pro službu IIS
Pokud používáte Internetová informační služba (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 v Pythonu tak, aby služba IIS správně zpracovávala kód Pythonu. Konfigurace se provádí prostřednictvím nastavení v web.config
souboru pro webovou aplikaci Python. 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
pip install -r requirements.txt
příkazu.
Nastavení web.config tak, aby odkazovat na interpret Pythonu
Soubor web.config
pro vaši aplikaci v Pythonu dává webovému serveru SLUŽBY 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ší proveďte tyto úpravy automaticky. Pro Visual Studio 2017 a novější je nutné soubor upravit web.config
ručně.
Pokud projekt ještě soubor neobsahuje web.config
, můžete ho přidat tak, že kliknete pravým tlačítkem na adresář projektu, vyberete Přidat > novou položku a vyhledáte web.config
nebo vytvoříte prázdný web.config
soubor 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 web.config
souboru. Atribut processPath
odkazuje na interpret Pythonu rozšíření webu. 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 poskytnout:
<?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 HTTP_PLATFORM_PORT
proměnná prostředí obsahuje port, na který má 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 projekt WFastCGI už není zachován a může vést k chybám.
Pokud chcete použít FastCGI, nejprve nainstalujte a nakonfigurujte balíček wfastcgi, jak je popsáno v pypi.org/project/wfastcgi/.
Dále upravte soubor aplikace web.config
tak, aby zahrnoval úplné cesty ke spustitelnému python.exe
souboru a wfastcgi.py
souboru v klíči PythonHandler
. Následující kroky předpokládají, že python je 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.
PythonHandler
Upravte položku vweb.config
souboru tak, aby cesta odpovídala umístění instalace Pythonu. Další informace naleznete v tématu Referenční informace ke konfiguraci 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>
<appSettings>
V částiweb.config
souboru 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 dostupné jako proměnné prostředí:- Hodnota
PYTHONPATH
klíče 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
WSGI_HANDLER
Podle potřeby nastavte položku vweb.config
souboru pro architekturu, kterou používáte:Láhev: Přidejte za
app.wsgi_app
hodnotu závorky, jak je znázorněno v tomto příkladu. Závorky jsou nezbytné, protože objekt je funkce spíše než proměnná. Syntaxi můžete zobrazit vapp.py
souboru.<!-- Bottle apps only --> <add key="WSGI_HANDLER" value="app.wsgi_app()"/>
Flask: Změňte
WSGI_HANDLER
hodnotu na místo, kde<project_name>.app
<project_name>
odpovídá názvu projektu. Přesný identifikátor najdete tak, že se podíváte nafrom <project_name> import app
příkaz vrunserver.py
souboru. Pokud je projekt například pojmenovanýFlaskAzurePublishExample
, 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 projekty Django jsou potřeba
web.config
dvě změny.WSGI_HANDLER
Změňte hodnotu nadjango.core.wsgi.get_wsgi_application()
. Objekt je vwsgi.py
souboru.<!-- Django apps only --> <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()"/>
Přidejte následující položku bezprostředně za položku pro
WSGI_HANDLER
klíč. Nahraďte hodnotuDjangoAzurePublishExample
názvem projektu:<add key="DJANGO_SETTINGS_MODULE" value="django_iis_example.settings" />
Pouze aplikace Django: Do souboru projektu
settings.py
Django přidejte do položky doménu adresy URL webu nebo IP adresuALLOWED_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 settings.py
souboru 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 ho publikovat do počítače se spuštěnou službou IIS z Průzkumník řešení. Klikněte pravým tlačítkem myši na projekt, vyberte Publikovat a 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í informace ke konfiguraci služby IIS (iis.net)
- Instalace interpretů Pythonu
- Virtuální počítače s Windows v Azure