Sdílet prostřednictvím


Vytvoření služby Azure Database for PostgreSQL s webovou aplikací ve virtuální síti

V tomto článku se dozvíte, jak vytvořit webovou aplikaci Azure App Service s flexibilním serverem Azure Database for PostgreSQL v rámci virtuální sítě.

V tomto článku se naučíte:

  • Vytvoření instance flexibilního serveru Azure Database for PostgreSQL ve virtuální síti
  • Vytvoření webové aplikace
  • Přidání webové aplikace do virtuální sítě
  • Připojení k flexibilnímu serveru Azure Database for PostgreSQL z webové aplikace

Požadavky

  • Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.

  • Nainstalujte Azure CLI verze 2.0 nebo novější místně (nebo použijte Azure Cloud Shell, který má předinstalované rozhraní příkazového řádku). Pokud chcete zjistit nainstalovanou verzi, spusťte příkaz az --version.

  • Přihlaste se ke svému účtu pomocí příkazu az login . Z výstupu příkazu si poznamenejte vlastnost id pro odpovídající název předplatného.

    az login
    
  • Pokud máte více předplatných, zvolte příslušné předplatné pro fakturaci prostředku. Pomocí příkazu az account set vyberte konkrétní ID předplatného ve vašem účtu.

    az account set --subscription <subscription ID>
    

Vytvoření flexibilní instance serveru

Vytvořte privátní instanci flexibilního serveru Azure Database for PostgreSQL ve virtuální síti pomocí následujícího příkazu:

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

Tento příkaz provede následující akce, které můžou trvat několik minut:

  • Vytvoří skupinu prostředků, pokud ještě neexistuje.
  • Vygeneruje název serveru, pokud ho nezadáte.
  • Vytvoří virtuální síť a podsíť pro instanci flexibilního serveru Azure Database for PostgreSQL.
  • Pokud ho nezadáte, vytvoří se pro váš server uživatelské jméno a heslo správce.
  • Vytvoří prázdnou databázi s názvem postgres.

Tady je ukázkový výstup.

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

Vytvoření webové aplikace

V této části vytvoříte hostitele aplikace v aplikaci App Service, připojíte tuto aplikaci k flexibilní serverové databázi Azure Database for PostgreSQL a pak na tohoto hostitele nasadíte svůj kód. Ujistěte se, že jste v kořenovém adresáři úložiště kódu aplikace v terminálu. Plán Basic nepodporuje integraci virtuální sítě. Použijte Standard nebo Premium.

Pomocí příkazu vytvořte aplikaci služby App Service (hostitelský proces).az webapp up

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

Poznámka:

  • Pro _--location_ argument použijte stejné umístění jako u databáze v předchozí části.
  • Nahraďte <app-name> jedinečným názvem ve všech Azure. Povolené znaky jsou <app-name> A-Z, 0-9 a -. Dobrým vzorem je použití kombinace názvu vaší společnosti a identifikátoru aplikace.

Tento příkaz provede následující akce, které můžou trvat několik minut:

  • Vytvoří skupinu prostředků, pokud ještě neexistuje. (V tomto příkazu použijete stejnou skupinu prostředků, ve které jste dříve vytvořili databázi.)
  • Vytvoří aplikaci App Service, pokud neexistuje.
  • Povolí výchozí protokolování pro aplikaci, pokud ještě není povolené.
  • Nahraje repozitář prostřednictvím nasazení ZIP s povolenou automatizací sestavení.

Vytvoření podsítě pro webovou aplikaci

Před povolením integrace virtuální sítě potřebujete podsíť delegovanou do webové aplikace App Service. Před vytvořením podsítě zobrazte adresu podsítě databáze, abyste se vyhnuli použití stejné předpony adresy pro podsíť webové aplikace.

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

Spuštěním následujícího příkazu vytvořte novou podsíť ve stejné virtuální síti jako instanci flexibilního serveru Azure Database for PostgreSQL. Aktualizujte předponu adresy, aby nedošlo ke konfliktu s podsítí flexibilního serveru Azure Database for 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

Přidání webové aplikace do virtuální sítě

Pomocí příkazu az webapp vnet-integration přidejte do webové aplikace integraci místní virtuální sítě.

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

Konfigurace proměnných prostředí pro připojení databáze

Po nasazení kódu do služby App Service připojte aplikaci k instanci flexibilního serveru Azure Database for PostgreSQL v Azure. Kód aplikace očekává, že najde informace o databázi v mnoha proměnných prostředí. Pokud chcete nastavit proměnné prostředí ve službě App Service, použijte příkaz 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>"
  • Nahraďte postgres-server-name, uživatelské jméno a heslo hodnotami pro nově vytvořenou instanci flexibilního serveru Azure Database for PostgreSQL.

  • Nahraďte <uživatelské jméno> a <heslo> přihlašovacími údaji, které vám příkaz vygeneroval.

  • Název skupiny prostředků a aplikace pochází z hodnot uložených v mezipaměti v souboru .azure/config.

  • Příkaz vytvoří nastavení s názvem DBHOST, DBNAME, DBUSER a DBPASS. Pokud kód aplikace používá pro informace o databázi různé názvy, použijte tyto názvy pro nastavení aplikace, jak je uvedeno v kódu.

Nakonfigurujte webovou aplikaci tak, aby umožňovala všechna odchozí připojení z virtuální sítě.

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

Vyčistěte zdroje

Pomocí následujícího příkazu vyčistíte všechny prostředky, které jste vytvořili v článku. Tento příkaz odstraní všechny prostředky v této skupině prostředků.

az group delete -n demoresourcegroup