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
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
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, executeaz upgrade
(requer a versão 2.30.0+).Entre no Azure usando a CLI com
az login
o . 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, comomsdocs-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
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
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
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ãoStandard_D2s_v3
. - O comando usa o grupo de recursos e o local armazenados em cache do comando anterior
az group create
, que neste exemplo é oeastus
grupoServiceConnector-tutorial-rg
de recursos na região.
- Por padrão, o comando usa um nome gerado como
- 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.
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
No terminal, verifique se você está na pasta do repositório djangoapp que contém o código do aplicativo.
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
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 grupoPython-Django-PGFlex-rg
naeastus
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.
- Crie um plano do Serviço de Aplicativo na camada de preço Básico (B1). Você pode omitir
Após a implantação bem-sucedida, o comando gera saída JSON como o exemplo a seguir:
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_USER
e 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.
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 algum erro relacionado à conexão com o banco de dados, verifique os valores das configurações do aplicativo criadas na seção anterior.
O
createsuperuser
comando solicita credenciais de superusuário. Para os fins deste tutorial, use o nomeroot
de usuário padrão , pressione Enter para o endereço de e-mail para deixá-lo em branco e digitePollsdb1
para a senha.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
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.
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
ePollsdb1
). Em Sondagens, selecione Adicionar junto a Perguntas e crie uma pergunta de sondagem com algumas opções.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.