Freigeben über


Tutorial: Erstellen einer Instanz von Azure Database for PostgreSQL Flexible Serverinstanz mit App Services-Web-App im virtuellen Netzwerk

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

In diesem Tutorial wird gezeigt, wie Sie eine Azure App Service-Web-App mit Azure Database for PostgreSQL – Flexible Server in einem virtuellen Netzwerk erstellen.

In diesem Tutorial lernen Sie Folgendes:

  • Erstellen einer flexiblen Serverinstanz von Azure Database for PostgreSQL in einem virtuellen Netzwerk
  • Erstellen einer Web-App
  • Hinzufügen der Web-App zum virtuellen Netzwerk
  • Herstellen einer Verbindung zwischen der Web-App und dem flexiblen Server von Azure Database for PostgreSQL

Voraussetzungen

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

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

  • Melden Sie sich mithilfe des Befehls az login in 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 Sie eine flexible Serverinstanz von Azure Database for PostgreSQL in einem neuen virtuellen Netzwerk

Führen Sie den folgenden Befehl aus, um eine private flexible Serverinstanz von Azure Database for PostgreSQL in einem virtuellen Netzwerk (VNet) zu erstellen:

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 ist.
  • Erstellt ein virtuelles Netzwerk und Subnetz für die flexible Azure-Datenbank für PostgreSQL-Serverinstanz.
  • 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.

Creating Resource Group 'demoresourcegroup'...
Creating new Vnet "demoappvnet" in resource group "demoresourcegroup"
Creating new Subnet "Subnetdemoserverpostgres" in resource group "demoresourcegroup"
Creating a private dns zone demoserverpostgres.private.postgres.database.azure.com in resource group "demoresourcegroup"
Creating PostgreSQL Server '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
Creating PostgreSQL database 'flexibleserverdb'...
Make a note of your password. If you forget, you would have to reset your password with "az postgres flexible-server update -n demoserverpostgres -g demoresourcegroup -p <new-password>".
Try using 'az postgres flexible-server connect' command to test out connection.
{
  "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/demoappvnet/subnets/Subnetdemoserverpostgres",
  "username": "generated-username",
  "version": "12"
}

Erstellen einer „“-Web-App

In diesem Abschnitt erstellen Sie einen App-Host in der App Service-App, verbinden die App mit der Azure Database for PostgreSQL Flexible Server-Datenbank und stellen anschließend Ihren Code auf dem 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 Standard oder Premium.

Führen Sie den Befehl „az webapp up“ aus, um eine App Service-App (den Hostprozess) zu erstellen:

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 gleichen virtuellen Netzwerk zu erstellen, in dem auch die flexible Serverinstanz von Azure Database for PostgreSQL erstellt wurde. Aktualisieren Sie das Adresspräfix, um Konflikte mit der Azure-Datenbank für flexibles Server-Subnetz 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 nun in App Service bereitgestellt ist, müssen Sie als Nächstes eine Verbindung zwischen der App und der flexiblen Serverinstanz von Azure Database for PostgreSQL in Azure herstellen. Vom App-Code werden Datenbankinformationen in zahlreichen 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 postgres-server-name,Benutzername,Kennwort für den neu erstellten 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