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
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
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, executeaz upgrade
(requer a versão 2.30.0+).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, comomsdocs-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
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
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
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 camadaStandard_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 recursosServiceConnector-tutorial-rg
na regiãoeastus
.
- Por padrão, o comando usa um nome gerado como
- 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
.
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
No terminal, verifique se você está na pasta do repositório djangoapp que contém o código do aplicativo.
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
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 grupoPython-Django-PGFlex-rg
na regiãoeastus
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.
- Crie um plano do Serviço de Aplicativo no tipo de preço Básico (B1). Você pode omitir
Após a implantação bem-sucedida, o comando gera uma saída JSON como o seguinte exemplo:
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.
Execute
az webapp ssh
para abrir uma sessão SSH para o aplicativo Web no navegador:az webapp ssh
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.
O comando
createsuperuser
solicita suas credenciais de superusuário. Para este tutorial, use o nome de usuário padrãoroot
, pressione Enter para o endereço de email ser deixado em branco e digitePollsdb1
para a senha.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
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.
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
ePollsdb1
). Em Enquetes, selecione Adicionar ao lado de Perguntas e crie uma enquete com algumas opções.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
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de