Freigeben über


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:

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

  1. Navigieren Sie zum Anwendungsordner:

    cd msdocs-python-flask-webapp-quickstart
    
  2. Erstellen Sie eine virtuelle Umgebung für die App:

    py -m venv .venv
    .venv\scripts\activate
    
  3. Installieren Sie die Abhängigkeiten:

    pip install -r requirements.txt
    
  4. Führen Sie die App aus:

    flask run
    
  5. Navigieren Sie in einem Webbrowser unter http://localhost:5000 zur Beispielanwendung.

    Screenshot: Lokal ausgeführte Flask-App in einem Browser

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 Befehl az 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 Befehl az 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://.azurewebsites.net starten.) angezeigt. Dabei handelt es sich um die URL der App in Azure.

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:

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.

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.

Screenshot: In Azure ausgeführte App

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.

Nächste Schritte