Zelfstudie: Een Azure Database for PostgreSQL - Flexible Server-exemplaar maken met App Services-web-app in een virtueel netwerk

VAN TOEPASSING OP: Azure Database for PostgreSQL - Flexibele server

Deze zelfstudie laat zien hoe u een Azure-app Service-web-app maakt met een flexibele Azure Database for PostgreSQL-server in een virtueel netwerk.

In deze zelfstudie leert u het volgende:

  • Een azure Database for PostgreSQL Flexible Server-exemplaar maken in een virtueel netwerk
  • Een webtoepassing maken
  • De web-app toevoegen aan het virtuele netwerk
  • Verbinding maken naar azure Database for PostgreSQL flexibele server vanuit de web-app

Vereisten

  • Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

  • Installeer Azure CLI.versie 2.0 of hoger lokaal. Voer de opdracht az --version uit om de geïnstalleerde versie te zien.

  • Meld u aan bij uw account met behulp van de opdracht az login . Let op de id-eigenschap van de opdrachtuitvoer voor de naam van het desbetreffende abonnement.

    az login
    
  • Als u meerdere abonnementen hebt, kiest u het juiste abonnement waarin de resource moet worden gefactureerd. Selecteer de specifieke abonnements-id in uw account met de opdracht az account set.

    az account set --subscription <subscription ID>
    

Een exemplaar van een flexibele Azure Database for PostgreSQL-server maken in een nieuw virtueel netwerk

Maak een privé azure Database for PostgreSQL Flexible Server-exemplaar in een virtueel netwerk (VNET) met behulp van de volgende opdracht:

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

Deze opdracht voert de volgende acties uit, dit kan enkele minuten duren:

  • Maak de resourcegroep als deze nog niet bestaat.
  • Hiermee wordt een servernaam gegenereerd als deze niet is opgegeven.
  • Maak een nieuw virtueel netwerk voor uw nieuwe exemplaar van flexibele Azure Database for PostgreSQL-server en subnet in dit virtuele netwerk voor het flexibele serverexemplaren van Azure Database for PostgreSQL.
  • Hiermee maakt u de gebruikersnaam van de beheerder en het wachtwoord voor uw server indien niet opgegeven.
  • Hiermee maakt u een lege database met de naam postgres

Hier volgt de voorbeelduitvoer.

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"
}

Een web-app maken

In deze sectie maakt u een app-host in de App Service-app, verbindt u deze app met de flexibele Server-database van Azure Database for PostgreSQL en implementeert u vervolgens uw code op die host. Controleer of u zich in de hoofdmap bevindt van de opslagplaats die de code van de app bevat. Opmerking Basic Plan biedt geen ondersteuning voor VNET-integratie. Gebruik Standard of Premium.

Een App Service-app maken (het hostproces) met de opdracht az webapp up

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

Notitie

  • Gebruik voor het argument --location dezelfde locatie als voor de database in de vorige sectie.
  • Vervang <de app-naam> door een unieke naam in azure. Toegestane tekens voor <app-naam> zijn A-Z, 0-9 en -. Het is handig om een een combinatie van uw bedrijfsnaam en een app-id te gebruiken.

Deze opdracht voert de volgende acties uit, dit kan enkele minuten duren:

  • Maak de resourcegroep als deze nog niet bestaat. (In deze opdracht gebruikt u dezelfde resourcegroep waarin u de database eerder hebt gemaakt.)
  • Maak de App Service-app als deze nog niet bestaat.
  • Schakel standaardlogboeken voor de app in, als die nog niet zijn ingeschakeld.
  • Upload de opslagplaats met behulp van ZIP-implementatie, met ingeschakelde bouwautomatisering.

Subnet voor web-app maken

Voordat u VNET-integratie inschakelt, moet u een subnet hebben dat is gedelegeerd aan App Service Web App. Voordat u het subnet maakt, bekijkt u het subnetadres van de database om te voorkomen dat hetzelfde adresvoorvoegsel wordt gebruikt voor het subnet van de web-app.

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

Voer de volgende opdracht uit om een nieuw subnet te maken in hetzelfde virtuele netwerk als het flexibele serverexemplaren van Azure Database for PostgreSQL. Werk het adresvoorvoegsel bij om conflicten met het subnet van de flexibele Server van Azure Database for PostgreSQL te voorkomen.

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

De web-app toevoegen aan het virtuele netwerk

Gebruik de opdracht az webapp vnet-integration om een regionale virtuele netwerkintegratie toe te voegen aan een webapp.

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

De omgevingsvariabelen configureren om de database te verbinden

Nu de code is geïmplementeerd in App Service, is de volgende stap het verbinden van de app met het flexibele serverexemplaren van Azure Database for PostgreSQL in Azure. De code van de app verwacht om database-informatie te vinden in een aantal omgevingsvariabelen. Als u omgevingsvariabelen wilt instellen in App Service, gebruikt u de opdracht az webapp config appsettings set .

  
az webapp config appsettings set  --name mywebapp --settings DBHOST="<postgres-server-name>.postgres.database.azure.com" DBNAME="postgres" DBUSER="<username>" DBPASS="<password>" 
  • Vervang postgres-servernaam, gebruikersnaam, wachtwoord voor de zojuist gemaakte opdracht voor het flexibele serverexemplaren van Azure Database for PostgreSQL.
  • Vervang <de gebruikersnaam> en <het wachtwoord> door de referenties die de opdracht ook voor u heeft gegenereerd.
  • De resourcegroep en de naam van de app worden opgehaald uit de cachewaarden in het bestand . azure/config.
  • Met de opdracht worden instellingen met de naam DBHOST, DBNAME, DBUSER* en DBPASS gemaakt. Als uw toepassingscode een andere naam gebruikt voor de databasegegevens, gebruikt u deze namen voor de app-instellingen zoals vermeld in de code.

Configureer de web-app om alle uitgaande verbindingen vanuit het virtuele netwerk toe te staan.

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

Resources opschonen

Verwijder alle resources die u hebt gemaakt in de zelfstudie met behulp van de volgende opdracht. Met deze opdracht verwijdert u alle resources in deze resourcegroep.

az group delete -n demoresourcegroup

Volgende stappen