Compartilhar via


Tutorial: Usar o Conector de Serviço para criar um aplicativo Django com Postgres no Serviço de Aplicativo do Azure

Observação

Neste tutorial, você usará o Conector de Serviço que simplifica o processo de conexão de um aplicativo Web a um serviço de banco de dados. Este tutorial é uma modificação do tutorial do Serviço de Aplicativo, portanto, você pode ver algumas semelhanças. Confira a seção Configurar variáveis de ambiente para conectar o banco de dados para ver onde o Conector de Serviço entra em cena e simplifica o processo de conexão descrito no tutorial do Serviço de Aplicativo.

Este tutorial mostra como implantar um aplicativo Web Python Django controlado por dados no Serviço de Aplicativo do Azure e conectá-lo a um Servidor Flexível de Banco de Dados do Azure para PostgreSQL.

Neste tutorial, você usa a CLI do Azure para concluir as seguintes tarefas:

  • Configurar o ambiente inicial com Python e a CLI do Azure
  • Criar um Servidor Flexível de Banco de Dados do Azure para PostgreSQL
  • Implantar um código no Serviço de Aplicativo do Azure e conectar-se ao Servidor Flexível do PostgreSQL
  • Atualizar seu código e reimplantar
  • Exibir logs de diagnóstico
  • Gerenciar o aplicativo Web no portal do Azure

Configurar o seu ambiente inicial

  1. Instale o Python 3.8 ou superior. Para verificar se a versão do Python é 3.8 ou superior, execute o seguinte código em uma janela de terminal:

    python3 --version
    
  2. Instale a CLI do Azure 2.30.0 ou superior. Para verificar se a versão da CLI do Azure é 2.30.0 ou superior, execute o comando az --version. Se você precisar atualizar, execute az upgrade (requer a versão 2.30.0+).

  3. Faça login no Azure usando a CLI com az login. Esse comando abre um navegador para coletar suas credenciais. Quando o comando for concluído, ele mostrará a saída JSON que contém informações sobre as suas assinaturas. Depois de conectado, você poderá executar os comandos do Azure com a CLI do Azure para trabalhar com recursos na sua assinatura.

Clonar ou baixar o aplicativo de exemplo

Clone o repositório de exemplo:

git clone https://github.com/Azure-Samples/serviceconnector-webapp-postgresql-django.git

Navegue até a seguinte pasta:

cd serviceconnector-webapp-postgresql-django

Use a ramificação de servidor flexível da amostra, que contém algumas alterações necessárias, como o URL do servidor de banco de dados é definida e a adição de 'OPTIONS': {'sslmode': 'require'} à configuração do banco de dados do Django, conforme exigido pelo servidor flexível do PostgreSQL para Azure.

git checkout flexible-server

O exemplo djangoapp contém o aplicativo de enquetes do Django controlado por dados que você obtém seguindo Escrever seu primeiro aplicativo Django na documentação do Django. O aplicativo concluído é fornecido aqui para fins de conveniência.

O exemplo também é modificado para ser executado em um ambiente de produção, como o Serviço de Aplicativo:

  • As configurações de produção estão no arquivo azuresite/production.py. Encontre as configurações de desenvolvimento em azuresite/settings.py.
  • O aplicativo usa as configurações de produção quando a variável de ambiente WEBSITE_HOSTNAME é definida. O Serviço de Aplicativo do Azure define automaticamente essa variável como a URL do aplicativo Web, como msdocs-django.azurewebsites.net.

Essas configurações de produção são específicas para configurar o Django para execução em qualquer ambiente de produção e não são específicas do Serviço de Aplicativo. Para saber mais, confira a Lista de verificação de implantação do Django. Confira também Configurações de produção para o Django no Azure para obter detalhes sobre algumas das alterações.

Está com problemas? Fale conosco.

Criar um banco de dados Postgres no Azure

  1. Habilite o cache de parâmetros com a CLI do Azure para que não seja necessário fornecer esses parâmetros a cada comando. (Os valores armazenados em cache são salvos na pasta .azure.)

    az config param-persist on 
    
  2. Crie um grupo de recursos (você pode alterar o nome, se desejado). O nome do grupo de recursos é armazenado em cache e aplicado automaticamente aos comandos subsequentes.

    az group create --name ServiceConnector-tutorial-rg --location eastus
    
  3. Crie o servidor de banco de dados (o processo leva alguns minutos):

    az postgres flexible-server create --sku-name Standard_B1ms --public-access all
    

    Se o comando az não for reconhecido, verifique se você tem a CLI do Azure instalada, conforme descrito em Configurar seu ambiente inicial.

    O comando az postgres flexible-server create executa as seguintes ações, que levam alguns minutos:

    • Crie um grupo de recursos padrão, caso ainda não haja um nome armazenado em cache.
    • Crie um Servidor Flexível do PostgreSQL:
      • Por padrão, o comando usa um nome gerado como server383813186. Você pode especificar seu próprio nome com o parâmetro --name. O nome precisa ser exclusivo em todo o Azure.
      • O comando usa o tipo de preço Standard_B1ms de menor custo. Omita o argumento --sku-name para usar a camada Standard_D2s_v3 padrão.
      • O comando usa o grupo de recursos e o local armazenado em cache do comando az group create anterior, que neste exemplo é o grupo de recursos ServiceConnector-tutorial-rg na região eastus.
    • Crie uma conta de administrador com um nome de usuário e uma senha. Você pode especificar esses valores diretamente com os parâmetros --admin-user e --admin-password.
    • Crie um banco de dados denominado flexibleserverdb por padrão. Você pode especificar um nome de banco de dados com o parâmetro --database-name.
    • Habilite o acesso público completo, que você pode controlar usando o parâmetro --public-access.
  4. Quando o comando for concluído, copie a saída JSON do comando para um arquivo, pois você precisará dos valores da saída posteriormente neste tutorial, especificamente o host, o nome de usuário e a senha, juntamente com o nome do banco de dados.

Está enfrentando problemas? Fale conosco.

Implantar o código no Serviço de Aplicativo do Azure

Nesta seção, você criará o host do aplicativo do Serviço de Aplicativo, conectará esse aplicativo ao banco de dados Postgres e implantará o código nesse host.

Criar o aplicativo do Serviço de Aplicativo

  1. No terminal, verifique se você está na pasta do repositório djangoapp que contém o código do aplicativo.

  2. Mude para o branch flexible-server do aplicativo de exemplo. Esse branch contém a configuração específica necessária para o Servidor Flexível do PostgreSQL:

    git checkout flexible-server
    
  3. Execute o seguinte comando az webapp up para criar o host do Serviço de Aplicativo para o aplicativo:

    az webapp up --name <app-name> --sku B1 
    

    Esse comando executa as seguintes ações, que podem levar alguns minutos, usando o grupo de recursos e o local armazenado em cache do comando az group create anterior (o grupo Python-Django-PGFlex-rg na região eastus neste exemplo).

    • Crie um plano do Serviço de Aplicativo no tipo de preço Básico (B1). Você pode omitir --sku o uso de valores padrão.
    • Crie o aplicativo do Serviço de Aplicativo.
    • Habilite o registro em log padrão para o aplicativo.
    • Carregar o repositório usando a implantação ZIP com a automação do build habilitada.

Após a implantação bem-sucedida, o comando gera uma saída JSON como o seguinte exemplo:

Captura de tela do terminal, mostrando um exemplo de saída para o comando az webapp up.

Está enfrentando problemas? Veja primeiro o Guia de solução de problemas. Caso contrário, fale conosco.

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

Com o código implantado no Serviço de Aplicativo, a próxima etapa é conectar o aplicativo ao banco de dados Postgres no Azure.

O código do aplicativo espera encontrar informações sobre o banco de dados em quatro variáveis de ambiente chamadas AZURE_POSTGRESQL_HOST, AZURE_POSTGRESQL_NAME, AZURE_POSTGRESQL_USER e AZURE_POSTGRESQL_PASS.

Para definir variáveis de ambiente no Serviço de Aplicativo, crie "configurações do aplicativo" com o seguinte comando az connection create.

az webapp connection create postgres-flexible --client-type django

O grupo de recursos, o nome do aplicativo e o nome do banco de dados são extraídos dos valores armazenados em cache. Você precisa fornecer a senha de administrador do banco de dados postgres durante a execução desse comando.

  • O comando cria configurações chamadas de "AZURE_POSTGRESQL_HOST", "AZURE_POSTGRESQL_NAME", "AZURE_POSTGRESQL_USER" e "AZURE_POSTGRESQL_PASS" conforme esperado pelo código do aplicativo.
  • Se você esqueceu as credenciais de administrador, o comando orientará você a redefini-lo.

Observação

Caso veja a mensagem de erro “A assinatura não está registrada para usar o Microsoft.ServiceLinker”, execute az provider register -n Microsoft.ServiceLinker para registrar o provedor de recursos do Conector de Serviço e execute o comando de conexão novamente.

Em seu código Python, você acessa essas configurações como variáveis de ambiente com instruções como os.environ.get('AZURE_POSTGRESQL_HOST'). Para saber mais, confira Acessar variáveis do ambiente.

Está com problemas? Veja primeiro o Guia de solução de problemas. Caso contrário, fale conosco.

Executar migrações de banco de dados do Django

As migrações de banco de dados do Django garantem que o esquema do PostgreSQL no banco de dados do Azure corresponda ao seu código.

  1. Execute az webapp ssh para abrir uma sessão SSH para o aplicativo Web no navegador:

    az webapp ssh
    
  2. Na sessão SSH, execute os seguintes comandos:

    # Run database migrations
    python manage.py migrate
    
    # Create the super user (follow prompts)
    python manage.py createsuperuser
    

    Se você encontrar erros relacionados à conexão com o banco de dados, verifique os valores das configurações do aplicativo criadas na seção anterior.

  3. O comando createsuperuser solicita suas credenciais de superusuário. Para este tutorial, use o nome de usuário padrão root, pressione Enter para o endereço de email ser deixado em branco e digite Pollsdb1 para a senha.

  4. Se for exibido um erro informando que o banco de dados está bloqueado, verifique se você executou o comando az webapp settings na seção anterior. Sem essas configurações, o comando migrate não pode se comunicar com o banco de dados, resultando no erro.

Está enfrentando problemas? Veja primeiro o Guia de solução de problemas. Caso contrário, fale conosco.

Criar uma pergunta de enquete no aplicativo

  1. Abra o site do aplicativo. O aplicativo deve exibir a mensagem "Aplicativo de enquetes" e "Não há enquetes disponíveis" porque ainda não há enquetes específicas no banco de dados.

    az webapp browse
    

    Caso você veja "Erro de Aplicativo", é provável que não tenha criado as configurações necessárias na etapa anterior, "Configurar as variáveis de ambiente para conexão com o banco de dados", ou que esses valores contenham erros. Execute o comando az webapp config appsettings list para verificar as configurações.

    Após atualizar as configurações para corrigir os erros, aguarde um minuto para que o aplicativo seja reiniciado e atualize o navegador.

  2. Navegue até a página de administração do aplicativo Web, acrescentando /admin à URL, por exemplo, http://<app-name>.azurewebsites.net/admin. Entre usando as credenciais de superusuário do Django da seção anterior (root e Pollsdb1). Em Enquetes, selecione Adicionar ao lado de Perguntas e crie uma enquete com algumas opções.

  3. Volte ao site principal (http://<app-name>.azurewebsites.net) para confirmar se agora as perguntas são exibidas para o usuário. Responda às perguntas como desejar para gerar dados no banco de dados.

Parabéns! Você está executando um aplicativo Web Django, escrito em Python, no Serviço de Aplicativo do Azure para Linux, com um banco de dados Postgres ativo.

Observação

O Serviço de Aplicativo detecta um projeto Django procurando um arquivo wsgi.py em cada subpasta, que o manage.py startproject cria por padrão. Quando o Serviço de Aplicativo encontra o arquivo, ele carrega o aplicativo Web Django. Para obter mais informações, confira Configurar imagem interna do Python.

Limpar os recursos

Se quiser manter o aplicativo ou prosseguir para mais tutoriais, vá para Próximas etapas. Caso contrário, para evitar incorrer em cobranças contínuas, exclua o grupo de recursos criado para este tutorial:

az group delete --name ServiceConnector-tutorial-rg --no-wait

Ao excluir o grupo de recursos, você também desaloca e exclui todos os recursos contidos nele. Antes de usar o comando, verifique se os recursos contidos no grupo não serão mais necessários.

A exclusão de todos os recursos pode levar algum tempo. O argumento --no-wait permite que o comando seja retornado imediatamente.

Está com problemas? Fale conosco.

Próxima etapa