Esercitazione: Creare un'istanza del server flessibile Database di Azure per PostgreSQL con app Web servizio app s nella rete virtuale

SI APPLICA A: Database di Azure per PostgreSQL - Server flessibile

Questa esercitazione illustra come creare un'app Web del servizio app Azure con Database di Azure per PostgreSQL server flessibile all'interno di una rete virtuale.

In questa esercitazione si apprenderà come:

  • Creare un'istanza del server flessibile Database di Azure per PostgreSQL in una rete virtuale
  • Creare un'app Web
  • Aggiungere l'app Web alla rete virtuale
  • Connettersi a Database di Azure per PostgreSQL server flessibile dall'app Web

Prerequisiti

  • Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

  • Installare l'interfaccia della riga di comando di Azure versione 2.0 o successiva in locale oppure usare Azure Cloud Shell con l'interfaccia della riga di comando preinstallata. Per vedere la versione installata, eseguire il comando az --version.

  • Accedere all'account usando il comando az login . Si noti la proprietà id dell'output del comando per il nome della sottoscrizione corrispondente.

    az login
    
  • Se si possiedono più sottoscrizioni, scegliere quella appropriata in cui verrà fatturata la risorsa. Selezionare l'ID sottoscrizione specifico sotto l'account tramite il comando az account set.

    az account set --subscription <subscription ID>
    

Creare un'istanza del server flessibile Database di Azure per PostgreSQL in una nuova rete virtuale

Creare un'istanza del server flessibile Database di Azure per PostgreSQL privata all'interno di una rete virtuale usando il comando seguente:

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

Questo comando esegue le azioni seguenti, che possono richiedere alcuni minuti:

  • Crea il gruppo di risorse se non esiste già.
  • Genera un nome del server se non viene specificato.
  • Crea una rete virtuale e una subnet per l'istanza del server flessibile Database di Azure per PostgreSQL.
  • Crea il nome utente e la password dell'amministratore per il server, se non specificato.
  • Crea un database vuoto denominato postgres.

Ecco l'output di esempio.

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

Creare un'app Web

In questa sezione viene creato l'host dell'app in servizio app app, si connette l'app al database del server flessibile Database di Azure per PostgreSQL e quindi si distribuisce il codice in tale host. Nel terminale assicurarsi di trovarsi nella radice del repository del codice dell'applicazione. Nota Piano basic non supporta l'integrazione della rete virtuale. Usare Standard o Premium.

Creare un'app servizio app (processo host) con il comando az webapp up.

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

Nota

  • Per l'argomento --location , usare la stessa posizione usata per il database nella sezione precedente.
  • Sostituire <app-name> con un nome univoco in tutto Azure. I caratteri consentiti per <app-name> sono A-Z, 0-9 e -. Un criterio valido consiste nell'usare una combinazione del nome della società e di un identificatore dell'app.

Questo comando esegue le azioni seguenti, che possono richiedere alcuni minuti:

  • Crea il gruppo di risorse se non esiste già. In questo comando viene usato lo stesso gruppo di risorse in cui in precedenza è stato creato il database.
  • Crea l'app del Servizio app se non esiste.
  • Abilita la registrazione predefinita per l'app, se non è già abilitata.
  • Carica il repository usando la distribuzione ZIP con l'automazione della compilazione abilitata.

Creare una subnet per l'app Web

Prima di abilitare l'integrazione della rete virtuale, è necessario avere una subnet delegata a servizio app'app Web. Prima di creare la subnet, visualizzare l'indirizzo della subnet del database per evitare di usare lo stesso prefisso indirizzo per la subnet dell'app Web.

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

Eseguire il comando seguente per creare una nuova subnet nella stessa rete virtuale della Database di Azure per PostgreSQL'istanza del server flessibile creata. Aggiornare il prefisso dell'indirizzo per evitare conflitti con la subnet del server flessibile Database di Azure per PostgreSQL.

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

Aggiungere l'app Web alla rete virtuale

Usare il comando az webapp vnet-integration per aggiungere l'integrazione di una rete virtuale di area all'app Web.

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

Configurare le variabili di ambiente per la connessione del database

Con il codice ora distribuito in servizio app, il passaggio successivo consiste nel connettere l'app all'istanza del server flessibile Database di Azure per PostgreSQL in Azure. Il codice dell'app prevede di trovare informazioni sul database in molte variabili di ambiente. Per impostare le variabili di ambiente in servizio app, usare il comando 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>" 
  • Sostituire postgres-server-name,username,password per il comando dell'istanza del server flessibile Database di Azure per PostgreSQL appena creata.
  • Sostituire nome utente> e< password> con le credenziali generate automaticamente dal comando.<
  • Il gruppo di risorse e il nome dell'app vengono ricavate a partire dai valori memorizzati nella cache nel file .azure/config.
  • Il comando crea impostazioni denominate DBHOST, DBNAME, DBUSER*e DBPASS. Se il codice dell'applicazione usa un nome diverso per le informazioni sul database, usare tali nomi per le impostazioni dell'app come indicato nel codice.

Configurare l'app Web per consentire tutte le connessioni in uscita dall'interno della rete virtuale.

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

Pulire le risorse

Pulire tutte le risorse create nell'esercitazione con il comando seguente. Questo comando elimina tutte le risorse incluse in questo gruppo di risorse.

az group delete -n demoresourcegroup

Passaggi successivi