Självstudie: Skapa en Azure Database for PostgreSQL – flexibel server med App Services-webbapp i virtuellt nätverk

Den här självstudien visar hur du skapar en Azure App Service-webbapp med Azure Database for PostgreSQL – flexibel server i ett virtuellt nätverk.

I den här självstudien får du lära dig hur man

  • Skapa en flexibel PostgreSQL-server i ett virtuellt nätverk
  • Skapa en webbapp
  • Lägga till webbappen i det virtuella nätverket
  • Anslut till Postgres från webbappen

Förutsättningar

  • Om du inte har en Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.

  • Installera Azure CLI.version 2.0 eller senare lokalt. Kör kommandot az --version om du vill se vilken version som är installerad.

  • Logga in på ditt konto med kommandot az login. Observera egenskapen ID från kommandoutdata för det motsvarande prenumerationsnamnet.

    az login
    
  • Om du har flera prenumerationer ska du välja lämplig prenumeration där resursen ska debiteras. Välj det specifika prenumerations-ID:t under ditt konto med hjälp av kommandot az account set.

    az account set --subscription <subscription ID>
    

Skapa en flexibel PostgreSQL-server i ett nytt virtuellt nätverk

Skapa en privat flexibel server i ett virtuellt nätverk (VNET) med följande kommando:

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

Det här kommandot utför följande åtgärder, vilket kan ta några minuter:

  • Skapa resursgruppen om den inte redan finns.
  • Genererar ett servernamn om det inte anges.
  • Skapa ett nytt virtuellt nätverk för din nya postgreSQL-server och undernät i det här virtuella nätverket för databasservern.
  • Skapar administratörens användarnamn , lösenord för servern om inget annat anges.
  • Skapar en tom databas med namnet postgres

Här är exempel på utdata.

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 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
Make a note of your password. If you forget, you would have to resetyour 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"
}

Skapa en webbapp

I det här avsnittet skapar du en appvärd i App Service, ansluter den här appen till Postgres-databasen och distribuerar sedan koden till värden. Kontrollera att du är i lagringsplatsens rot i programkoden i terminalen. Obs! Basic-planen stöder inte VNET-integrering. Använd Standard eller Premium.

Skapa en App Service -app (värdprocessen) med kommandot az webapp up

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

Anteckning

  • För argumentet --location använder du samma plats som du gjorde för databasen i föregående avsnitt.
  • Ersätt <app-name> med ett unikt namn i hela Azure. Tillåtna tecken <app-name> för är A–Z, 0–9 och -. Ett bra mönster är att använda en kombination av företagets namn och en appidentifierare.

Det här kommandot utför följande åtgärder, vilket kan ta några minuter:

  • Skapa resursgruppen om den inte redan finns. (I det här kommandot använder du samma resursgrupp som du skapade databasen i tidigare.)
  • Skapa App Service app om den inte finns.
  • Aktivera standardloggning för appen, om det inte redan är aktiverat.
  • Upload lagringsplatsen med ZIP-distribution med byggautomatisering aktiverat.

Skapa undernät för webbapp

Innan du aktiverar VNET-integrering måste du ha ett undernät som har delegerats till App Service-webbappen. Innan du skapar undernätet bör du visa databasens undernätsadress för att undvika att använda samma adressprefix för webbappsundernätet.

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

Kör följande kommando för att skapa ett nytt undernät i samma virtuella nätverk som databasservern skapades. Uppdatera adressprefixet för att undvika konflikter med databasens undernät.

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

Lägga till webbappen i det virtuella nätverket

Använd kommandot az webapp vnet-integration för att lägga till en regional integrering av virtuella nätverk i en webbapp.

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

Konfigurera miljövariabler för att ansluta databasen

När koden nu distribueras till App Service är nästa steg att ansluta appen till den flexibla servern i Azure. Appkoden förväntar sig att hitta databasinformation i ett antal miljövariabler. Ange miljövariabler i App Service kommandot 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>" 
  • Ersätt **postgres-server-name,**username,password för det nya flexibla serverkommandot.
  • Ersätt <username> och med de <password> autentiseringsuppgifter som kommandot också genererade åt dig.
  • Resursgruppen och appnamnet hämtas från de cachelagrade värdena i .azure/config-filen.
  • Kommandot skapar inställningar med namnen DBHOST, DBNAME, DBUSER _, och _DBPASS*. Om programkoden använder ett annat namn för databasinformationen använder du dessa namn för appinställningarna som anges i koden.

Konfigurera webbappen så att den tillåter alla utgående anslutningar inifrån det virtuella nätverket.

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

Rensa resurser

Rensa alla resurser som du skapade i självstudien med hjälp av följande kommando. Det här kommandot tar bort alla resurser i den här resursgruppen.

az group delete -n demoresourcegroup

Nästa steg