Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn Sie Internetinformationsdienste (INTERNET Information Services, IIS) als Webserver auf einem Windows-Computer (einschließlich virtuellen Windows-Computern auf Azure) verwenden, müssen Sie die Python-Webanwendung konfigurieren, damit IIS Python-Code ordnungsgemäß verarbeiten kann. Die Konfiguration erfolgt über Einstellungen in der web.config Datei für die Python-Web-App. In diesem Artikel wird beschrieben, wie Sie die erforderlichen Einstellungen konfigurieren.
Voraussetzungen
Python unter Windows installiert. Um eine Web-App auszuführen, installieren Sie zuerst Ihre erforderliche Version von Python direkt auf dem Windows-Hostcomputer, wie in Install Python Interpreters beschrieben.
- Identifizieren Sie den Standort des python.exe-Dolmetschers . Aus Gründen der Einfachheit können Sie diesen Speicherort ihrer PATH-Umgebungsvariable hinzufügen.
Erforderliche Pakete installiert. Für einen dedizierten Host können Sie die globale Python-Umgebung verwenden, um Ihre App anstelle einer virtuellen Umgebung auszuführen. Dementsprechend können Sie alle Anforderungen Ihrer App in der globalen Umgebung installieren, indem Sie den Befehl
pip install -r requirements.txtausführen.
Legen Sie web.config so fest, dass sie auf den Python-Dolmetscher zeigt.
Die web.config Datei für Ihre Python-Anwendung weist den IIS-Webserver (Version 7 oder höher) unter Windows an, wie es Python-Anforderungen über HttpPlatformHandler (empfohlen) oder FastCGI behandeln soll. Visual Studio-Versionen 2015 und frühere Versionen nehmen diese Änderungen automatisch vor. Für Visual Studio 2017 und höher müssen Sie die web.config Datei manuell ändern.
Wenn Ihr Projekt noch keine web.config Datei enthält, können Sie eine datei hinzufügen, indem Sie mit der rechten Maustaste auf das Projektverzeichnis klicken, "Neues Element hinzufügen" > auswählen und nach web.config suchen oder eine leere web.config XML-Datei erstellen.
Option 1: Konfigurieren des HttpPlatformHandlers
Das HttpPlatform-Modul übergibt Socketverbindungen direkt an einen eigenständigen Python-Prozess. Mit dieser Pass-Through können Sie jeden beliebigen Webserver ausführen, erfordert jedoch ein Startskript, das einen lokalen Webserver ausführt. Dieser Ansatz wird häufig mithilfe eines Python-Webframeworks wie Flask oder Django durchgeführt. Sie geben das Skript im <httpPlatform> Element der web.config Datei an. Das attribut processPath verweist auf den Python-Interpreter der Websiteerweiterung. Das arguments Attribut verweist auf Ihr Startskript, das einen lokalen Webserver ausführt, in diesem Fall runserver.py und alle Argumente, die Sie bereitstellen möchten:
<?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>
In diesem Beispiel enthält die umgebungsvariable HTTP_PLATFORM_PORT den Port, auf den ihr lokaler Server auf Verbindungen von localhostlauschen soll. In diesem Beispiel wird auch gezeigt, wie Sie eine andere Umgebungsvariable SERVER_PORTerstellen. Sie können bei Bedarf Umgebungsvariablen erstellen und zuweisen.
Option 2: Konfigurieren des FastCGI-Handlers
Alternativ können Sie FastCGI verwenden, um Ihre Apps zu konfigurieren. FastCGI ist eine Schnittstelle, die auf Anforderungsebene funktioniert. IIS empfängt eingehende Verbindungen und leitet jede Anforderung an eine WSGI-App (Web Server Gateway Interface) weiter, die in einem oder mehreren persistenten Python-Prozessen ausgeführt wird.
Anmerkung
Obwohl Sie Ihr Projekt mit FastCGI einrichten können, empfehlen wir die Verwendung von HttpPlatformHandler zum Konfigurieren Ihrer Apps, da das WFastCGI-Projekt nicht mehr verwaltet wird und zu Fehlern führen kann.
Um FastCGI zu verwenden, installieren und konfigurieren Sie zuerst das Wfastcgi-Paket, wie in pypi.org/project/wfastcgi/beschrieben.
Ändern Sie als Nächstes die web.config-Datei Ihrer Anwendung so, dass sie die vollständigen Pfade zu den ausführbaren Dateien python.exe und der Datei wfastcgi.py im PythonHandler-Schlüssel enthalten muss. Bei den folgenden Schritten wird davon ausgegangen, dass Python im ordner c:\python36-32 installiert ist und sich der App-Code im ordner "c:\home\site\wwwroot" befindet. Passen Sie diese Werte entsprechend für Ihre Pfade an.
Ändern Sie den
PythonHandlerEintrag in der web.config Datei so, dass der Pfad mit dem Python-Installationsspeicherort übereinstimmt. Weitere Informationen finden Sie in der IIS-Konfigurationsreferenz zu 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>Fügen Sie im
<appSettings>-Abschnitt der Datei web.config Schlüssel fürWSGI_HANDLER,WSGI_LOG(optional) undPYTHONPATHhinzu.<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>Diese
<appSettings>Werte stehen Ihrer App als Umgebungsvariablen zur Verfügung:- Der Wert für den
PYTHONPATH-Schlüssel kann frei erweitert werden, muss jedoch die Basis Ihrer App enthalten. - Der schlüssel
WSGI_HANDLERmuss auf eine WSGI-App verweisen, die aus Ihrer App importiert werden kann. - Der
WSGI_LOG-Schlüssel ist optional, der Schlüssel wird jedoch für das Debuggen Ihrer App empfohlen.
- Der Wert für den
Legen Sie den
WSGI_HANDLEREintrag in der web.config-Datei entsprechend dem von Ihnen verwendeten Framework fest:Bottle: Fügen Sie wie in diesem Beispiel gezeigt Klammern nach dem Wert
app.wsgi_apphinzu. Die Klammern sind erforderlich, da es sich bei dem Objekt um eine Funktion und nicht um eine Variable handelt. Sie können die Syntax in der app.py Datei sehen.<!-- Bottle apps only --> <add key="WSGI_HANDLER" value="app.wsgi_app()"/>Flask: Ändern Sie den Wert von
WSGI_HANDLERin<project_name>.app, wobei<project_name>dem Namen Ihres Projekts entspricht. Sie finden den genauen Bezeichner, indem Sie sich die Anweisung in derfrom <project_name> import appdatei runserver.py ansehen. Wenn das Projekt beispielsweise den Namen FlaskAzurePublishExample hat, wird der Eintrag wie folgt angezeigt:<!-- Flask apps only: Change the project name to match your app --> <add key="WSGI_HANDLER" value="FlaskAzurePublishExample.app"/>Django: Für django-Projekte sind zwei Änderungen an der web.config Datei erforderlich.
Ändern Sie den wert
WSGI_HANDLERindjango.core.wsgi.get_wsgi_application(). Das Objekt befindet sich in der datei wsgi.py .<!-- Django apps only --> <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()"/>Fügen Sie den folgenden Eintrag unmittelbar nach dem Eintrag für die
WSGI_HANDLER-Taste hinzu. Ersetzen Sie den WertDjangoAzurePublishExampledurch den Namen Ihres Projekts:<add key="DJANGO_SETTINGS_MODULE" value="django_iis_example.settings" />
Nur Django-Apps: Fügen Sie in der settings.py-Datei des Django-Projekts Ihre Website-URL-Domäne oder IP-Adresse zum
ALLOWED_HOSTSEintrag hinzu. Ersetzen Sie "1.2.3.4" durch Ihre URL oder IP-Adresse:# Change the URL or IP address to your specific site ALLOWED_HOSTS = ['1.2.3.4']Wenn Sie Die URL nicht zu den Arrayergebnissen hinzufügen, wird der folgende Fehler angezeigt:
DisallowedHost at / Invalid HTTP_HOST header: '<site URL>'. You might need to add '<site URL>' to ALLOWED_HOSTS.
Wenn das Array leer ist, lässt Django automatisch 'localhost' und '127.0.0.1' als Hosts zu. Wenn Sie Ihre Produktions-URL hinzufügen, werden diese Host-Seiten nicht automatisch zugelassen. Aus diesem Grund möchten Sie möglicherweise separate Entwicklungs- und Produktionskopien der settings.py-Datei verwalten oder Umgebungsvariablen verwenden, um die Laufzeitwerte zu steuern.
Bereitstellen auf IIS oder einem virtuellen Windows-Computer
Wenn Sie die richtige web.config Datei in Ihrem Projekt haben, können Sie auf dem Computer, auf dem IIS ausgeführt wird, über den Projektmappen-Explorer veröffentlichen. Klicken Sie mit der rechten Maustaste auf das Projekt, wählen Sie Veröffentlichenaus, und wählen Sie dann IIS, FTP usw.aus. In diesem Fall kopiert Visual Studio nur die Projektdateien auf den Server. Sie sind für alle serverseitigen Konfigurationen verantwortlich.