Partilhar via


Crie uma base de dados Azure para PostgreSQL com uma aplicação web numa rede virtual

Este artigo mostra-lhe como criar uma aplicação Web Azure App Service com o Azure Database para um servidor flexível PostgreSQL dentro de uma rede virtual.

Neste artigo, você aprenderá a:

  • Criar um Banco de Dados do Azure para instância de servidor flexível PostgreSQL em uma rede virtual
  • Criar um aplicativo Web
  • Adicionar o aplicativo Web à rede virtual
  • Conectar-se ao Banco de Dados do Azure para servidor flexível PostgreSQL a partir do aplicativo Web

Pré-requisitos

  • Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.

  • Instale o Azure CLI versão 2.0 ou posterior localmente (ou use o Azure Cloud Shell, que tem a CLI pré-instalada). Para ver a versão instalada, execute o comando az --version.

  • Inicie sessão na sua conta utilizando o comando az login . Anote a propriedade id da saída de comando para o nome de subscrição correspondente.

    az login
    
  • Se tiver várias subscrições, escolha a subscrição apropriada para faturar o recurso. Selecione o ID de subscrição específico na sua conta usando o comando az account set.

    az account set --subscription <subscription ID>
    

Criar uma instância de servidor flexível

Crie uma base de dados Azure privada para uma instância de servidor flexível PostgreSQL dentro de uma rede virtual usando o seguinte comando:

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

Este comando executa as seguintes ações, que podem demorar alguns minutos:

  • Cria o grupo de recursos se este ainda não existir.
  • Gera um nome de servidor se não forneceres um.
  • Cria uma rede virtual e uma sub-rede para a instância flexível do servidor do Banco de Dados do Azure para PostgreSQL.
  • Cria o nome de utilizador e a palavra-passe de administrador para o teu servidor se não os forneceres.
  • Cria uma base de dados vazia chamada postgres.

Aqui está a saída de exemplo.

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

Criar um aplicativo Web

Nesta secção, cria um alojamento de aplicação numa aplicação de serviços de aplicações, liga esta aplicação à base de dados de servidores flexíveis Azure Database for PostgreSQL e depois implementa o seu código nesse alojamento. Certifique-se de que está na raiz do repositório do código da sua aplicação no terminal. O Plano Básico não suporta integração de rede virtual. Use Standard ou Premium.

Crie uma aplicação de Serviço de Aplicação (o processo anfitrião) usando o az webapp up comando.

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

Observação

  • Para o _--location_ argument, use a mesma localização que usou para a base de dados na secção anterior.
  • Substitua <app-name> por um nome único em todo o Azure. Os caracteres permitidos para <app-name> são A-Z, 0-9 e -. Um bom padrão é usar uma combinação do nome da sua empresa e um identificador de aplicativo.

Este comando executa as seguintes ações, que podem demorar alguns minutos:

  • Cria o grupo de recursos se este ainda não existir. (Neste comando, utiliza-se o mesmo grupo de recursos em que criou a base de dados anteriormente.)
  • Cria a aplicação do App Service se esta não existir.
  • Ativa o registo por defeito da aplicação, se ainda não estiver ativado.
  • Carrega o repositório usando a implementação em ZIP com a automação de compilações ativada.

Criar sub-rede para aplicação web

Antes de ativar a integração com a rede virtual, precisa de uma sub-rede delegada à App Service Web App. Antes de criar a sub-rede, visualize o endereço da sub-rede da base de dados para evitar usar o mesmo prefixo de endereço para a sub-rede da aplicação web.

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

Execute o seguinte comando para criar uma nova sub-rede na mesma rede virtual da instância de servidor flexível Azure Database for PostgreSQL. Atualize o prefixo de endereço para evitar conflitos com a sub-rede de servidores flexíveis 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

Adicionar o aplicativo Web à rede virtual

Utilize o comando az webapp vnet-integration para adicionar uma integração regional de rede virtual a uma aplicação web.

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

Configurar variáveis de ambiente para conectar o banco de dados

Depois de implementar o código no App Service, ligue a aplicação à Azure Database para a instância de servidor flexível PostgreSQL no Azure. O código do aplicativo espera encontrar informações do banco de dados em muitas variáveis de ambiente. Para definir variáveis de ambiente no App Service, use o 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>"
  • Substitua postgres-nome-servidor, nome de utilizador e palavra-passe pelos valores da recém-criada instância de servidor flexível Azure Database for PostgreSQL.

  • Substitua o nome<>

  • O grupo de recursos e o nome da aplicação vêm dos valores em cache no ficheiro .azure/config.

  • O comando cria definições chamadas DBHOST,DBNAME, DBUSER e DBPASS. Se o código da sua aplicação usar nomes diferentes para a informação da base de dados, use esses nomes para as definições da aplicação conforme mencionado no código.

Configure o aplicativo Web para permitir todas as conexões de saída de dentro da rede virtual.

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

Limpeza de recursos

Limpe todos os recursos que criou no artigo usando o seguinte comando. Este comando exclui todos os recursos desse grupo de recursos.

az group delete -n demoresourcegroup