Schnellstart: Bereitstellen einer Python-Web-App (Django, Flask oder FastAPI) in Azure App Service
Hinweis
Ab dem 1. Juni 2024 haben alle neu erstellten App Service-Apps die Möglichkeit, einen eindeutigen Standardhostnamen mit der Namenskonvention <app-name>-<random-hash>.<region>.azurewebsites.net
zu erstellen. Vorhandene App-Namen bleiben unverändert.
Beispiel: myapp-ds27dh7271aah175.westus-01.azurewebsites.net
Ausführlichere Informationen finden Sie unter Eindeutiger Standardhostname für App Service-Ressourcen.
In diesem Schnellstart stellen Sie eine Python-Web-App (Django, Flask oder FastAPI) in Azure App Service bereit. Azure App Service ist ein vollständig verwalteter Webhostingdienst, der Apps mit Python unterstützt, die in einer Linux-Serverumgebung gehostet werden.
Für die Durchführung dieses Schnellstarts benötigen Sie Folgendes:
- Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
- Python 3.9 oder höher ist lokal installiert.
Hinweis
Dieser Artikel enthält aktuelle Anweisungen zum Bereitstellen einer Python-Web-App mit Azure App Service. Python unter Windows wird nicht mehr unterstützt.
Beispielanwendung
Dieser Schnellstart kann entweder mit Flask, Django oder FastAPI durchgeführt werden. In jedem Framework wird eine Beispielanwendung bereitgestellt, die Sie bei der Durchführung dieses Schnellstarts unterstützt. Laden Sie die Beispielanwendung auf Ihre lokale Arbeitsstation herunter, oder klonen Sie sie.
git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart
So führen Sie die Anwendung lokal aus
Navigieren Sie zum Anwendungsordner:
cd msdocs-python-flask-webapp-quickstart
Erstellen Sie eine virtuelle Umgebung für die App:
py -m venv .venv .venv\scripts\activate
Installieren Sie die Abhängigkeiten:
pip install -r requirements.txt
Führen Sie die App aus:
flask run
Navigieren Sie in einem Webbrowser unter
http://localhost:5000
zur Beispielanwendung.
Treten Probleme auf? Informieren Sie uns darüber.
eine Web-App in Azure erstellen
Um Ihre Anwendung in Azure zu hosten, müssen Sie eine Azure App Service-Web-App in Azure erstellen. Sie können eine Web-App mit der Azure CLI, VS Code, dem Azure Tools-Erweiterungspaket oder dem Azure-Portal erstellen.
Azure CLI-Befehle können auf einem Computer ausgeführt werden, auf dem die Azure CLI installiert ist.
Über die Azure CLI ist der Befehl az webapp up
verfügbar, der die erforderlichen Ressourcen erstellt und Ihre Anwendung in einem einzigen Schritt bereitstellt.
Melden Sie sich erforderlichenfalls mithilfe von az login bei Azure an.
az login
Erstellen Sie die Web-App und andere Ressourcen, und stellen Sie dann Ihren Code mithilfe von az webapp up in Azure bereit.
az webapp up --runtime PYTHON:3.9 --sku B1 --logs
- Der Parameter
--runtime
gibt an, welche Version von Python Ihre App ausführt. In diesem Beispiel wird Python 3.9 verwendet. Um alle verfügbaren Runtimes aufzulisten, verwenden Sie den Befehlaz webapp list-runtimes --os linux --output table
. - Der Parameter
--sku
definiert die Größe (CPU, Arbeitsspeicher) und die Kosten für den App Service-Plan. In diesem Beispiel wird der Dienstplan „Basic (B1)“ verwendet, der in Ihrem Azure-Abonnement eine geringe Gebühr verursacht. Eine vollständige Liste der App Service-Pläne finden Sie auf der Seite App Service – Preise. - Das Flag
--logs
konfiguriert die Standardprotokollierung, die erforderlich ist, um die Anzeige des Protokolldatenstroms unmittelbar nach dem Start der Web-App zu ermöglichen. - Sie können optional einen Namen mit dem Argument
--name <app-name>
angeben. Wenn Sie keinen Namen angeben, wird automatisch ein Name generiert. - Optional können Sie das Argument
--location <location-name>
einfügen, wobei<location_name>
eine verfügbare Azure-Region ist. Sie können eine Liste der zulässigen Regionen für Ihr Azure-Konto abrufen, indem Sie den Befehlaz appservice list-locations
ausführen.
Die Ausführung dieses Befehls kann einige Minuten in Anspruch nehmen. Bei der Ausführung des Befehls werden Meldungen zum Erstellen der Ressourcengruppe, des App Service-Plans und der App-Ressource, zur Konfiguration der Protokollierung und zur ZIP-Bereitstellung angezeigt. Anschließend wird die Meldung „You can launch the app at http://<app-name>.azurewebsites.net“ (Sie können die App unter http://
The webapp '<app-name>' doesn't exist Creating Resource group '<group-name>' ... Resource group creation complete Creating AppServicePlan '<app-service-plan-name>' ... Creating webapp '<app-name>' ... Configuring default logging for the app, if not already enabled Creating zip with contents of dir /home/cephas/myExpressApp ... Getting scm site credentials for zip deployment Starting zip deployment. This operation can take a while to complete ... Deployment endpoint responded with status code 202 You can launch the app at http://<app-name>.azurewebsites.net { "URL": "http://<app-name>.azurewebsites.net", "appserviceplan": "<app-service-plan-name>", "location": "centralus", "name": "<app-name>", "os": "<os-type>", "resourcegroup": "<group-name>", "runtime_version": "python|3.9", "runtime_version_detected": "0.0", "sku": "FREE", "src_path": "<your-folder-location>" }
Hinweis
Der Befehl az webapp up
bewirkt Folgendes:
Erstellen einer Standardressourcengruppe
Erstellen eines App Service-Plans
Erstellen einer App mit dem angegebenen Namen
Bereitstellen eines ZIP-Pakets aller Dateien aus dem aktuellen Arbeitsverzeichnis mit aktivierter Buildautomatisierung
Lokales Zwischenspeichern der Parameter in der Datei .azure/config, sodass Sie sie später bei der Bereitstellung mit
az webapp up
oder anderenaz webapp
-Befehlen aus dem Projektordner nicht erneut angeben müssen. Die zwischengespeicherten Werte werden standardmäßig automatisch verwendet.
Treten Probleme auf? Informieren Sie uns darüber.
Bereitstellen des Anwendungscodes in Azure
Azure App Service unterstützt mehrere Methoden zum Bereitstellen Ihres Anwendungscodes in Azure, einschließlich GitHub Actions und alle wichtigen CI/CD-Tools. In diesem Artikel geht es hauptsächlich darum, wie Sie Code von Ihrer lokalen Arbeitsstation in Azure bereitstellen.
- Bereitstellen über die Azure-Befehlszeilenschnittstelle
- Bereitstellen mit VS Code
- Bereitstellen mithilfe einer ZIP-Datei
Da der Befehl az webapp up
die erforderlichen Ressourcen erstellt und Ihre Anwendung in einem einzigen Schritt bereitgestellt hat, können Sie mit dem nächsten Schritt fortfahren.
Treten Probleme auf? Lesen Sie zuerst den Leitfaden zur Problembehandlung. Wenn dies nicht hilft, teilen Sie es uns mit.
Konfigurieren des Startupskripts
Basierend auf dem Vorhandensein bestimmter Dateien in einer Bereitstellung erkennt App Service automatisch, ob es sich bei einer App um eine Django- oder Flask-App handelt, und durchläuft für das Ausführen Standardschritte. Für Apps, die auf anderen Webframeworks wie FastAPI basieren, müssen Sie ein Startupskript für App Service konfigurieren, um diese auszuführen. Andernfalls führt App Service eine schreibgeschützte Standard-App aus, die sich im Ordner opt/defaultsite befindet.
Weitere Informationen dazu, wie App Service Python-Apps ausführt und wie Sie das Verhalten mit Ihrer App konfigurieren und anpassen können, finden Sie unter Konfigurieren Python-App für Azure App Service unter Linux.
App Service erkennt automatisch, wenn eine Flask-App vorhanden ist. Für diesen Schnellstart ist keine zusätzliche Konfiguration erforderlich.
Navigieren zur App
Browsen Sie in Ihrem Webbrowser zur bereitgestellten Anwendung, indem Sie die URL http://<app-name>.azurewebsites.net
verwenden. Wenn eine App-Standardseite angezeigt wird, warten Sie eine Minute, und aktualisieren Sie den Browser.
Der Python-Beispielcode führt einen Linux-Container in App Service mit einem integrierten Image aus.
Herzlichen Glückwunsch! Sie haben Ihre Python-App in App Service bereitgestellt.
Treten Probleme auf? Lesen Sie zuerst den Leitfaden zur Problembehandlung. Wenn dies nicht hilft, teilen Sie es uns mit.
Streaming von Protokollen
Azure App Service erfasst die gesamte Nachrichtenausgabe an die Konsole, um Sie bei der Diagnose von Problemen mit Ihrer Anwendung zu unterstützen. Die Beispiel-Apps enthalten print()
-Anweisungen, um diese Funktion zu veranschaulichen.
@app.route('/')
def index():
print('Request for index page received')
return render_template('index.html')
@app.route('/favicon.ico')
def favicon():
return send_from_directory(os.path.join(app.root_path, 'static'),
'favicon.ico', mimetype='image/vnd.microsoft.icon')
@app.route('/hello', methods=['POST'])
def hello():
name = request.form.get('name')
if name:
print('Request for hello page received with name=%s' % name)
return render_template('hello.html', name = name)
else:
print('Request for hello page received with no name or blank name -- redirecting')
return redirect(url_for('index'))
Sie können die Inhalte der App Service-Diagnoseprotokolle mithilfe der Azure CLI, VS Code oder dem Azure-Portal überprüfen.
Als Erstes müssen Sie mithilfe des Befehls az webapp log config Azure App Service so konfigurieren, dass Protokolle an das App Service-Dateisystem ausgegeben werden.
az webapp log config \
--web-server-logging filesystem \
--name $APP_SERVICE_NAME \
--resource-group $RESOURCE_GROUP_NAME
Verwenden Sie zum Streamen von Protokollen den Befehl az webapp log tail.
az webapp log tail \
--name $APP_SERVICE_NAME \
--resource-group $RESOURCE_GROUP_NAME
Aktualisieren Sie die Homepage in der App, oder versuchen Sie mit anderen Anforderungen, einige Protokollmeldungen zu generieren. Die Ausgabe sollte in etwa wie folgt aussehen:
Starting Live Log Stream ---
2021-12-23T02:15:52.740703322Z Request for index page received
2021-12-23T02:15:52.740740222Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET / HTTP/1.1" 200 1360 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:52.841043070Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 200 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:52.884541951Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET /static/images/azure-icon.svg HTTP/1.1" 200 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:53.043211176Z 169.254.130.1 - - [23/Dec/2021:02:15:53 +0000] "GET /favicon.ico HTTP/1.1" 404 232 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:16:01.304306845Z Request for hello page received with name=David
2021-12-23T02:16:01.304335945Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "POST /hello HTTP/1.1" 200 695 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:16:01.398399251Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 304 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:16:01.430740060Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "GET /static/images/azure-icon.svg HTTP/1.1" 304 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
Treten Probleme auf? Lesen Sie zuerst den Leitfaden zur Problembehandlung. Wenn dies nicht hilft, teilen Sie es uns mit.
Bereinigen von Ressourcen
Wenn Sie mit der Beispiel-App fertig sind, können Sie alle Ressourcen für die App aus Azure entfernen. Das Entfernen der Ressourcengruppe stellt sicher, dass Ihnen keine zusätzlichen Kosten entstehen, und trägt dazu bei, dass Ihr Azure-Abonnement übersichtlich bleibt. Wenn Sie die Ressourcengruppe entfernen, werden auch alle Ressourcen in der Ressourcengruppe entfernt. Dies stellt die schnellste Möglichkeit dar, alle Azure-Ressourcen für Ihre App zu entfernen.
Löschen Sie die Ressourcengruppe mit dem Befehl az group delete.
az group delete \
--name msdocs-python-webapp-quickstart \
--no-wait
Mit dem Argument --no-wait
kann für den Befehl die Rückgabe erfolgen, bevor der Vorgang abgeschlossen ist.
Treten Probleme auf? Informieren Sie uns darüber.