Share via


Tutorial: Usando o Service Connector para criar um aplicativo Django com o Postgres no Serviço de Aplicativo do Azure

Nota

Neste tutorial, você usa o Service Connector 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. Consulte a seção Configurar variáveis de ambiente para conectar o banco de dados para ver onde o Service Connector entra em ação e simplifica o processo de conexão fornecido no tutorial do Serviço de Aplicativo.

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

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

  • Configure seu ambiente inicial com Python e a CLI do Azure
  • Criar um Banco de Dados do Azure para banco de dados de servidor flexível PostgreSQL
  • Implantar código no Serviço de Aplicativo do Azure e conectar-se ao servidor flexível PostgreSQL
  • Atualize seu código e reimplante
  • Ver registos de diagnóstico
  • Gerenciar o aplicativo Web no portal do Azure

Configurar seu ambiente inicial

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

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

  3. Entre no Azure usando a CLI com az logino . Este comando abre um navegador para reunir suas credenciais. Quando o comando terminar, ele mostra a saída JSON contendo informações sobre suas assinaturas. Depois de entrar, você pode executar comandos do Azure com a CLI do Azure para trabalhar com recursos em sua assinatura.

Clone ou baixe 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 do exemplo, que contém algumas alterações necessárias, como como a URL do servidor de banco de dados é definida e adicionada 'OPTIONS': {'sslmode': 'require'} à configuração do banco de dados Django, conforme exigido pelo servidor Flexível PostgreSQL do Azure.

git checkout flexible-server

O exemplo djangoapp contém o aplicativo de pesquisas Django orientado por dados que você obtém seguindo Escrevendo seu primeiro aplicativo Django na documentação do Django. O aplicativo completo é fornecido aqui para sua 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 . As configurações de desenvolvimento estão em azuresite/settings.py.
  • O aplicativo usa configurações de produção quando a variável de WEBSITE_HOSTNAME ambiente é definida. O Serviço de Aplicativo do Azure define automaticamente essa variável para a URL do aplicativo Web, como msdocs-django.azurewebsites.net.

As configurações de produção são específicas para configurar o Django para ser executado em qualquer ambiente de produção e não são específicas do Serviço de Aplicativo. Para obter mais informações, consulte a lista de verificação de implantação do Django. Consulte também Configurações de produção do Django no Azure para obter detalhes sobre algumas das alterações.

Tem problemas? Deixe-nos saber.

Criar banco de dados Postgres no Azure

  1. Habilite o cache de parâmetros com a CLI do Azure para que você não precise fornecer esses parâmetros com todos os comandos. (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 desejar). 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 az comando não for reconhecido, certifique-se de ter 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 se ainda não houver um nome armazenado em cache.
    • Crie um servidor flexível PostgreSQL:
      • Por padrão, o comando usa um nome gerado como server383813186. Você pode especificar seu próprio nome com o --name parâmetro. O nome tem de ser exclusivo em todo o Azure.
      • O comando usa o nível de preço de menor custo Standard_B1ms . Omita o --sku-name argumento para usar a camada padrão Standard_D2s_v3 .
      • O comando usa o grupo de recursos e o local armazenados em cache do comando anterioraz group create, que neste exemplo é o eastus grupo ServiceConnector-tutorial-rg de recursos na região.
    • Crie uma conta de administrador com um nome de utilizador e palavra-passe. Você pode especificar esses valores diretamente com os --admin-user parâmetros e --admin-password .
    • Crie um banco de dados nomeado flexibleserverdb por padrão. Você pode especificar um nome de banco de dados com o --database-name parâmetro.
    • Permite o acesso público completo, que você pode controlar usando o --public-access parâmetro.
  4. Quando o comando for concluído, copie a saída JSON do comando para um arquivo , pois você precisa de valores da saída mais adiante neste tutorial, especificamente o host, o nome de usuário e a senha, juntamente com o nome do banco de dados.

Tem problemas? Deixe-nos saber.

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

Nesta seção, você cria um host de aplicativo no aplicativo do Serviço de Aplicativo, conecta esse aplicativo ao banco de dados Postgres e implanta seu 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. Alterne para a ramificação do flexible-server aplicativo de exemplo. Esta ramificação contém a configuração específica necessária para o servidor PostgreSQL flexível:

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

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

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

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

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

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

Tem problemas? Consulte primeiro o Guia de solução de problemas, caso contrário, informe-nos.

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 ao banco de dados Postgres no Azure.

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

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

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

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

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

Nota

Se vir a mensagem de erro "A subscrição não está registada para utilizar Microsoft.ServiceLinker", execute az provider register -n Microsoft.ServiceLinker para registar o fornecedor de recursos do Service Connector e execute novamente o comando de ligação.

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 obter mais informações, consulte Variáveis de ambiente do Access.

Tem problemas? Consulte primeiro o Guia de solução de problemas, caso contrário, informe-nos.

Executar migrações de banco de dados Django

As migrações de banco de dados Django garantem que o esquema no banco de dados PostgreSQL no 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 algum erro relacionado à conexão com o banco de dados, verifique os valores das configurações do aplicativo criadas na seção anterior.

  3. O createsuperuser comando solicita credenciais de superusuário. Para os fins deste tutorial, use o nome rootde usuário padrão , pressione Enter para o endereço de e-mail para deixá-lo em branco e digite Pollsdb1 para a senha.

  4. Se vir um erro a indicar que a base de dados está bloqueada, certifique-se de que executou o az webapp settings comando na secção anterior. Sem essas configurações, o comando migrate não pode se comunicar com o banco de dados, resultando no erro.

Tem problemas? Consulte primeiro o Guia de solução de problemas, caso contrário, informe-nos.

Criar uma pergunta de enquete no aplicativo

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

    az webapp browse
    

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

    Depois de atualizar as configurações para corrigir quaisquer erros, dê ao aplicativo um minuto para reiniciar e, em seguida, atualize o navegador.

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

  3. Volte ao site principal (http://<app-name>.azurewebsites.net) para confirmar que as perguntas agora são apresentadas ao usuário. Responda a perguntas como quiser para gerar alguns dados na base de dados.

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

Nota

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

Clean up resources (Limpar recursos)

Se quiser manter a aplicação ou continuar com mais tutoriais, avance para os próximos passos. 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. Certifique-se de que você não precisa mais dos recursos no grupo antes de usar o comando.

Excluir todos os recursos pode levar algum tempo. O --no-wait argumento permite que o comando retorne imediatamente.

Tem problemas? Deixe-nos saber.

Próximo passo