Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel erfahren Sie, wie Sie eine Azure App Service Web App mit Azure Database für PostgreSQL flexiblen Server in einem virtuellen Netzwerk erstellen.
In diesem Artikel erfahren Sie, wie Sie:
- 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, das CLI vorinstalliert ist). Führen Sie den Befehl
az --versionaus, 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 loginWenn Sie über mehrere Abonnements verfügen, wählen Sie das entsprechende Abonnement für die Abrechnung der Ressource aus. Wählen Sie die spezifische Abonnement-ID unter Ihrem Konto aus, indem Sie den Befehl "az account set" verwenden .
az account set --subscription <subscription ID>
Erstellen einer flexiblen Serverinstanz
Erstellen Sie eine private Azure-Datenbank für eine flexible Serverinstanz von PostgreSQL in einem virtuellen Netzwerk, indem Sie den folgenden Befehl verwenden:
az postgres flexible-server create --resource-group demoresourcegroup --name demoserverpostgres --vnet demoappvnet --location westus2
Dieser Befehl führt die folgenden Aktionen aus, die einige Minuten dauern können:
- Erstellt die Ressourcengruppe, wenn sie noch nicht vorhanden ist.
- Generiert einen Servernamen, wenn Sie keinen servernamen angeben.
- Erstellt ein virtuelles Netzwerk und Subnetz für die flexible Azure-Datenbank für PostgreSQL-Serverinstanz.
- Erstellt Administratorbenutzername und Kennwort für Ihren Server, wenn Sie sie nicht angeben.
- Erstellt eine leere Datenbank namens 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 einer 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. Der Standardplan unterstützt keine Integration des virtuellen Netzwerks. Verwenden Sie Standard oder Premium.
Erstellen Sie eine App Service-App (den Hostprozess) mittels des az webapp up Befehls.
az webapp up --resource-group demoresourcegroup --location westus2 --plan testappserviceplan --sku P2V2 --name mywebapp
Hinweis
- Verwenden Sie für
_--location_ argumentdenselben Speicherort wie für die Datenbank im vorherigen Abschnitt. - Ersetzen Sie
<app-name>durch einen eindeutigen Namen in ganz Azure. Zulässige Zeichen sind<app-name>A-Z, 0-9 und -. Ein bewährtes Muster ist eine Kombination aus Ihrem Firmennamen und einer App-ID.
Dieser Befehl führt die folgenden Aktionen aus, die einige Minuten dauern können:
- Erstellt die Ressourcengruppe, wenn sie noch nicht vorhanden ist. (In diesem Befehl verwenden Sie dieselbe Ressourcengruppe, in der Sie die Datenbank zuvor erstellt haben.)
- Erstellt die App Service-Anwendung, wenn sie nicht existiert.
- Aktiviert die Standardprotokollierung für die App, sofern noch nicht aktiviert.
- Lädt das Repository mithilfe der ZIP-Bereitstellung mit aktivierter Build-Automatisierung hoch.
Subnetz für Web-App erstellen
Bevor Sie die Integration des virtuellen Netzwerks aktivieren, benötigen Sie ein Subnetz, das an App Service Web App delegiert wird. Bevor Sie das Subnetz erstellen, zeigen Sie die Subnetzadresse der Datenbank 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 flexible Serverinstanz von PostgreSQL zu erstellen. 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-integrationsbefehl , um einer Web-App eine regionale virtuelle Netzwerkintegration hinzuzufügen.
az webapp vnet-integration add --resource-group demoresourcegroup -n mywebapp --vnet demoappvnet --subnet webappsubnet
Konfigurieren der Umgebungsvariablen für die Datenbankverbindung
Verbinden Sie die App nach der Bereitstellung des Codes im App Service mit der Azure-Datenbank für PostgreSQL auf einer flexiblen Serverinstanz in Azure. Vom App-Code werden Datenbankinformationen in zahlreichen Umgebungsvariablen erwartet. Verwenden Sie den Befehl "az webapp config appsettings set" , um 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 Postgres-Servernamen, den Benutzernamen und das Kennwort durch die Werte für die neu erstellte Azure-Datenbank für die flexible Serverinstanz von PostgreSQL.
Ersetzen Sie <username> and <password> durch die von dem Befehl für Sie ebenfalls generierten Anmeldeinformationen.
Die Ressourcengruppe und der App-Name stammen aus den zwischengespeicherten Werten in der AZURE/config-Datei.
Der Befehl erstellt Einstellungen namens DBHOST, DBNAME, DBUSER und DBPASS. Wenn Ihr Anwendungscode unterschiedliche 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 Ressourcen, die Sie im Artikel erstellt haben, mithilfe des folgenden Befehls. Mit diesem Befehl werden alle Ressourcen in dieser Ressourcengruppe gelöscht.
az group delete -n demoresourcegroup