Bereitstellen einer Python-Web-App (Django oder Flask) mit PostgreSQL in Azure

In diesem Tutorial stellen Sie eine datengesteuerte Python-Web-App (Django oder Flask) mit dem relationalen Datenbankdienst Azure Database for PostgreSQL in Azure App Service bereit. Azure App Service unterstützt Python in einer Linux-Serverumgebung.

Ein Architekturdiagramm, das einen App Service mit einer PostgreSQL-Datenbank in Azure zeigt.

Um dieses Tutorial abzuschließen, benötigen Sie Folgendes:

Zum Ende springen

Wenn Azure Developer CLI installiert ist, können Sie eine vollständig konfigurierte Beispiel-App bereitstellen, die in diesem Tutorial gezeigt wird, und sie in Azure ausführen. Führen Sie einfach die folgenden Befehle in einem leeren Arbeitsverzeichnis aus:

azd auth login
azd init --template msdocs-flask-postgresql-sample-app
azd up

Beispielanwendung

Python-Beispielanwendungen, die das Flask- und Django-Framework verwenden, werden bereitgestellt, um Sie beim Absolvieren dieses Tutorials zu unterstützen. Um sie bereitzustellen, ohne sie lokal auszuführen, überspringen Sie diesen Teil.

Um die Anwendung lokal auszuführen, stellen Sie sicher, dass Python 3.7 oder höher und PostgreSQL lokal installiert sind. Klonen Sie dann den starter-no-infra-Branch des Beispielrepositorys, und wechseln Sie zum Repositorystamm.

git clone -b starter-no-infra https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app
cd msdocs-flask-postgresql-sample-app

Erstellen Sie anhand der Datei .env.sample eine ENV-Datei, wie unten gezeigt. Legen Sie den Wert von DBNAME auf den Namen einer vorhandenen Datenbank in Ihrer lokalen PostgreSQL-Instanz fest. Legen Sie die Werte von DBHOST, DBUSER und DBPASS entsprechend Ihrer lokalen PostgreSQL-Instanz fest.

DBNAME=<database name>
DBHOST=<database-hostname>
DBUSER=<db-user-name>
DBPASS=<db-password>

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 Beispielanwendung mit folgenden Befehl aus:

# Run database migration
flask db upgrade
# Run the app at http://127.0.0.1:5000
flask run

1. Erstellen von App Service und PostgreSQL

git clone https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app.git

In diesem Schritt erstellen Sie die Azure-Ressourcen. Die in diesem Tutorial ausgeführten Schritte erstellen eine Reihe standardmäßig sicherer Ressourcen, die App Service und Azure Database for PostgreSQL umfassen. Für den Erstellungsprozess geben Sie Folgendes an:

  • Den Namen für die Web-App. Dieser Name wird als Teil des DNS-Namens für Ihre Web-App im Format https://<app-name>.azurewebsites.net verwendet.
  • Die Region für die physische Ausführung der App in der Welt
  • Der Runtimestapel für die App. Hier wählen Sie die Version von Python aus, die für Ihre App verwendet werden soll.
  • Der Hostingplan für die App. Dies ist der Tarif, der die Features und Skalierungskapazität für Ihre App enthält.
  • Die Ressourcengruppe für die App. Mit einer Ressourcengruppe können Sie (in einem logischen Container) alle für die Anwendung benötigten Azure-Ressourcen gruppieren.

Melden Sie sich beim Azure-Portal an, und führen Sie die folgenden Schritte aus, um Ihre Azure App Service-Ressourcen zu erstellen.

Schritt 1: Im Azure-Portal:

  1. Geben Sie auf der Suchleiste oben im Azure-Portal „Web App Datenbank“ ein.
  2. Wählen Sie das Element mit der Bezeichnung Web-App + Datenbank unter der Überschrift Marketplace aus. Sie können auch direkt zum Erstellungs-Assistenten navigieren.

Screenshot vom Verwenden des Suchfelds auf der oberen Symbolleiste, um den Erstellungs-Assistenten „Web-App + Datenbank“ zu finden (Flask).

Schritt 2: Füllen Sie das Formular auf der Seite Web-App und Datenbank erstellen wie folgt aus.

  1. Ressourcengruppe: Wählen Sie Neu erstellen aus, und verwenden Sie den Namen msdocs-python-postgres-tutorial.
  2. Region: Eine beliebige Azure-Region in Ihrer Nähe.
  3. Name:msdocs-python-postgres-XYZ, wobei XYZ für drei beliebige Zeichen steht. Dieser Name muss innerhalb von Azure eindeutig sein.
  4. RuntimestapelPython 3.10.
  5. DatenbankPostgreSQL – Flexibler Server ist standardmäßig als Datenbankmodul ausgewählt. Der Servername und der Datenbankname sind ebenfalls standardmäßig auf geeignete Werte festgelegt.
  6. HostingplanBasic. Wenn Sie bereit sind, können Sie später auf einen Produktionstarif hochskalieren.
  7. Klicken Sie auf Überprüfen + erstellen.
  8. Wenn die Überprüfung abgeschlossen ist, wählen Sie Erstellen aus.

Screenshot, der zeigt, wie Sie eine neue App und Datenbank im Assistenten für Web-Apps und Datenbanken konfigurieren (Flask).

Schritt 3: Die Durchführung der Bereitstellung dauert einige Minuten. Wählen Sie nach Abschluss der Bereitstellung die Schaltfläche Zu Ressource wechseln aus. Sie werden direkt zur App Service App weitergeleitet, aber die folgenden Ressourcen werden erstellt:

  • Ressourcengruppe → Der Container für alle erstellten Ressourcen.
  • App Service-Plan → Definiert die Berechnungsressourcen für App Service. Ein Linux-Plan im Basic-Tarif wird erstellt.
  • App Service → Stellt Ihre App dar und wird im App Service Plan ausgeführt.
  • Virtuelles Netzwerk → Integriert mit der App Service App und isoliert den Backend-Netzwerkdatenverkehr.
  • Azure Database for PostgreSQL – Flexibler Server: Nur aus dem virtuellen Netzwerk zugänglich. Eine Datenbank und ein Benutzer werden für Sie auf dem Server erstellt.
  • Private DNS-Zone: Aktiviert die DNS-Auflösung des PostgeSQL-Servers im virtuellen Netzwerk.

Screenshot, der den abgeschlossenen Bereitstellungsprozesses zeigt (Flask).

2. Überprüfen der Verbindungseinstellungen

Der Erstellungs-Assistent hat die Verbindungsvariablen für Sie bereits als App-Einstellungen generiert. App-Einstellungen sind eine Möglichkeit, um Verbindungsgeheimnisse aus Ihrem Coderepository herauszuhalten. Wenn Sie bereit sind, Ihre Geheimnisse an einen sichereren Speicherort zu verschieben, finden Sie hier einen Artikel zum Speichern in Azure Key Vault.

Schritt 1: Wählen Sie auf der App Service-Seite im linken Menü Konfiguration aus.

Screenshot, der zeigt, wie die Konfigurationsseite in App Service geöffnet wird (Flask).

Schritt 2: Überprüfen Sie auf der Registerkarte Anwendungseinstellungen auf der Seite Konfiguration, ob AZURE_POSTGRESQL_CONNECTIONSTRING vorhanden ist. Dies wird als Umgebungsvariablen in die Laufzeitumgebung eingefügt.

Screenshot, der zeigt, wie die automatisch generierte Verbindungszeichenfolge angezeigt wird (Flask).

Schritt 3: Führen Sie in einem Terminal oder einer Eingabeaufforderung das folgende Python-Skript aus, um ein eindeutiges Geheimnis zu generieren: python -c 'import secrets; print(secrets.token_hex())'. Kopieren Sie den Ausgabewert zur Verwendung im nächsten Schritt.

3. Bereitstellen von Beispielcode

In diesem Schritt konfigurieren Sie die GitHub-Bereitstellung mithilfe von GitHub Actions. Es ist nur eine der vielen Möglichkeiten, um App Service bereitzustellen, aber auch eine hervorragende Möglichkeit, eine kontinuierliche Integration in Ihren Bereitstellungsprozess zu haben. Standardmäßig startet jede git push in Ihrem GitHub-Repository die Build- und Bereitstellungsaktion.

Schritt 1: In einem neuen Browserfenster:

  1. Melden Sie sich bei Ihrem GitHub-Konto an.
  2. Navigiere zu https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app.
  3. Wählen Sie Fork aus.
  4. Wählen Sie Fork erstellen aus.

Screenshot des Erstellens eines Forks des GitHub-Beispielrepositorys (Flask).

Schritt 2: Öffnen Sie auf der GitHub-Seite Visual Studio Code im Browser, indem Sie die .-Taste drücken.

Screenshot des Öffnens der Visual Studio Code-Browsererfahrung in GitHub (Flask).

Schritt 3: Öffnen Sie in Visual Studio Code im Browser azureproject/production.py im Explorer. Sehen Sie sich die in der Produktionsumgebung verwendeten Umgebungsvariablen an, einschließlich der App-Einstellungen, die auf der Konfigurationsseite angezeigt wurden.

Screenshot von Visual Studio Code im Browser mit einer geöffneten Datei (Flask).

Schritt 4: Wählen Sie, wenn Sie wieder auf der App Service-Seite sind, im linken Menü Bereitstellungscenter aus.

Screenshot des Öffnens des Bereitstellungscenters in App Service (Flask).

Schritt 5: Auf der Seite „Bereitstellungscenter“:

  1. Wählen Sie in Quelle die Option GitHub aus. Standardmäßig wird GitHub Actions als Buildanbieter ausgewählt.
  2. Melden Sie sich bei Ihrem GitHub-Konto an und folgen Sie der Aufforderung, Azure zu autorisieren.
  3. Wählen Sie in Organisation Ihr Konto aus.
  4. Wählen Sie im Repository das Repository msdocs-flask-postgresql-sample-app aus.
  5. Wählen Sie in Branch die Option Hauptbereich aus.
  6. Lassen Sie die Standardoption Workflow hinzufügen ausgewählt.
  7. Wählen Sie unter Authentifizierungstyp die vom Benutzer zugewiesene Identität aus.
  8. Wählen Sie im oberen Menü Speichern aus. App Service committet eine Workflowdatei in das ausgewählte GitHub-Repository im .github/workflows-Verzeichnis.

Screenshot des Konfigurierens von CI/CD mittels GitHub Actions (Flask).

Schritt 6: Auf der Seite „Bereitstellungscenter“:

  1. Wählen Sie Protokolle aus. Eine Bereitstellungsausführung wird bereits gestartet.
  2. Wählen Sie im Protokollelement für die Bereitstellungsausführung die Option Build/Deploy Logs aus.

Screenshot des Öffnens von Bereitstellungsprotokollen im Bereitstellungscenter (Flask).

Schritt 7: Sie werden zu Ihrem GitHub-Repository weitergeleitet und sehen, dass die GitHub-Aktion ausgeführt wird. Die Workflowdatei definiert zwei separate Phasen, Erstellen und Bereitstellen. Warten Sie, bis die GitHub-Ausführung den Status Abgeschlossen anzeigt. Dies dauert ca. 5 Minuten.

Screenshot einer aktiven GitHub-Ausführung (Flask).

Treten Probleme auf? Sehen Sie sich den Leitfaden zur Problembehandlung an.

4. Generieren des Datenbankschemas

Mit der durch das virtuelle Netzwerk geschützten PostgreSQL-Datenbank besteht die einfachste Möglichkeit zum Ausführen von Flask-Datenbankmigrationen in einer SSH-Sitzung mit dem App Service-Container.

Schritt 1: Auf der App Service-Seite im Menü auf der linken Seite,

  1. Wählen Sie SSH aus.
  2. Klicken Sie auf Starten.

Screenshot des Öffnens der SSH-Shell für Ihre App im Azure-Portal (Flask).

Schritt 2: Führen Sie im SSH-Terminal flask db upgrade aus. Wenn dies erfolgreich ist, stellt App Service erfolgreich eine Verbindung mit der Datenbank her. Nur Änderungen an Dateien in /home können über den Neustart der App hinaus beibehalten werden. Änderungen außerhalb von /home bleiben nicht erhalten.

Screenshot der Befehle zum Ausführen in der SSH-Shell mit ihren Ausgaben (Flask).

5. Navigieren zur App

Schritt 1: Auf der App Service-Seite:

  1. Wählen Sie im Menü auf der linken Seite die Option Übersicht aus.
  2. Wählen Sie die URL Ihrer App aus. Sie können auch direkt zu https://<app-name>.azurewebsites.net navigieren.

Screenshot, der zeigt, wie Sie einen App Service über das Azure-Portal starten (Flask).

Schritt 2: Fügen Sie der Liste ein paar Restaurants zu. Glückwunsch! Sie führen eine Web-App in Azure App Service aus, mit sicherer Konnektivität zu Azure Database for PostgreSQL.

Screenshot der Flask-Web-App mit PostgreSQL, die in Azure ausgeführt wird und Restaurants und Restaurantbewertungen zeigt (Flask).

6. Streamen von Diagnoseprotokollen

Azure App Service erfasst alle Nachrichten, die in der Konsole ausgegeben werden, um Sie bei der Diagnose von Problemen mit Ihrer Anwendung zu unterstützen. Die Beispiel-App enthält print()-Anweisungen, um diese Funktion wie nachfolgend gezeigt zu veranschaulichen:

@app.route('/', methods=['GET'])
def index():
    print('Request for index page received')
    restaurants = Restaurant.query.all()
    return render_template('index.html', restaurants=restaurants)

Schritt 1: Auf der App Service-Seite:

  1. Wählen Sie im linken Menü App Service-Protokolle aus.
  2. Wählen Sie unter Anwendungsprotokollierung die Option Dateisystem aus.
  3. Wählen Sie im oberen Menü Speichern aus.

Screenshot: wie native Protokolle in App Service im Azure-Portal aktiviert werden.

Schritt 2: Wählen Sie im Menü auf der linken Seite die Option Protokollstream aus. Sie sehen die Protokolle für Ihre App, einschließlich Plattformprotokolle und Protokolle innerhalb des Containers.

Screenshot: wie der Protokollstream im Azure-Portal angezeigt wird.

Weitere Informationen zur Protokollierung in Python-Apps finden Sie in der Reihe zum Einrichten von Azure Monitor für Ihre Python-Anwendung.

7. Bereinigen von Ressourcen

Wenn Sie fertig sind, können Sie alle Ressourcen aus Ihrem Azure-Abonnement löschen, indem Sie die Ressourcengruppe löschen.

Schritt 1: In der Suchleiste oben im Azure-Portal:

  1. Geben Sie den Ressourcengruppennamen ein.
  2. Wählen Sie die Ressourcengruppe aus.

Screenshot: Suchen nach einer Ressourcengruppe und Navigieren zu einer Ressourcengruppe im Azure-Portal

Schritt 2: Wählen Sie auf der Seite „Ressourcengruppe“ die Option Ressourcengruppe löschen aus.

Screenshot: Position der Schaltfläche „Ressourcengruppe löschen“ im Azure-Portal.

Schritt 3:

  1. Geben Sie den Namen der Ressourcengruppe ein, um Ihre Löschung zu bestätigen.
  2. Klicken Sie auf Löschen.

Screenshot: Bestätigungsdialogfeld für das Löschen einer Ressourcengruppe im Azure-Portal :

1. Erstellen von Azure-Ressourcen und Bereitstellen einer Beispiel-App

In diesem Schritt erstellen Sie die Azure-Ressourcen und stellen eine Beispiel-App für App Service für Linux bereit. Die in diesem Tutorial ausgeführten Schritte erstellen eine Reihe standardmäßig sicherer Ressourcen, die App Service und Azure Database for PostgreSQL umfassen.

  1. Klonen Sie den starter-no-infra-Branch des Beispielrepositorys in einem lokalen Terminal, sofern noch nicht geschehen.

    git clone -b starter-no-infra https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app
    cd msdocs-flask-postgresql-sample-app
    

    Dieser geklonte Branch ist Ihr Ausgangspunkt. Er enthält eine einfache datengesteuerte Flask-Anwendung.

  2. Führen Sie im Repositorystamm azd init aus.

    azd init --template python-app-service-postgresql-infra
    
  3. Wenn Sie dazu aufgefordert werden, geben Sie die folgenden Antworten:

    Frage Antwort
    Das aktuelle Verzeichnis ist nicht leer. Möchten Sie ein Projekt hier in <Ihr Verzeichnis> initialisieren? Y
    Was möchten Sie mit diesen Dateien tun? Meine vorhandenen Dateien unverändert beibehalten
    Geben Sie einen neuen Umgebungsnamen ein. Geben Sie einen eindeutigen Namen ein. Die azd-Vorlage verwendet diesen Namen als Teil des DNS-Namens Ihrer Web-App in Azure (<app-name>.azurewebsites.net). Alphanumerische Zeichen und Bindestriche sind zulässig.
  4. Führen Sie den azd up-Befehl aus, um die notwendigen Azure-Ressourcen und den App-Code bereitzustellen. Wenn Sie noch nicht bei Azure angemeldet sind, wird der Browser gestartet, und Sie werden aufgefordert, sich anzumelden. Der azd up-Befehl fordert Sie außerdem auf, das gewünschte Abonnement sowie den gewünschten Speicherort für die Bereitstellung auszuwählen.

    azd up
    

    Die Ausführung des Befehls azd up kann einige Minuten dauern. Außerdem wird Ihr Anwendungscode kompiliert und bereitgestellt. Sie ändern den Code jedoch später so, dass er mit App Service funktioniert. Während der Ausführung stellt der Befehl Nachrichten zum Bestimmungs- und Bereitstellungsprozess bereit, einschließlich eines Links zur Bereitstellung in Azure. Wenn er abgeschlossen ist, zeigt der Befehl auch einen Link zur Bereitstellungsanwendung an.

    Diese azd-Vorlage enthält Dateien (azure.yaml und das Verzeichnis infra), die eine standardmäßig sichere Architektur mit den folgenden Azure-Ressourcen generieren:

    • Ressourcengruppe → Der Container für alle erstellten Ressourcen.
    • App Service-Plan → Definiert die Berechnungsressourcen für App Service. Ein Linux-Plan im Tarif B1 wird angegeben.
    • App Service → Stellt Ihre App dar und wird im App Service Plan ausgeführt.
    • Virtuelles Netzwerk → Integriert mit der App Service App und isoliert den Backend-Netzwerkdatenverkehr.
    • Azure Database for PostgreSQL – Flexibler Server: Nur aus dem virtuellen Netzwerk zugänglich. Eine Datenbank und ein Benutzer werden für Sie auf dem Server erstellt.
    • Private DNS-Zone: Aktiviert die DNS-Auflösung des PostgeSQL-Servers im virtuellen Netzwerk.
    • Log Analytics-Arbeitsbereich → Fungiert als Zielcontainer für Ihre App, um die Protokolle zu versenden. Dort können Sie auch die Protokolle abfragen.

2. Verwenden der Datenbank-Verbindungszeichenfolge

Die von Ihnen verwendete azd-Vorlage hat die Konnektivitätsvariablen für Sie bereits als App-Einstellungen generiert und gibt sie der Einfachheit halber im Terminal für Sie aus. App-Einstellungen sind eine Möglichkeit, um Verbindungsgeheimnisse aus Ihrem Coderepository herauszuhalten.

  1. Suchen Sie in der azd-Ausgabe die App-Einstellungen und dann nach den Einstellungen AZURE_POSTGRESQL_CONNECTIONSTRING und AZURE_REDIS_CONNECTIONSTRING. Um Geheimnisse zu schützen, werden nur die Einstellungsnamen angezeigt. Sie sehen in der azd-Ausgabe wie folgt aus:

     App Service app has the following settings:
    
             - AZURE_POSTGRESQL_CONNECTIONSTRING
             - AZURE_REDIS_CONNECTIONSTRING
             - FLASK_DEBUG
             - SCM_DO_BUILD_DURING_DEPLOYMENT
             - SECRET_KEY
     
  2. AZURE_POSTGRESQL_CONNECTIONSTRING enthält die Verbindungszeichenfolge mit der Postgres-Datenbank in Azure und AZURE_REDIS_CONNECTIONSTRING enthält die Verbindungszeichenfolge zum Redis-Cache in Azure. Sie müssen diesen Code verwenden, um eine Verbindung damit herzustellen. Öffnen Sie azureproject/production.py, heben Sie die Auskommentierung aufheben auf, und speichern Sie die Datei:

    conn_str = os.environ['AZURE_POSTGRESQL_CONNECTIONSTRING']
    conn_str_params = {pair.split('=')[0]: pair.split('=')[1] for pair in conn_str.split(' ')}
    DATABASE_URI = 'postgresql+psycopg2://{dbuser}:{dbpass}@{dbhost}/{dbname}'.format(
        dbuser=conn_str_params['user'],
        dbpass=conn_str_params['password'],
        dbhost=conn_str_params['host'],
        dbname=conn_str_params['dbname']
    )
    

    Ihr Anwendungscode ist jetzt für die Verbindungsherstellung mit der PostgreSQL-Datenbank in Azure konfiguriert. Öffnen Sie app.py, und sehen Sie sich an, wie die Umgebungsvariable DATABASE_URI verwendet wird.

  3. Führen Sie im Terminal azd deploy aus.

    azd deploy
    

4. Generieren des Datenbankschemas

Mit der durch das virtuelle Netzwerk geschützten PostgreSQL-Datenbank besteht die einfachste Möglichkeit zum Ausführen von Flask-Datenbankmigrationen in einer SSH-Sitzung mit dem App Service-Container.

  1. Suchen Sie in der azd-Ausgabe die URL für die SSH-Sitzung, und navigieren Sie im Browser dorthin. Die Ausgabe sieht wie folgt aus:

     Open SSH session to App Service container at: https://<app-name>.scm.azurewebsites.net/webssh/host
     
  2. Führen Sie im SSH-Terminal flask db upgrade aus. Wenn dies erfolgreich ist, stellt App Service erfolgreich eine Verbindung mit der Datenbank her.

    Screenshot der Befehle zum Ausführen in der SSH-Shell mit ihren Ausgaben (Flask).

    Hinweis

    Nur Änderungen an Dateien in /home können über den Neustart der App hinaus beibehalten werden. Änderungen außerhalb von /home bleiben nicht erhalten.

5. Navigieren zur App

  1. Suchen Sie in der azd-Ausgabe die URL für Ihre App, und navigieren Sie im Browser dorthin. Die URL sieht in der AZD-Ausgabe wie folgt aus:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: https://<app-name>.azurewebsites.net/
     
  2. Fügen Sie ein paar Restaurants zu der Liste hinzu.

    Glückwunsch! Sie führen eine Web-App in Azure App Service aus, mit sicherer Konnektivität zu Azure Database for PostgreSQL.

6. Streamen von Diagnoseprotokollen

Azure App Service kann Konsolenprotokolle erfassen, um Sie bei der Diagnose von Problemen mit Ihrer Anwendung zu unterstützen. Der Einfachheit halber sind für die azd-Vorlage bereits die Protokollierung im lokalen Dateisystem sowie das Senden an einen Log Analytics-Arbeitsbereich aktiviert.

Die Beispiel-App enthält print()-Anweisungen, um diese Funktion wie im folgenden Codeschnipsel gezeigt zu veranschaulichen:

@app.route('/', methods=['GET'])
def index():
    print('Request for index page received')
    restaurants = Restaurant.query.all()
    return render_template('index.html', restaurants=restaurants)

Suchen Sie in der azd-Ausgabe den Link zum Streamen von App Service-Protokollen, und navigieren Sie im Browser dorthin. Der Link sieht in der azd-Ausgabe wie folgt aus:

Stream App Service logs at: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream

Weitere Informationen zur Protokollierung in Python-Apps finden Sie in der Reihe zum Einrichten von Azure Monitor für Ihre Python-Anwendung.

7. Bereinigen von Ressourcen

Führen Sie azd down aus, um alle Azure-Ressourcen in der aktuellen Bereitstellungsumgebung zu löschen.

azd down

Problembehandlung

Im Folgenden sind Probleme, die beim Ausführen dieses Tutorials auftreten können, und die Schritte zu ihrer Behebung aufgeführt.

Ich kann keine Verbindung mit der SSH-Sitzung herstellen

Können Sie keine Verbindung mit der SSH-Sitzung herstellen, konnte die App selbst nicht gestartet werden. Überprüfen Sie die Details in den Diagnoseprotokollen. Wenn beispielsweise ein Fehler wie KeyError: 'AZURE_POSTGRESQL_CONNECTIONSTRING' angezeigt wird, kann dies bedeuten, dass die Umgebungsvariable fehlt (möglicherweise haben Sie die App-Einstellung entfernt).

Ich erhalten einen Fehler beim Ausführen von Datenbankmigrationen

Wenn Fehler im Zusammenhang mit dem Herstellen einer Verbindung mit der Datenbank auftreten, überprüfen Sie, ob die App-Einstellungen (AZURE_POSTGRESQL_CONNECTIONSTRING) geändert wurden. Ohne diese Verbindungszeichenfolge kann der Migrationsbefehl (migrate) nicht mit der Datenbank kommunizieren.

Häufig gestellte Fragen

Wie viel kostet diese Einrichtung?

Die Preise für die erstellte Ressourcen sind wie folgt:

  • Der App Service-Plan wird im Tarif Basic erstellt und kann hoch- oder herunterskaliert werden. Informationen dazu finden Sie unter App Service – Preise.
  • PostgreSQL – Flexibler Server wird in der niedrigsten burstfähigen Dienstebene, Standard_B1ms, mit der Mindestspeichergröße erstellt, die hoch- und herunterskaliert werden kann. Weitere Informationen finden Sie unter Azure Database for PostgreSQL – Preise.
  • Das virtuelle Netzwerk hat keine Gebühr, es sei denn, Sie konfigurieren zusätzliche Funktionen, z. B. Peering. Siehe Azure Virtual Network Preise.
  • Die private DNS-Zone verursacht eine kleine Gebühr. Siehe Azure DNS-Preise.

Wie stelle ich mit anderen Tools eine Verbindung mit dem PostgreSQL-Server her, der hinter dem virtuellen Netzwerk geschützt ist?

  • Für den einfachen Zugriff aus einem Befehlszeilentool können Sie psql über das SSH-Terminal der App ausführen.
  • Um eine Verbindung mit einem Desktoptool herzustellen, muss sich Ihr Computer innerhalb des virtuellen Netzwerks befinden. Es könnte beispielsweise eine Azure-VM sein, die mit einem der Subnetze verbunden ist, oder ein Computer in einem lokalen Netzwerk, das über eine Standort-zu-Standort-VPN-Verbindung mit dem virtuellen Azure-Netzwerk verfügt.
  • Sie können Azure Cloud Shell auch in das virtuelle Netzwerk integrieren.

Wie funktioniert die lokale App-Entwicklung mit GitHub Actions?

Nehmen Sie die automatisch generierte Workflowdatei von App Service als Beispiel; jede git push startet eine neue Build- und Bereitstellungsausführung. Aus einem lokalen Klon des GitHub-Repositorys können Sie die gewünschten Updates vornehmen und zu GitHub pushen. Beispiel:

git add .
git commit -m "<some-message>"
git push origin main

Wie ist das Django-Beispiel für die Ausführung in Azure App Service konfiguriert?

Hinweis

Wenn Sie dieses Tutorial mit Ihrer eigenen App durcharbeiten, sehen Sie sich die Beschreibung der Datei requirements.txt in der Datei README.md der einzelnen Projekte (Flask, Django) an, um Informationen zu den benötigten Paketen zu erhalten.

Die Django-Beispielanwendung konfiguriert Einstellungen in der Datei azureproject/production.py, damit sie in Azure App Service ausgeführt werden kann. Diese Änderungen sind gängig bei der Bereitstellung von Django in der Produktion und nicht spezifisch für App Service.

  • Django überprüft den HTTP_HOST-Header in eingehenden Anforderungen. Der Beispielcode verwendet die Umgebungsvariable WEBSITE_HOSTNAME in App Service zum Hinzufügen des Domänennamens der App zur Einstellung ALLOWED_HOSTS von Django.

    # Configure the domain name using the environment variable
    # that Azure automatically creates for us.
    ALLOWED_HOSTS = [os.environ['WEBSITE_HOSTNAME']] if 'WEBSITE_HOSTNAME' in os.environ else []
    
  • Für Django wird das Bereitstellen von statischen Dateien in der Produktion nicht unterstützt. Verwenden Sie für dieses Tutorial WhiteNoise, um die Bereitstellung der Dateien zu ermöglichen. Das WhiteNoise-Paket wurde bereits mit „requirements.txt“ installiert, und seine Middleware wird der Liste hinzugefügt.

    
    # WhiteNoise configuration
    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        # Add whitenoise middleware after the security middleware
        'whitenoise.middleware.WhiteNoiseMiddleware',
    

    Anschließend werden die statischen Dateieinstellungen entsprechend der Django-Dokumentation konfiguriert.

    SESSION_ENGINE = "django.contrib.sessions.backends.cache"
    STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
    

Weitere Informationen finden Sie unter Produktionseinstellungen für Django-Apps.

Nächste Schritte

Fahren Sie mit dem nächsten Tutorial fort, um zu erfahren, wie Sie Ihre App mit einer benutzerdefinierten Domäne und einem Zertifikat schützen.

Erfahren Sie, wie eine Python-App von App Service ausgeführt wird: