Schnellstart: Bereitstellen einer Python-Web-App (Django oder Flask) in Azure App Service

In diesem Schnellstart stellen Sie eine Python-Web-App (Django oder Flask) in Azure App Service bereit. Azure App Service ist ein vollständig verwalteter Webhostingdienst, der Apps mit Python 3.7 und höher unterstützt, die in einer Linux-Serverumgebung gehostet werden.

Für die Durchführung dieses Schnellstarts benötigen Sie Folgendes:

  1. Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
  2. 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.

1. Beispielanwendung

Dieser Schnellstart kann entweder mit Flask oder Django abgeschlossen 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.

2. Erstellen einer Web-App in Azure

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 über das Azure-Portal, mithilfe von VS Code unter Verwendung des Azure-Tools-Erweiterungspakets oder mithilfe der Azure-Befehlszeilenschnittstelle 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 bei Bedarf 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 account 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.

3. Bereitstellen des Anwendungscodes in Azure

Azure App Service unterstützt mehrere Methoden zum Bereitstellen Ihres Anwendungscodes in Azure, einschließlich der Unterstützung für 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 vorherige Schritt die erforderlichen Ressourcen erstellt und Ihre Anwendung in einem einzigen Schritt bereitgestellt hat, können Sie mit 4. Navigieren zur App fortfahren.


Treten Probleme auf? Lesen Sie zunächst das Handbuch zur Problembehandlung, andernfalls informieren Sie uns darüber.

4. Navigieren zur App

Navigieren Sie in Ihrem Webbrowser zur an der URL http://<app-name>.azurewebsites.net bereitgestellten Anwendung. 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 zunächst das Handbuch zur Problembehandlung, andernfalls informieren Sie uns darüber.

5. Streamen von Protokollen

Azure App Service erfasst alle Nachrichten, die an der Konsole ausgegeben werden, 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)

Der Inhalt der App Service-Diagnoseprotokolle kann über das Azure-Portal, in VS Code oder mithilfe der Azure-Befehlszeilenschnittstelle angezeigt werden.

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 zunächst das Handbuch zur Problembehandlung, andernfalls informieren Sie uns darüber.

Bereinigen von Ressourcen

Wenn Sie mit der Beispiel-App fertig sind, können Sie alle Ressourcen für die App aus Azure entfernen. Es entstehen keine zusätzlichen Gebühren, und Ihr Azure-Abonnement bleibt übersichtlich. 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