Lernprogramm: Erstellen einer Azure-Datenbank für PostgreSQL – Flexible Serverinstanz mit App Services Web App in virtuellem Netzwerk

GILT FÜR: Azure Database for PostgreSQL – Flexible Server

In diesem Lernprogramm erfahren Sie, wie Sie eine Azure-App Service Web App mit Azure Database for PostgreSQL flexiblen Server in einem virtuellen Netzwerk erstellen.

In diesem Lernprogramm lernen Sie Folgendes:

  • Erstellen einer Azure-Datenbank für flexible Serverinstanz von PostgreSQL in einem virtuellen Netzwerk
  • Erstellen einer Web-App
  • Hinzufügen der Web-App zum virtuellen Netzwerk
  • Verbinden zu Azure Database for PostgreSQL flexiblen Server aus der Web-App

Voraussetzungen

  • Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

  • Installieren Sie die Azure CLI (Version 2.0 oder höher) lokal. Führen Sie den Befehl az --version aus, um die installierte Version anzuzeigen.

  • Melden Sie sich mithilfe des Befehls az login bei Ihrem Konto an. Beachten Sie die Eigenschaft id aus der Befehlsausgabe für den entsprechenden Abonnementnamen.

    az login
    
  • Wenn Sie über mehrere Abonnements verfügen, wählen Sie das entsprechende Abonnement aus, in dem die Ressource fakturiert sein sollte. Wählen Sie mithilfe des Befehls az account set die Abonnement-ID unter Ihrem Konto aus.

    az account set --subscription <subscription ID>
    

Erstellen einer Azure-Datenbank für flexible Serverinstanz von PostgreSQL in einem neuen virtuellen Netzwerk

Erstellen Sie mithilfe des folgenden Befehls eine private Azure-Datenbank für flexible Serverinstanz in einem virtuellen Netzwerk (VNET):

az postgres flexible-server create --resource-group demoresourcegroup --name demoserverpostgres --vnet demoappvnet --location westus2

Durch diesen Befehl werden folgende Aktionen ausgeführt, was einige Minuten dauern kann:

  • Erstellen einer Ressourcengruppe (sofern noch nicht vorhanden).
  • Generiert einen Servernamen, wenn er nicht angegeben wird.
  • Erstellen Sie ein neues virtuelles Netzwerk für Ihre neue Azure-Datenbank für Flexible Serverinstanz und Subnetz innerhalb dieses virtuellen Netzwerks für die flexible Serverinstanz azure Database für PostgreSQL.
  • Erstellt einen Administratorbenutzernamen und ein Kennwort für Ihren Server, sofern nicht angegeben.
  • Erstellt eine leere Datenbank mit dem Namen postgres.

Hier ist die Beispielausgabe.

Local context is turned on. Its information is saved in working directory /home/jane. You can run `az local-context off` to turn it off.
Command argument values from local context: --resource-group demoresourcegroup, --location: eastus
Checking the existence of the resource group ''...
Creating Resource group 'demoresourcegroup ' ...
Creating new vnet "demoappvnet" in resource group "demoresourcegroup" ...
Creating new subnet "Subnet095447391" in resource group "demoresourcegroup " and delegating it to "Microsoft.DBforPostgreSQL/flexibleServers"...
Creating Azure Database for PostgreSQL flexible server instance 'demoserverpostgres' in group 'demoresourcegroup'...
Your server 'demoserverpostgres' is using sku 'Standard_D2s_v3' (Paid Tier). Please refer to https://aka.ms/postgres-pricing for pricing details
Make a note of your password. If you forget, you have to reset your password with 'az postgres flexible-server update -n demoserverpostgres --resource-group demoresourcegroup -p <new-password>'.
{
  "connectionString": "postgresql://generated-username:generated-password@demoserverpostgres.postgres.database.azure.com/postgres?sslmode=require",
  "host": "demoserverpostgres.postgres.database.azure.com",
  "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/demoresourcegroup/providers/Microsoft.DBforPostgreSQL/flexibleServers/demoserverpostgres",
  "location": "East US",
  "password": "generated-password",
  "resourceGroup": "demoresourcegroup",
  "skuname": "Standard_D2s_v3",
  "subnetId": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/demoresourcegroup/providers/Microsoft.Network/virtualNetworks/VNET095447391/subnets/Subnet095447391",
  "username": "generated-username",
  "version": "12"
}

Erstellen einer Web-App

In diesem Abschnitt erstellen Sie App-Host in app Service-App, verbinden diese App mit der flexiblen Azure-Serverdatenbank für PostgreSQL und stellen dann Ihren Code auf diesem Host bereit. Vergewissern Sie sich im Terminal, dass Sie sich im Repositorystamm Ihres Anwendungscodes befinden. Im Basic-Tarif wird die VNet-Integration nicht unterstützt. Verwenden Sie den Standard- oder Premium-Tarif.

Erstellen Sie mithilfe des Befehls „az webapp up“ eine App Service-App (den Hostprozess):

az webapp up --resource-group demoresourcegroup --location westus2 --plan testappserviceplan --sku P2V2 --name mywebapp

Hinweis

  • Verwenden Sie für das Argument --location den gleichen Standort wie für die Datenbank im vorherigen Abschnitt.
  • Ersetzen Sie <app-name> durch einen in Azure eindeutigen Namen. Gültige Zeichen für <app-name> sind A-Z, 0-9 und der Bindestrich (-). Ein bewährtes Muster ist eine Kombination aus Ihrem Firmennamen und einer App-ID.

Durch diesen Befehl werden folgende Aktionen ausgeführt, was einige Minuten dauern kann:

  • Erstellen einer Ressourcengruppe (sofern noch nicht vorhanden). Verwenden Sie in diesem Befehl die gleiche Ressourcengruppe, in der Sie zuvor schon die Datenbank erstellt haben.
  • Erstellen der App Service-App (sofern noch nicht vorhanden)
  • Aktivieren der Standardprotokollierung für die App (sofern noch nicht aktiviert)
  • Hochladen des Repositorys per ZIP-Bereitstellung mit aktivierter Buildautomatisierung

Erstellen eines Subnetzes für Web-Apps

Bevor Sie die VNet-Integration aktivieren, benötigen Sie ein Subnetz, das für App Service-Web-Apps delegiert ist. Bevor Sie das Subnetz erstellen, sehen Sie sich die Datenbanksubnetzadresse an, um zu vermeiden, dasselbe Adresspräfix für das Web-App-Subnetz zu verwenden.

az network vnet show --resource-group demoresourcegroup -n demoappvnet

Führen Sie den folgenden Befehl aus, um ein neues Subnetz im selben virtuellen Netzwerk wie die Azure-Datenbank für PostgreSQL flexible Serverinstanz zu erstellen. Aktualisieren Sie das Adresspräfix, um Konflikte mit der Azure-Datenbank für flexibles Serversubnetz für PostgreSQL zu vermeiden.

az network vnet subnet create --resource-group demoresourcegroup --vnet-name demoappvnet --name webappsubnet  --address-prefixes 10.0.1.0/24  --delegations Microsoft.Web/serverFarms

Hinzufügen der Web-App zum virtuellen Netzwerk

Verwenden Sie den az webapp vnet-integration-Befehl, um eine regionale Integration eines virtuellen Netzwerks einer Web-App hinzuzufügen.

az webapp vnet-integration add --resource-group demoresourcegroup -n  mywebapp --vnet demoappvnet --subnet webappsubnet

Konfigurieren der Umgebungsvariablen für die Datenbankverbindung

Nachdem der Code jetzt für App Service bereitgestellt wurde, besteht der nächste Schritt darin, die App mit der flexiblen Azure-Serverinstanz für PostgreSQL in Azure zu verbinden. Vom App-Code werden Datenbankinformationen in einer Reihe von Umgebungsvariablen erwartet. Verwenden Sie den Befehl az webapp config appsettings set, um die Umgebungsvariablen in App Service festzulegen.

  
az webapp config appsettings set  --name mywebapp --settings DBHOST="<postgres-server-name>.postgres.database.azure.com" DBNAME="postgres" DBUSER="<username>" DBPASS="<password>" 
  • Ersetzen Sie den Befehl "postgres-server-name", "Benutzername", "Kennwort " für die neu erstellte Azure-Datenbank für Den flexiblen Serverinstanzbefehl für PostgreSQL.
  • Ersetzen Sie <username> und <password> durch die vom Befehl für Sie generierten Anmeldeinformationen.
  • Die Ressourcengruppe und der Name der App werden aus den zwischengespeicherten Werten in der Datei .azure/config abgerufen.
  • Der Befehl erstellt Einstellungen namens DBHOST, DBNAME, DBUSER* und DBPASS. Wenn Ihr Anwendungscode einen anderen Namen für die Datenbankinformationen verwendet, verwenden Sie diese Namen für die App-Einstellungen, wie im Code erwähnt.

Konfigurieren Sie die Web-App so, dass alle ausgehenden Verbindungen, die vom virtuellen Netzwerk ausgehen, zugelassen werden.

az webapp config set --name mywebapp --resource-group demoresourcegroup --generic-configurations '{"vnetRouteAllEnabled": true}'

Bereinigen von Ressourcen

Bereinigen Sie alle im Tutorial erstellten Ressourcen mit dem folgenden Befehl. Mit diesem Befehl werden alle Ressourcen in dieser Ressourcengruppe gelöscht.

az group delete -n demoresourcegroup

Nächste Schritte