Compartilhar via


Criar um Banco de Dados do Azure para PostgreSQL com um aplicativo Web em uma rede virtual

Este artigo mostra como criar um aplicativo Web do Serviço de Aplicativo do Azure com o servidor flexível do Banco de Dados do Azure para PostgreSQL dentro de uma rede virtual.

Neste artigo, você aprenderá a:

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

Pré-requisitos

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

  • Instale a CLI do Azure 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.

  • Entre na sua conta usando o comando az login. Observe a propriedade id da saída do comando para o nome da assinatura correspondente.

    az login
    
  • Se você tiver várias assinaturas, escolha a assinatura apropriada para cobrar o recurso. Selecione a ID de assinatura específica em sua conta usando o comando az account set .

    az account set --subscription <subscription ID>
    

Criar uma instância de servidor flexível

Crie um Banco de Dados do Azure privado para uma instância de servidor flexível do PostgreSQL dentro de uma rede virtual usando o seguinte comando:

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

Esse comando executa as seguintes ações, o que pode levar alguns minutos:

  • Criará o grupo de recursos se ele ainda não existir.
  • Gerará um nome de servidor se você não fornecer um.
  • Cria uma rede virtual e uma sub-rede para a instância de servidor flexível do Banco de Dados do Azure para PostgreSQL.
  • Criará um nome de usuário e uma senha do administrador para o servidor caso você não os forneça.
  • Cria um banco de dados vazio chamado postgres.

Aqui está o exemplo de saída.

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 seção, você cria um host de aplicativo em um aplicativo do Serviço de Aplicativo, conecta esse aplicativo ao banco de dados de servidor flexível do Banco de Dados do Azure para PostgreSQL e, em seguida, implanta seu código nesse host. Verifique se você está na raiz do repositório do código do aplicativo no terminal. O Plano Básico não dá suporte à integração de rede virtual. Use Standard ou Premium.

Crie um aplicativo do Serviço de Aplicativos (o processo host) usando o comando az webapp up.

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

Observação

  • Para o _--location_ argument, use o mesmo local que você usou para o banco de dados na seção anterior.
  • Substitua <app-name> por um nome exclusivo em todo o Azure. Os caracteres permitidos são <app-name> A-Z, 0-9 e -. Um bom padrão é usar uma combinação do nome da empresa e um identificador de aplicativo.

Esse comando executa as seguintes ações, o que pode levar alguns minutos:

  • Criará o grupo de recursos se ele ainda não existir. (Neste comando, você usa o mesmo grupo de recursos no qual criou o banco de dados anteriormente.)
  • Criando o aplicativo do Serviço de Aplicativo se ele não existir.
  • Habilita o log padrão do aplicativo, caso ainda não esteja ativado.
  • Envia o repositório usando a implantação via ZIP com a automação de compilação habilitada.

Criar sub-rede para aplicativo Web

Antes de habilitar a integração de rede virtual, você precisa de uma sub-rede que seja delegada ao Aplicativo Web do Serviço de Aplicativo. Antes de criar a sub-rede, exiba o endereço de sub-rede do banco de dados para evitar o uso do mesmo prefixo de endereço para a sub-rede do aplicativo Web.

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

Execute o comando a seguir para criar uma nova sub-rede na mesma rede virtual que a instância de servidor flexível do Banco de Dados do Azure para PostgreSQL. Atualize o prefixo de endereço para evitar conflitos com a sub-rede de servidor flexível do Banco de Dados do Azure para 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

Use o comando az webapp vnet-integration para adicionar uma integração de rede virtual regional a um aplicativo Web.

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

Configurar as variáveis de ambiente para conexão com o banco de dados

Depois de implantar o código no Serviço de Aplicativo, conecte o aplicativo à instância de servidor flexível do Banco de Dados do Azure para PostgreSQL no Azure. O código do aplicativo espera encontrar informações sobre o banco de dados em diversas variáveis de ambiente. Para definir variáveis de ambiente no Serviço de Aplicativo, 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-server-name, nome de usuário e senha pelos valores da instância de servidor flexível do Banco de Dados do Azure para PostgreSQL recém-criada.

  • Substitua <username> e <password> pelas credenciais que o comando também gerou para você.

  • O grupo de recursos e o nome do aplicativo vêm dos valores armazenados em cache no arquivo .azure/config.

  • O comando cria configurações chamadas DBHOST, DBNAME, DBUSER e DBPASS. Se o código do aplicativo usar nomes diferentes para as informações do banco de dados, use esses nomes para as configurações do aplicativo, 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}'

Limpar os recursos

Limpe todos os recursos criados no artigo usando o comando a seguir. Esse comando exclui todos os recursos nesse grupo de recursos.

az group delete -n demoresourcegroup