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
  • Connessione per 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. 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.
  • Creare una nuova rete virtuale per la nuova istanza del server flessibile Database di Azure per PostgreSQL e la subnet all'interno di questa rete virtuale 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.

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

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 di base non supporta l'integrazione della rete virtuale. Usare Standard o Premium.

Creare un'app del 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 una serie di 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, DBU edizione Standard R*e DBPASS. Se il codice dell'applicazione usa nomi diversi per le informazioni del database, usare questi 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