Share via


Tutorial: Criar um Banco de Dados do Azure para PostgreSQL - Instância de Servidor Flexível com Aplicativo Web de Serviços de Aplicativo em 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 Banco de Dados do Azure para servidor flexível PostgreSQL dentro de uma rede virtual.

Neste tutorial, ficará a saber como:

  • Criar um Banco de Dados do Azure para instância de servidor flexível PostgreSQL em uma rede virtual
  • Criar uma aplicação 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 a CLI do Azure versão 2.0 ou posterior localmente (ou use o Azure Cloud Shell que tenha a CLI pré-instalada). Para ver a versão instalada, execute o comando az --version.

  • Faça login na sua conta usando 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 adequada na qual o recurso deve ser cobrado. Selecione o ID da subscrição específica na sua conta com o comando az account set.

    az account set --subscription <subscription ID>
    

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

Crie um Banco de Dados do Azure privado para instância de servidor flexível do PostgreSQL dentro de uma rede virtual (VNET) 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 levar alguns minutos:

  • Crie o grupo de recursos se ele ainda não existir.
  • Gera um nome de servidor se ele não for fornecido.
  • 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 nome de usuário e senha de administrador para seu servidor, se não for fornecido.
  • Cria um banco de dados vazio chamado 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 uma Aplicação Web

Nesta seção, você cria um host de aplicativo no aplicativo do Serviço de Aplicativo, conecta esse aplicativo ao banco de dados flexível do servidor flexível do Banco de Dados do Azure para PostgreSQL e implanta seu código nesse host. Certifique-se de que está na raiz do repositório do código da sua aplicação no terminal. Nota O Plano Básico não suporta 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

Nota

  • Para o argumento --location , use o mesmo local que você fez para o banco de dados na seção anterior.
  • Substitua <app-name> por um nome exclusivo em todo o Azure. Os caracteres permitidos para <o nome> do aplicativo 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 levar alguns minutos:

  • Crie 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.)
  • Crie o aplicativo do Serviço de Aplicativo se ele não existir.
  • Habilite o log padrão para o aplicativo, se ainda não estiver habilitado.
  • Carregue o repositório usando a implantação ZIP com a automação de compilação habilitada.

Criar sub-rede para aplicativo Web

Antes de habilitar a integração VNET, você precisa ter uma sub-rede delegada ao Aplicativo Web do Serviço de Aplicativo. Antes de criar a sub-rede, exiba 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 seguinte comando para criar uma nova sub-rede na mesma rede virtual em que a instância de servidor flexível do Banco de Dados do Azure para PostgreSQL foi criada. Atualize o prefixo de endereço para evitar conflitos com o Banco de Dados do Azure para a sub-rede flexível do servidor 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 variáveis de ambiente para conectar o banco de dados

Com o código agora implantado no Serviço de Aplicativo, a próxima etapa é conectar 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 do banco de dados em muitas 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 o nome> de usuário e< a senha> 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 seu 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}'

Clean up resources (Limpar recursos)

Limpe todos os recursos criados no tutorial usando o comando a seguir. Este comando exclui todos os recursos desse grupo de recursos.

az group delete -n demoresourcegroup

Próximos passos