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