Veröffentlichen von Python-Webanwendungen auf Azure App Service unter Linux
Visual Studio bietet Ihnen die Möglichkeit, Python-Web-Apps direkt in Azure App Service unter Linux zu veröffentlichen. Das Veröffentlichen auf Azure App Service unter Linux beinhaltet das Kopieren der notwendigen Dateien auf den Server und das Einrichten einer entsprechenden web.config
-Datei, die den Webserver anweist, wie er Ihre App starten soll.
Hinweis
Linux ist die einzige Betriebssystemoption zum Ausführen von Python-Apps in App Service. Python unter Windows wird nicht mehr unterstützt, wie in App Service Linux Docs - Python Support beschrieben. Für Windows können Sie Ihr eigenes benutzerdefiniertes Windows-Container-Image erstellen und das Image in App Service ausführen. Weitere Informationen finden Sie unter Use a custom Docker image (Verwenden Sie ein benutzerdefiniertes Docker-Image).
Voraussetzungen
Visual Studio. Führen Sie zum Installieren des Produkts die Schritte unter Installieren von Visual Studio aus.
Ein Python-Webanwendungsprojekt, das auf dem Bottle-, Flask- oder Django-Framework basiert. Sie können ein Testprojekt erstellen, um den Veröffentlichungsprozess zu testen.
Um in Azure zu veröffentlichen, benötigen Sie einen Azure App Service für Ihr Azure-Abonnement.
Wenn Sie noch kein Azure-Abonnement haben, beginnen Sie mit einem kostenlosen Azure-Konto. Erwägen Sie auch, sich für Visual Studio Dev Essentials anzumelden.
Visual Studio-Versionen
Es gibt Unterschiede bei der Veröffentlichung über Visual Studio 2017 und höher und Visual Studio 2015. Beide Ansätze werden in diesem Artikel beschrieben.
Visual Studio 2015 automatisiert einige der Installationsschritte, einschließlich der Erstellung der Datei
web.config
, aber diese Automatisierung schränkt die langfristige Flexibilität und Kontrolle ein.Visual Studio 2017 und höher erfordert mehr manuelle Installationsschritte, bietet aber eine genauere Kontrolle über Ihre Python-Umgebung.
Weitere Informationen zu den Änderungen zwischen Visual Studio 2015 und Visual Studio 2017 und später finden Sie im Blogbeitrag Publish to Azure in Visual Studio 2017.
Erstellen eines Testprojekts
Wenn Sie kein bestehendes Projekt zum Veröffentlichen haben, können Sie ein Testprojekt erstellen, um den Prozess zu testen.
Wählen Sie in Visual Studio File > New > Project aus dem Menü der Symbolleiste, um das Dialogfeld Create a new project zu öffnen.
Geben Sie im Dialogfeld bottle in das Feld Search ein, wählen Sie die Vorlage Bottle Web Project aus, und wählen Sie dann Next.
Die Vorlage „Bottle Web Project“ ist im Python-Entwicklungspaket enthalten. Weitere Informationen finden Sie unter Python Web Application Project Templates.
Geben Sie einen Namen und einen Pfad für das Projekt ein und wählen Sie dann Erstellen.
Folgen Sie den Aufforderungen zur Installation externer Pakete, wählen Sie In eine virtuelle Umgebung installieren, und wählen Sie Ihren bevorzugten Basisinterpreter für die virtuelle Umgebung.
Die virtuelle Umgebung entspricht in der Regel der Version von Python, die auf App Service installiert ist.
Wenn Sie bereit sind, können Sie das Projekt lokal testen, indem Sie Debug > Start Debugging wählen oder die Tastenkombination F5 verwenden.
Erstellen Sie das Ziel Azure App Service
Die Veröffentlichung in Azure erfordert einen Azure App Service für ein Azure-Abonnement.
Erstellen Sie einen App-Dienst mit einer leeren Web-App wie folgt:
Melden Sie sich beim Azure-Portal an.
Rufen Sie die Seite App Services auf.
Wählen Sie Create und wählen Sie Web App aus dem Dropdown-Menü. Die Seite Create Web App wird geöffnet.
Konfigurieren Sie auf der Registerkarte Grundlegende Einstellungen die folgenden Einstellungen:
Einstellung BESCHREIBUNG Ressourcengruppe Ignorieren Sie dieses Feld. Das System aktualisiert diesen Wert, nachdem Sie die Laufzeiteinstellung gewählt haben. Name Geben Sie einen Namen für die Web-App ein. Veröffentlichen Wählen Sie Code aus. Runtimestapel Wählen Sie die entsprechende Python-Laufzeitumgebung aus dem Dropdown-Menü. Nachdem Sie ein Element ausgewählt haben, aktualisiert das System das Feld Ressourcengruppe . Region Wählen Sie eine Azure-Region in Ihrer Nähe. Tarif Wählen Sie den Plan Free F1. Für die Beispiele in diesem Artikel können Sie die Einstellungen auf den anderen Registerkarten ignorieren.
Klicken Sie auf Überprüfen + erstellen. Überprüfen Sie Ihre Auswahl, und wählen Sie dann Create.
(Optional) Nachdem der App-Dienst fertig ist, können Sie zur Ressource gehen, Download publish profile wählen und die Datei lokal speichern.
Konfigurieren von Python auf Azure App Service
Nachdem Sie einen App-Service mit einer leeren Web-App in Ihrem Abonnement eingerichtet haben, installieren Sie die gewünschte Python-Version. Für die Veröffentlichung aus Visual Studio 2017 und höher geben Sie den genauen Pfad zum Python-Interpreter an, der mit der Site-Erweiterung installiert wurde. Weitere Informationen finden Sie unter Python-Interpreter installieren.
Falls gewünscht, können Sie auch das Paket bottle
installieren. Dieses Paket wird jedoch in einem späteren Schritt in dieser Anleitung installiert.
Veröffentlichen in App Service: Visual Studio 2017 und höher
Wenn Sie eine App in Azure App Service über Visual Studio 2017 und höher veröffentlichen, werden nur die Dateien in Ihrem Projekt auf den Server kopiert. Sie müssen die erforderlichen Dateien erstellen, um die Serverumgebung zu konfigurieren.
Klicken Sie in Visual Studio Solution Explorer mit der rechten Maustaste auf das Projekt und wählen Sie Hinzufügen > Neues Element. Wählen Sie im Dialogfeld die Vorlage Azure web.config (Fast CGI) aus, und wählen Sie hinzufügen. Mit diesem Schritt erstellen Sie eine
web.config
-Datei in Ihrem Projektstamm.Ändern Sie den
PythonHandler
-Eintrag in derweb.config
-Datei, damit der Pfad mit der Python-Installation auf dem Server übereinstimmt, wie in IIS-Konfigurationsreferenz (iis.net) beschrieben. Für Python 3.6.1 x64 sollte der Eintrag wie folgt aussehen:<system.webServer> <handlers> <add name="PythonHandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="D:\home\Python361x64\python.exe|D:\home\Python361x64\wfastcgi.py" resourceType="Unspecified" requireAccess="Script"/> </handlers> </system.webServer>
Legen Sie den
WSGI_HANDLER
-Eintrag auf dieweb.config
-Datei fest, die für das von Ihnen verwendete Framework angemessen ist:Bottle: Fügen Sie nach dem Wert
app.wsgi_app
Klammern hinzu, wie in diesem Beispiel gezeigt. Die Klammern sind notwendig, weil es sich bei dem Objekt um eine Funktion und nicht um eine Variable handelt. Sie können die Syntax in der Dateiapp.py
sehen.<!-- Bottle apps only --> <add key="WSGI_HANDLER" value="app.wsgi_app()"/>
Flask: Ändern Sie den Wert
WSGI_HANDLER
in<project_name>.app
, wobei das<project_name>
-Element dem Namen Ihres Projekts entspricht. Den genauen Bezeichner finden Sie in der Anweisungfrom <project_name> import app
in der Dateirunserver.py
. Wenn das Projekt zum Beispiel „FlaskAzurePublishExample“ heißt, sieht der Eintrag wie folgt aus:<!-- Flask apps only: Change the project name to match your app --> <add key="WSGI_HANDLER" value="FlaskAzurePublishExample.app"/>
Django: Für Django-Projekte müssen Sie zwei Änderungen an der
web.config
-Datei für Django-Projekte vornehmen.Ändern Sie den
WSGI_HANDLER
-Wert indjango.core.wsgi.get_wsgi_application()
. Das Objekt befindet sich in der Dateiwsgi.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 den Schlüssel
WSGI_HANDLER
ein. Ersetzen Sie den WertDjangoAzurePublishExample
durch den Namen Ihres Projekts:<add key="DJANGO_SETTINGS_MODULE" value="django_iis_example.settings" />
Nur Django-App: Fügen Sie in der Datei
settings.py
des Django-Projekts die URL-Domain oder IP-Adresse Ihrer Website in den EintragALLOWED_HOSTS
ein. Ersetzen Sie „vspython-test-02.azurewebsites.net“ durch Ihre URL:# Change the URL to your specific site ALLOWED_HOSTS = ['vspython-test-02.azurewebsites.net']
Wenn Sie Ihre URL nicht zu den Array-Ergebnissen hinzufügen, wird die folgende Fehlermeldung angezeigt:
DisallowedHost at / Invalid HTTP_HOST header: '\<site URL\>'. You might need to add '\<site URL\>' to ALLOWED_HOSTS.
Wenn das Array leer ist, erlaubt Django automatisch
'localhost'
als Host. Wenn Sie Ihre Produktions-URL hinzufügen, wird'localhost'
nicht automatisch als Host zugelassen. Aus diesem Grund sollten Sie getrennte Entwicklungs- und Produktionskopien der Dateisettings.py
pflegen oder Umgebungsvariablen zur Steuerung der Laufzeitwerte verwenden.Die Vorlage auswählen.
- Erweitern Sie im Solution Explorer Ihren Projektordner.
- Klicken Sie mit der rechten Maustaste auf den Ordner static, und wählen Sie Add > New Item.
- Wählen Sie die Vorlage Azure Static files web.config, und wählen Sie Add.
Diese Aktion erstellt eine weitere
web.config
-Datei im statischen Ordner, die die Python-Verarbeitung für diesen Ordner deaktiviert. Diese Konfiguration sendet Anforderungen für statische Dateien an den Standardwebserver und verwendet nicht die Python-Anwendung.Speichern Sie im Solution Explorer Ihr Projekt, klicken Sie mit der rechten Maustaste auf Ihr Projekt und wählen Sie Publish.
Geben Sie im Fenster Publish das Veröffentlichungsziel an:
Für das Ziel, wählen Sie Azure, und dann Next.
Wählen Sie für das Spezifisches Ziel, wählen Sie Azure App Service (Windows), und wählen Sie Weiter.
- Wenn das Dialogfeld anzeigt, dass weitere Erforderliche Komponenten erforderlich sind, um die Installation abzuschließen, wählen Sie Fertigstellen. Der Visual Studio-Installer wird geöffnet. Bestätigen Sie die Optionen, und wählen Sie Installieren.
Für den App Service wählen Sie den entsprechenden App Service für Ihr Abonnement aus und wählen Sie Fertigstellen.
Wählen Sie nach Abschluss des Veröffentlichungsvorgangs Close.
Visual Studio zeigt den Status in einem „Web Publish Activity“-Fenster und auch im Fenster Publish profile creation progress an. Wenn Sie die Meldung „Ready to publish“ für die Webanwendung sehen, wählen Sie Publish.
Wenn die Veröffentlichung erfolgreich war, wird der Standardbrowser mit der URL der Website geöffnet. Die URL der Website wird auch im Fenster Publish angezeigt.
Wenn die URL der Website nicht automatisch geöffnet wird, wählen Sie Website öffnen, um die Webanwendung im Browser anzuzeigen:
Beim Öffnen des Browsers sehen Sie möglicherweise die Meldung „The page cannot be displayed because an internal server error has occurred“ (Die Seite kann nicht angezeigt werden, da ein interner Serverfehler aufgetreten ist). Diese Meldung zeigt an, dass Ihre Python-Umgebung auf dem Server nicht vollständig konfiguriert ist. In diesem Fall führen Sie die folgenden Schritte aus:
Stellen Sie sicher, dass Sie eine geeignete Python-Site-Erweiterung installiert haben. Weitere Informationen finden Sie unter Quickstart: Bereitstellen einer Python-Webanwendung (Django oder Flask) auf Azure App Service.
Prüfen Sie den Pfad zum Python-Interpreter in Ihrer
web.config
-Datei erneut. Der Pfad muss genau mit dem Installationsspeicherort der ausgewählten Websiteerweiterung übereinstimmen.Verwenden Sie die Kudu-Konsole, um alle Pakete zu aktualisieren, die in der Datei
requirements.txt
Ihrer Anwendung aufgeführt sind. Navigieren Sie zu demselben Python-Ordner, der auch in derweb.config
-Datei verwendet wird, z. B./home/python361x64
. Führen Sie den folgenden Befehl aus, wie im Abschnitt Kudu-Konsole beschrieben:python -m pip install --upgrade -r /home/site/wwwroot/requirements.txt
Wenn Sie beim Ausführen dieses Befehls Berechtigungsfehler sehen, vergewissern Sie sich, dass Sie den Befehl in Ihrem Website-Erweiterungsordner ausführen. Führen Sie den Befehl nicht in einem Ordner aus, der eine der Standard-Python-Installationen von App Service enthält. Da Sie diese Standardumgebungen nicht verändern können, tritt bei dem Versuch, Pakete zu installieren, in jedem Fall ein Fehler auf.
Fügen Sie dem
<system.webServer>
-Knoten derweb.config
-Datei die folgende Zeile hinzu, um eine detailliertere Fehlerausgabe zu erhalten:<httpErrors errorMode="Detailed"></httpErrors>
Versuchen Sie, App Service nach der Installation neuer Pakete neu zu starten. Ein Neustart ist nicht erforderlich, wenn die Datei
web.config
geändert wird, da App Service einen automatischen Neustart durchführt, wenn die Dateiweb.config
geändert wird.Tipp
Wenn Sie Änderungen an der
requirements.txt
-Datei der App vornehmen, verwenden Sie die Kudu-Konsole erneut, um sämtliche Pakete zu installieren, die zu diesem Zeitpunkt in der Datei aufgeführt sind.
Nachdem Sie die Serverumgebung vollständig konfiguriert haben, aktualisieren Sie die Seite im Browser, um die Webanwendung anzuzeigen:
Veröffentlichen in App Service: Visual Studio 2015
Folgen Sie diesen Schritten, um Ihre Python-Webanwendung in Visual Studio 2015 auf Azure App Service zu veröffentlichen.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie Veröffentlichen aus.
Wählen Sie im Dialogfeld VeröffentlichenMicrosoft Azure App Service:
Wählen Sie Microsoft Azure App Service als Veröffentlichungsziel. Wählen Sie im nächsten Dialogfeld einen vorhandenen App-Dienst aus oder wählen Sie New, um einen neuen zu erstellen.
Die Details des App-Dienstes werden auf der Registerkarte Verbindung des Dialogs Veröffentlichen angezeigt:
Wählen Sie bei Bedarf Weiter, um weitere Einstellungen zu überprüfen.
Wählen Sie Veröffentlichen aus. Nachdem Ihre Anwendung in Azure bereitgestellt wurde, öffnet sich Ihr Standardbrowser auf der URL der Website.
Im Rahmen dieses Prozesses führt Visual Studio auch die folgenden Schritte aus:
- Erstellt eine
web.config
-Datei auf dem Server, der angemessene Zeiger auf diewsgi_app
-Funktionen der App und den Standardinterpreter von App Service für Python 3.4 enthält. - Deaktiviert die Verarbeitung von Dateien im statischen Ordner des Projekts . (Die Regeln für diese Aktion stehen in der Datei
web.config
) - Publiziert die virtuelle Umgebung auf dem Server.
- Fügt eine
web.debug.config
-Datei und die Tools zum Debuggen hinzu, um das Remotedebuggen zu aktivieren. Für Visual Studio 2019 bis Version 16.4 bietet ptvsd die Tools zum Debuggen. Für Visual Studio 2019 ab Version 16.5 bietet debugpy die Tools zum Debuggen.
Wie bereits erwähnt, vereinfachen diese automatischen Schritte den Veröffentlichungsprozess, aber sie können die Kontrolle über die Python-Umgebung erschweren. Beispielsweise wird die web.config
-Datei nur auf dem Server erstellt und nicht dem Projekt hinzugefügt. Der Veröffentlichungsprozess nimmt außerdem zusätzliche Zeit in Anspruch, da die gesamte virtuelle Umgebung von Ihrem Entwicklungscomputer kopiert wird und keine Abhängigkeit von der Serverkonfiguration entsteht.
Irgendwann möchten Sie möglicherweise Ihre eigene web.config
-Datei verwalten und requirements.txt
verwenden, um Pakete direkt auf dem Server zu verwalten. Wenn Sie die Datei requirements.txt
verwenden, können Sie sicherstellen, dass Ihre Entwicklungs- und Serverumgebung immer übereinstimmen.
Zugehöriger Inhalt
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für