Implementar uma aplicação web Python (Django ou Flask) com PostgreSQL em Azure

Neste tutorial, você irá implementar uma aplicação web Python orientada por dados (Django ou Flask) com o serviço de base de dados relacional Base de Dados do Azure para PostgreSQL. A aplicação Python está hospedada numa Serviço de Aplicações do Azure totalmente gerida que suporta Python 3.7 ou superior num ambiente de servidor Linux. Pode começar com um nível básico de preços que pode ser aumentado em qualquer momento posterior.

Um diagrama de arquitetura mostrando um Serviço de Aplicações com uma base de dados PostgreSQL em Azure.

Para completar este tutorial, você precisará:

1 - Pedido de amostra

As aplicações de Sample Python usando a estrutura flask e Django são fornecidas para ajudá-lo a acompanhar este tutorial. Faça o download ou clone de uma das aplicações da amostra para o seu posto de trabalho local.

git clone https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app

Para executar a aplicação localmente, navegue na pasta de aplicação:

cd msdocs-flask-postgresql-sample-app

Criar um ambiente virtual para a aplicação:

py -m venv .venv
.venv/scripts/activate

Instalar as dependências:

pip install -r requirements.txt

Nota

Se estiver a acompanhar este tutorial com a sua própria app, consulte a descrição do ficheirorequirements.txt no ficheiro README.md de cada projeto (Flask, Django) para ver que pacotes vai precisar.

Esta aplicação de amostra requer um ficheiro .env que descreva como ligar-se à sua instância local de PostgreSQL. Crie um ficheiro .env como mostrado abaixo utilizando o ficheiro .env.sample como guia. Desagreie o valor de DBNAME uma base de dados existente no seu caso PostgreSQL local. Este tutorial assume que o nome da base de dados é restaurante. Desagreça os valores de DBHOST, DBUSERe DBPASS conforme apropriado para a sua instância postgreSQL local.

DBNAME=<database name>
DBHOST=<database-hostname>
DBUSER=<db-user-name>
DBPASS=<db-password>

Para o Django, pode utilizar a SQLite localmente em vez de PostgreSQL seguindo as instruções nos comentários do ficheiro settings.py .

Criar as restaurant tabelas e review as tabelas de base de dados:

flask db init
flask db migrate -m "initial migration"

Execute a aplicação:

flask run

Num navegador web, vá à aplicação http://127.0.0.1:5000 da amostra e adicione alguns restaurantes e avaliações de restaurantes para ver como funciona a aplicação.

Uma imagem da aplicação web Flask com PostgreSQL executando localmente mostrando restaurantes e avaliações de restaurantes.

Dica

Com o Django, pode criar utilizadores com o python manage.py createsuperuser comando como faria com uma aplicação típica do Django. Para mais informações, consulte a documentação para django django-administrador e manage.py. Utilize a conta superuser para aceder à /admin parte do site. Para o Flask, utilize uma extensão como o administrador flask para fornecer a mesma funcionalidade.

Tem problemas? Deixe-nos saber.

2 - Criar uma aplicação web em Azure

Para hospedar a sua aplicação no Azure, precisa de criar Serviço de Aplicações do Azure aplicação web.

Inscreva-se no portal do Azure e siga estes passos para criar o seu recurso Serviço de Aplicações do Azure.

Instruções Captura de ecrã
No portal do Azure:
  1. Insira os serviços de aplicações na barra de pesquisa no topo da portal do Azure.

  2. Selecione o item marcado Serviços de Aplicação sob a rubrica Serviços abaixo no menu que aparece abaixo da barra de pesquisa.

Uma imagem mostrando como usar a caixa de pesquisa na barra de ferramentas superior para encontrar os Serviços de Aplicação em portal do Azure.
Na página Serviços de Aplicações , selecione + Criar. Uma imagem que mostra a localização do botão Criar na página serviços de aplicações na portal do Azure.
Na página 'Criar Aplicação Web ', preencha o formulário da seguinte forma:
  1. Resource Group → Select Create new and use a name of msdocs-python-postgres-webapp-rg.

  2. Nome → Use msdocs-python-postgres-webapp-unique-id<>. O nome deve ser único em todo o Azure com o URL https://<app-service-name>.azurewebsites.comda aplicação web).

  3. Pilha de tempo de execuçãoPython 3.9

  4. Região → região de Azure perto de si.

  5. Serviço de Aplicações Plan → Select Create new in Linux Plan e use o nome do plano msdocs-python-postgres-webapp.

  6. Serviço de Aplicações Plano → Selecione o tamanho de Mudança em Sku e tamanho para selecionar um plano de Serviço de Aplicações diferente.

Uma imagem mostrando como preencher o formulário para criar uma nova Serviço de Aplicações no portal do Azure.
Na secção Spec Picker, selecione um plano Serviço de Aplicações. O plano Serviço de Aplicações controla quantos recursos (CPU/memória) estão disponíveis para a sua app e o custo desses recursos.
  1. Selecione Dev/Teste.

  2. Selecione Plano B1 (Básico).

    O plano B1 Basic incorrerá numa pequena carga contra a sua conta Azure, mas é recomendado para um melhor desempenho em relação ao plano F1 (Grátis).

  3. Selecione Aplicar.

Uma imagem mostrando como selecionar o plano básico de Serviço de Aplicações no portal do Azure.
De volta à página 'Criar Aplicação Web ', selecione o botão Review + create na parte inferior do ecrã.

Isto irá levá-lo a uma página para rever a configuração. Selecione Criar para criar o seu Serviço de Aplicações.
Uma imagem que mostra a localização do botão Review plus Create no portal do Azure.

Tem problemas? Consulte primeiro o guia de resolução de problemas, caso contrário, avise-nos.

3 - Criar a base de dados PostgreSQL em Azure

Pode criar uma base de dados PostgreSQL em Azure utilizando o portal do Azure, Código do Estúdio Visual ou o CLI Azure.

Inscreva-se no portal do Azure e siga estes passos para criar o seu recurso Base de Dados do Azure para PostgreSQL.

Instruções Captura de ecrã
No portal do Azure:
  1. Introduza postgres na barra de pesquisa no topo da portal do Azure.

  2. Selecione o item rotulado Base de Dados do Azure para PostgreSQL servidores flexíveis sob a rubrica Serviços abaixo no menu que aparece abaixo da barra de pesquisa.

Uma imagem mostrando como usar a caixa de pesquisa na barra de ferramentas superior para encontrar os Serviços postgres no portal do Azure.
Na página Base de Dados do Azure para PostgreSQL de servidores flexíveis, selecione + Criar Uma imagem que mostra a localização do botão Criar na página Base de Dados do Azure para PostgreSQL servidores na portal do Azure.
Na página seguinte, selecione Criar no servidor Flexível. Uma imagem que mostra a localização do botão 'Criar Servidor Flexível' na página de opção de implementação Base de Dados do Azure para PostgreSQL na portal do Azure.
Na página do servidor Flexível , preencha o formulário da seguinte forma:
  1. Grupo de recursos → Selecione e use um nome de msdocs-python-postgres-webapp-rg.

  2. Nome do servidor → Insira um nome como msdocs-python-postgres-webapp-db-id<> único. O nome deve ser único em todo o Azure com o URL do servidor de base de dados https://<server-name>.postgres.database.azure.com). Os caracteres permitidos são A-Z,-09 e .-

  3. Região → região do Mesmo Azure utilizada para a Web App.

  4. Fonte de dadosNenhum

  5. Tipo de carga de trabalhoProdução

  6. → de armazenamento Compute + Selecione Configure servidor para selecionar um plano de armazenamento Compute + diferente, que é discutido abaixo.

  7. Zona de disponibilidade → Mantenha o padrão (que não é preferência).

  8. Versão → Mantenha o padrão (que é a versão mais recente).

Uma imagem mostrando como preencher o formulário para criar uma nova Base de Dados do Azure para PostgreSQL no portal do Azure.
Na página de armazenamento Compute + continue a configurar o servidor flexível:
  1. Nível de cálculoSelecione Burstable.

  2. Tamanho do cálculo → Selecione Standard_B1ms.

  3. Selecione Guardar para voltar à página de configuração principal.

Uma imagem que mostra como selecionar e configurar o plano básico de serviço de base de dados no portal do Azure.
De volta à página principal do servidor Flexível , termine a configuração básica:
  1. Conta de administrador → Introduza um nome de utilizador e palavra-passe Administração para ser utilizado para a conta do administrador da base de dados.

  2. Selecione Seguinte: Rede na parte inferior do ecrã.

Criar informações de conta de administrador para o servidor PostgreSQL Flexible no portal do Azure.
Na página 'Networking ', adicione uma regra de firewall que permite ao seu ambiente local aceder ao servidor de base de dados:
  1. Selecione Adicionar o endereço IP do cliente atual para permitir o acesso a partir do ambiente local.

  2. Selecione Review + Criar na parte inferior do ecrã.

    Isto irá levá-lo à página de Revisão . Selecione Criar para criar o seu serviço de servidor flexível Base de Dados do Azure para PostgreSQL.

Uma imagem mostrando a adição de IP atual como regra de firewall para o servidor Flexível PostgreSQL no portal do Azure.

No seu ambiente local utilizando o terminal interativo PostgreSQL psql, ligue-se ao servidor de base de dados PostgreSQL e crie a restaurant base de dados:

psql --host=<server-name>.postgres.database.azure.com \
     --port=5432 \
     --username=<admin-user> \
     --dbname=postgres

postgres=> CREATE DATABASE restaurant;

Os valores de <server-name> e <admin-user> são os valores de um passo anterior. Se tiver problemas em ligar, reinicie a base de dados e tente novamente.

Opcionalmente, verifique se a restaurant base de dados foi criada com sucesso, correndo \c restaurant para alterar a solicitação de postgres (predefinição) para o restaurant. Escreva \? para mostrar ajuda ou \q desistir.

Tem problemas? Deixe-nos saber.

4 - Permitir que a web app aceda à base de dados

Após a criação do servidor Base de Dados do Azure para PostgreSQL, configurar o acesso ao servidor a partir da aplicação web adicionando uma regra de firewall. Isto pode ser feito através do portal do Azure ou do Azure CLI.

Se estiver a trabalhar no Código VS, clique no servidor de base de dados e selecione Abrir no Portal para ir ao portal do Azure. Ou, vá ao Azure Cloud Shell e comande os comandos do Azure CLI.

Instruções Captura de ecrã
Adicione uma regra para permitir que a sua aplicação web aceda ao servidor PostgreSQL Flexible.
  1. Na página de recursos esquerdo para o servidor, selecione Networking.

  2. Selecione a caixa de verificação ao lado de Permitir o acesso público de qualquer serviço Azure dentro do Azure para este servidor.

  3. Selecione Guardar para guardar a alteração.

Para garantir ainda mais a comunicação entre aplicações web de produção e servidores de bases de dados, deverá utilizar um Rede Virtual Azure.
Uma imagem que mostra como adicionar acesso de outros serviços Azure a uma base de dados PostgreSQL no portal do Azure.

Tem problemas? Consulte primeiro o guia de resolução de problemas, caso contrário, avise-nos.

5 - Ligue a aplicação web à base de dados

Com a aplicação web e a base de dados PostgreSQL criadas, o próximo passo é ligar a aplicação web à base de dados PostgreSQL em Azure.

O código de aplicações web utiliza informações de base de dados em quatro variáveis ambientais denominada DBHOST, DBNAMEDBUSERe DBPASS para ligar ao servidor PostgresSQL.

Instruções Captura de ecrã
No portal, aceda à página Serviço de Aplicações para a aplicação web.
  1. Selecione Configuração em Definições no lado esquerdo.

  2. Selecione as definições de aplicação no topo da página.

Uma imagem que mostra como navegar para configurações de aplicações no portal do Azure.
Criar definições de aplicação:
  1. Selecione + Nova definição de aplicação para criar definições para cada um dos seguintes valores (que são esperados pela aplicação da amostra de Django):

    • DBHOST → Utilize o nome do servidor que usou anteriormente quando criou a base de dados, por exemplo, msdocs-python-postgres-webapp-db-id<> único. O código em azuresite/produção.py anexa automaticamente .postgres.database.azure.com para criar o URL completo do servidor PostgreSQL.
    • DBNAME → Enter restaurant, o nome da base de dados de aplicações.
    • DBUSER → O nome de utilizador do administrador utilizado quando forte a base de dados.
    • DBPASS → A senha de segurança do administrador que criou anteriormente.
  2. Confirme que tem quatro configurações e veja os seus valores ocultos.

  3. Selecione Guardar e aplicar as definições.

Uma imagem que mostra como configurar as Definições de Aplicação no portal do Azure.

Tem problemas? Consulte primeiro o guia de resolução de problemas, caso contrário, avise-nos.

6 - Implementar o seu código de candidatura para Azure

Aplicação Azure AD serviço suporta vários métodos para implementar o seu código de aplicação para Azure, incluindo suporte para GitHub Actions e todas as principais ferramentas CI/CD. Este artigo centra-se em como implementar o seu código da sua estação de trabalho local para Azure.

Para implementar uma aplicação web a partir do Código VS, tem de ter o pacote de extensão Azure Tools instalado e ser assinado no Azure a partir do Código VS.

Instruções Captura de ecrã
Localize o ícone Azure na barra de ferramentas à esquerda e selecione-o para apresentar as Ferramentas Azure para a extensão do Código VS. Uma imagem que mostra como localizar a extensão Azure Tools no Código VS.
Na extensão Azure Tools:
  1. Expandir recursos. (Certifique-se de que os recursos são classificados por tipo de recurso.)

  2. Clique com o botão direito na sua aplicação web para trazer o menu de contexto.

  3. Selecione Implementar para a Web App... a partir do menu.

Uma imagem mostrando como implementar uma aplicação web no Código VS.
Selecione a sua aplicação web como a aplicação web para implementar no diálogo no topo do ecrã.

Selecione Implementar na caixa de diálogo.
Uma imagem que mostra como implementar uma aplicação web no Código VS: selecionar o código para implementar.Uma imagem que mostra como implementar uma aplicação web no Código VS: uma caixa de diálogo para confirmar a implementação.
Selecione Sim para atualizar a configuração de construção e melhorar o desempenho da implementação. Uma imagem que mostra como implementar uma aplicação web no Código VS: uma caixa de diálogo para escolher implementar sempre no serviço de aplicações.
Quando a implementação estiver concluída, aparecerá uma caixa de diálogo no canto inferior direito do ecrã com a opção de navegar pelo site. Se utilizar este link, a página web reportará um erro porque a aplicação web não está pronta até que faça a migração no passo seguinte. Pode ver outro aviso de caixa de diálogo sobre este problema. Uma imagem mostrando como implementar uma aplicação web no Código VS: uma caixa de diálogo com a opção de navegar para o site.Uma imagem mostrando como implementar uma aplicação web no Código VS: uma caixa de diálogo com escolha para visualizar detalhes da implementação.

Tem problemas? Consulte primeiro o guia de resolução de problemas, caso contrário, avise-nos.

7 - Migrar a base de dados de aplicações

Com o código implementado e a base de dados no local, a aplicação está quase pronta a ser utilizada. Primeiro, tens de estabelecer o esquema necessário na própria base de dados. Fá-lo "migrando" os modelos de dados da aplicação Django para a base de dados.

Passo 1. Crie sessão SSH e conecte-se ao servidor de aplicações web.

Navegue para página para a Serviço de Aplicações instância no portal do Azure.

  1. Selecione SSH, em Ferramentas de Desenvolvimento no lado esquerdo
  2. Em seguida , abra uma consola SSH no servidor de aplicações web. (Pode levar um minuto a ligar-se pela primeira vez, uma vez que o recipiente da aplicação web precisa de ser iniciado.)

Nota

Se não conseguir ligar-se à sessão SSH, então a própria aplicação falhou em arrancar. Verifique os registos de diagnóstico para obter mais detalhes. Por exemplo, se não tiver criado as definições de aplicações necessárias na secção anterior, os registos indicarão KeyError: 'DBNAME'.

Passo 2. Na sessão SSH, executar o seguinte comando para migrar os modelos para o esquema de base de dados (pode colar comandos utilizando o Ctrl+Shift+V):

Quando implementa a aplicação de amostras Flask para Serviço de Aplicações do Azure, as tabelas de base de dados são criadas automaticamente no Azure PostgreSQL. Se as mesas não forem criadas, experimente o seguinte comando:

# Create database tables
flask db init

Se encontrar algum erro relacionado com a ligação à base de dados, verifique os valores das configurações de aplicação do Serviço de Aplicações criadas na secção anterior, nomeadamente DBHOST, DBNAMEe DBUSERDBPASS. Sem estas definições, o comando migratório não pode comunicar com a base de dados.

Dica

Numa sessão SSH, para o Django também pode criar utilizadores com o python manage.py createsuperuser comando como faria com uma aplicação típica de Django. Para mais informações, consulte a documentação para django django-administrador e manage.py. Utilize a conta superuser para aceder à /admin parte do site. Para o Flask, utilize uma extensão como o administrador flask para fornecer a mesma funcionalidade.

Tem problemas? Deixe-nos saber.

8 - Navegue para a aplicação

Navegue pela aplicação implementada no seu navegador web no URL http://<app-name>.azurewebsites.net. Pode levar um minuto ou dois para a aplicação começar, por isso, se vir uma página de aplicação padrão, aguarde um minuto e refresque o navegador.

Quando vê a sua aplicação web de amostras, está a funcionar num contentor Linux em Serviço de Aplicações usando uma imagem incorporada Parabéns! Implantaste a tua aplicação Python para Serviço de Aplicações.

Tem problemas? Deixe-nos saber.

9 - Stream registos de diagnóstico

Serviço de Aplicações do Azure captura todas as mensagens de saída para a consola para ajudá-lo a diagnosticar problemas com a sua aplicação. A aplicação da amostra inclui print() declarações para demonstrar esta capacidade como mostrado abaixo.

def index(request):
    print('Request for index page received')

    restaurants = Restaurant.objects.annotate(avg_rating=Avg('review__rating')).annotate(review_count=Count('review'))
    return render(request, 'restaurant_review/index.html', {'restaurants': restaurants })

Pode aceder aos registos de consola gerados a partir do interior do contentor que acolhe a aplicação no Azure.

Instruções Captura de ecrã
Em primeiro lugar, tem de ativar os registos de streaming em Serviço de Aplicações do Azure. Navegue para página para a Serviço de Aplicações instância no portal do Azure.
  1. Selecione os registos Serviço de Aplicações no título de monitorização no menu do lado esquerdo da página.

  2. Alterar a propriedade 'Registar a aplicação ' de Off para Sistema de Ficheiros.

  3. Insira um período de retenção de 30 dias para os registos.

  4. Selecione Guardar para guardar as alterações.

Uma imagem que mostra como definir a sessão de registo da aplicação no portal do Azure.
Selecione o item 'Registar' no menu sob a secção 'Monitorização '. Atualize a página inicial na aplicação ou tente outros pedidos para gerar algumas mensagens de registo.

Verá quaisquer mensagens de registo geradas pela sua app e mensagens geradas pelo serviço na saída.
Uma imagem mostrando como transmitir registos no portal do Azure.

Tem problemas? Deixe-nos saber.

Limpar os recursos

Pode deixar a aplicação e a base de dados em funcionamento o tempo que quiser para mais trabalhos de desenvolvimento e avançar para os próximos passos.

No entanto, quando terminar a aplicação da amostra, pode remover todos os recursos da aplicação do Azure para garantir que não incorre em outras taxas e manter a subscrição do Azure desordenada. A remoção do grupo de recursos também remove todos os recursos do grupo de recursos e é a forma mais rápida de remover todos os recursos Azure para a sua app.

Siga estes passos enquanto se inscreve no portal do Azure para eliminar um grupo de recursos.

Instruções Captura de ecrã
Navegue para o grupo de recursos no portal do Azure.
  1. Insira o nome do grupo de recursos na barra de pesquisa no topo da página.
  2. Na rubrica Grupos de Recursos , selecione o nome do grupo de recursos para navegar até ele.
Uma imagem mostrando como encontrar grupo de recursos no portal do Azure.
Selecione o botão de grupo de recursos Delete no topo da página. Uma imagem mostrando como eliminar um grupo de recursos no portal do Azure.
No diálogo de confirmação, insira o nome do grupo de recursos para confirmar a eliminação. Selecione Eliminar para eliminar o grupo de recursos.

Tem problemas? Deixe-nos saber.

Passos seguintes

Saiba como mapear um nome DNS personalizado para a sua aplicação:

Saiba como Serviço de Aplicações executa uma aplicação Python: