Compartilhar via


Tutorial: Criar uma instância do Banco de Dados do Azure para PostgreSQL – Servidor Flexível com o Aplicativo Web dos Serviços de Aplicativos na rede virtual

APLICA-SE A: Banco de Dados do Azure para PostgreSQL – Servidor Flexível

Este tutorial 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 tutorial, 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 tiver várias assinaturas, escolha a que for adequada para cobrança do recurso. Selecione a ID da assinatura específica em sua conta usando o comando az account set.

    az account set --subscription <subscription ID>
    

Crie uma instância do servidor flexível do Banco de Dados do Azure para PostgreSQL em uma nova rede virtual

Crie uma instância do servidor flexível do Banco de Dados do Azure para PostgreSQL dentro de uma VNET (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, que podem levar alguns minutos:

  • Criar o grupo de recursos se ele ainda não existir.
  • Gera um nome do servidor, caso não tenha sido fornecido.
  • Cria uma rede virtual e uma sub-rede para a instância de servidor flexível do Banco de Dados do Azure para PostgreSQL.
  • Cria o nome de usuário e a senha do administrador para o servidor, caso não fornecidos.
  • 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ê criará o host do aplicativo do Serviço de Aplicativo, conectará esse aplicativo ao banco de dados de servidor flexível do Banco de Dados PostgreSQL do Azure e implante seu código nesse host. Verifique se você está na raiz do repositório do código do aplicativo no terminal. Observe que o Plano Básico não dá suporte à integração VNET. Use Standard ou Premium.

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

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

Observação

  • Para o argumento --location, use a mesma localização usada para o banco de dados na seção anterior.
  • Substitua <app-name> por um nome exclusivo 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 empresa e um identificador de aplicativo.

Esse comando executa as seguintes ações, que podem 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 você criou o banco de dados anteriormente.)
  • Criar o aplicativo do Serviço de Aplicativo se ele não existir.
  • Habilitar o log padrão do aplicativo, se ainda não estiver habilitado.
  • Carregar o repositório usando a implantação ZIP com a automação do build habilitada.

Criar uma sub-rede para o aplicativo Web

Antes de habilitar a integração de VNET, você precisa ter uma sub-rede delegada ao Aplicativo Web do Serviço de Aplicativo. Antes de criar a sub-rede, veja o endereço da 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 sub-rede na mesma rede virtual da instância do servidor flexível do Banco de Dados do Azure para PostgreSQL criado. 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 webapp.

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

Com o código agora implantado no Serviço de Aplicativo, a próxima etapa é conectar o aplicativo à instância do 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,username,password pelo comando de instância de servidor flexível do Banco de Dados do Azure para PostgreSQL recém-criado.
  • Substitua <username> e <password> pelas credenciais que o comando também gerou para você.
  • O grupo de recursos e o nome do aplicativo são extraídos 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 estiver usando um nome diferente 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 que você criou no tutorial usando o comando a seguir. Esse comando exclui todos os recursos nesse grupo de recursos.

az group delete -n demoresourcegroup

Próximas etapas