Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
När du använder Internet Information Services (IIS) som en webbserver på en Windows-dator (inklusive virtuella Windows-datorer i Azure) måste du konfigurera Python-webbprogrammet så att IIS kan bearbeta Python-kod korrekt. Konfigurationen utförs via inställningarna i web.config-filen för Python-webbappen. I den här artikeln beskrivs hur du konfigurerar nödvändiga inställningar.
Förutsättningar
Python på Windows installerat. Om du vill köra en webbapp installerar du först den version av Python som krävs direkt på Windows-värddatorn enligt beskrivningen i Installera Python-tolkar.
- Identifiera platsen för denpython.exe tolken. För enkelhetens skull kan du lägga till den platsen i path-miljövariabeln.
Nödvändiga paket installerade. För en dedikerad värd kan du använda den globala Python-miljön för att köra din app i stället för en virtuell miljö. Därför kan du installera alla appkrav i den globala miljön genom att köra kommandot
pip install -r requirements.txt.
Ange web.config att peka på Python-tolken
Den web.config filen för python-programmet instruerar IIS-webbservern (version 7 eller senare) som körs i Windows om hur den ska hantera Python-begäranden via HttpPlatformHandler (rekommenderas) eller FastCGI. Visual Studio-versionerna 2015 och tidigare gör dessa ändringar automatiskt. För Visual Studio 2017 och senare måste du ändra web.config filen manuellt.
Om projektet inte redan innehåller en web.config fil kan du lägga till en genom att högerklicka på projektkatalogen, välja Lägg till > nytt objekt och söka efter web.config eller skapa en tom web.config XML-fil.
Alternativ 1: Konfigurera HttpPlatformHandler
HttpPlatform-modulen skickar socketanslutningar direkt till en fristående Python-process. Med den här genomströmningen kan du köra vilken webbserver du vill, men det krävs ett startskript som kör en lokal webbserver. Den här metoden utförs ofta med hjälp av ett Python-webbramverk, till exempel Flask eller Django. Du anger skriptet i elementet <httpPlatform> i web.config-filen . Attributet processPath pekar på platstilläggets Python-tolk. Attributet arguments pekar på startskriptet som kör en lokal webbserver, i det här fallet runserver.py och eventuella argument som du vill ange:
<?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>
I det här exemplet innehåller miljövariabeln HTTP_PLATFORM_PORT den port som din lokala server ska lyssna på efter anslutningar från localhost. Det här exemplet visar också hur du skapar en annan miljövariabel, SERVER_PORT. Du kan skapa och tilldela miljövariabler efter behov.
Alternativ 2: Konfigurera FastCGI-hanteraren
Du kan också använda FastCGI för att konfigurera dina appar. FastCGI är ett gränssnitt som fungerar på begärandenivå. IIS tar emot inkommande anslutningar och vidarebefordrar varje begäran till en WSGI-app (Web Server Gateway Interface) som körs i en eller flera beständiga Python-processer.
Not
Även om du kan konfigurera projektet med FastCGI rekommenderar vi att du använder HttpPlatformHandler för att konfigurera dina appar eftersom WFastCGI-projektet inte längre underhålls och kan leda till buggar.
Om du vill använda FastCGI installerar och konfigurerar du först wfastcgi-paketet enligt beskrivningen i pypi.org/project/wfastcgi/.
Ändra sedan programmets web.config-fil så att den innehåller de fullständiga sökvägarna till den körbarapython.exe och filen wfastcgi.py i PythonHandler nyckeln. Följande steg förutsätter att Python är installerat i mappen c:\python36-32 och appkoden finns i mappen c:\home\site\wwwroot. Justera dessa värden för dina sökvägar därefter.
PythonHandlerÄndra posten i web.config-filen så att sökvägen matchar Python-installationsplatsen. Mer information finns i Konfigurationsreferens för IIS på 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>I avsnittet
<appSettings>i filenweb.config lägger du till nycklar förWSGI_HANDLER,WSGI_LOG(valfritt) ochPYTHONPATH:<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>Dessa
<appSettings>värden är tillgängliga för din app som miljövariabler:- Värdet för den
PYTHONPATHnyckeln kan utökas fritt, men det måste innehålla appens rot. - Den
WSGI_HANDLERnyckeln måste peka på en WSGI-app som kan importeras från din app. - Den
WSGI_LOGnyckeln är valfri, men nyckeln rekommenderas för felsökning av din app.
- Värdet för den
Ange posten
WSGI_HANDLERi web.config-filen efter behov för det ramverk som du använder:Bottle: Lägg till parenteser efter värdet
app.wsgi_appsom du ser i det här exemplet. Parenteserna är nödvändiga eftersom objektet är en funktion snarare än en variabel. Du kan se syntaxen i filen app.py .<!-- Bottle apps only --> <add key="WSGI_HANDLER" value="app.wsgi_app()"/>Flask: Ändra värdet för
WSGI_HANDLERtill<project_name>.appdär<project_name>matchar namnet på projektet. Du hittar den exakta identifieraren genom att titta på -instruktionenfrom <project_name> import appi filen runserver.py . Om projektet till exempel heter FlaskAzurePublishExample visas posten på följande sätt:<!-- Flask apps only: Change the project name to match your app --> <add key="WSGI_HANDLER" value="FlaskAzurePublishExample.app"/>Django: Två ändringar krävs i web.config-filen för Django-projekt.
Ändra värdet för
WSGI_HANDLERtilldjango.core.wsgi.get_wsgi_application(). Objektet finns i filen wsgi.py .<!-- Django apps only --> <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()"/>Lägg till följande post direkt efter posten för
WSGI_HANDLER-tangenten. Ersätt värdetDjangoAzurePublishExamplemed namnet på projektet:<add key="DJANGO_SETTINGS_MODULE" value="django_iis_example.settings" />
Endast Django-appar: Lägg till din webbplats-URL-domän eller IP-adress
ALLOWED_HOSTSi posten i Django-projektets settings.py-fil. Ersätt "1.2.3.4" med din URL eller IP-adress:# Change the URL or IP address to your specific site ALLOWED_HOSTS = ['1.2.3.4']Om du inte lägger till url:en i matrisresultatet visas följande fel:
DisallowedHost at / Invalid HTTP_HOST header: '<site URL>'. You might need to add '<site URL>' to ALLOWED_HOSTS.
När matrisen är tom tillåter Django automatiskt 'localhost' och '127.0.0.1' som värdar. Om du lägger till din produktions-URL tillåts inte dessa värdplatser automatiskt. Därför kanske du vill behålla separata utvecklings- och produktionskopior av den settings.py filen eller använda miljövariabler för att styra körningsvärdena.
Distribuera till IIS eller en virtuell Windows-dator
När du har rätt web.config fil i projektet kan du publicera på den dator som kör IIS från Solution Explorer. Högerklicka på projektet, välj Publiceraoch välj sedan IIS, FTP osv.. I det här fallet kopierar Visual Studio endast projektfilerna till servern. Du ansvarar för all konfiguration på serversidan.