Partilhar via


Implantar um aplicativo Web Python (Django ou Flask) com PostgreSQL no Azure

Neste tutorial, você implantará um aplicativo Web Python orientado por dados (Django ou Flask) no Serviço de Aplicativo do Azure com o serviço de banco de dados relacional do Banco de Dados do Azure para PostgreSQL. O Serviço de Aplicativo do Azure dá suporte ao Python em um ambiente de servidor Linux.

Um diagrama de arquitetura mostrando um Serviço de Aplicativo com um banco de dados PostgreSQL no Azure.

Para concluir este tutorial, você precisará:

Saltar para o fim

Com a CLI do Desenvolvedor do Azure instalada, você pode implantar um aplicativo de exemplo totalmente configurado mostrado neste tutorial e vê-lo em execução no Azure. Basta executar os seguintes comandos em um diretório de trabalho vazio:

azd auth login
azd init --template msdocs-flask-postgresql-sample-app
azd up

Aplicação de exemplo

Exemplos de aplicativos Python usando a estrutura Flask e Django são fornecidos para ajudá-lo a acompanhar este tutorial. Para implantá-los sem executá-los localmente, ignore esta parte.

Para executar o aplicativo localmente, certifique-se de ter Python 3.7 ou superior e PostgreSQL instalado localmente. Em seguida, clone a ramificação do starter-no-infra repositório de exemplo e altere para a raiz do repositório.

git clone -b starter-no-infra https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app
cd msdocs-flask-postgresql-sample-app

Crie um arquivo .env como mostrado abaixo usando o arquivo .env.sample como guia. Defina o valor de como o nome de um banco de dados existente em sua instância local do DBNAME PostgreSQL. Defina os valores de , DBUSERe DBPASS conforme apropriado para sua instância local do DBHOSTPostgreSQL.

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

Crie um ambiente virtual para o aplicativo:

py -m venv .venv
.venv\scripts\activate

Instale as dependências:

pip install -r requirements.txt

Execute o aplicativo de exemplo com os seguintes comandos:

# Run database migration
flask db upgrade
# Run the app at http://127.0.0.1:5000
flask run

1. Criar Serviço de Aplicativo e PostgreSQL

Nesta etapa, você cria os recursos do Azure. As etapas usadas neste tutorial criam um conjunto de recursos seguros por padrão que incluem o Serviço de Aplicativo e o Banco de Dados do Azure para PostgreSQL. Para o processo de criação, você especificará:

  • O Nome do aplicativo Web. É o nome usado como parte do nome DNS do seu webapp na forma de https://<app-name>.azurewebsites.net.
  • A região para executar o aplicativo fisicamente no mundo.
  • A pilha de tempo de execução para o aplicativo. É onde você seleciona a versão do Python a ser usada para seu aplicativo.
  • O plano de hospedagem para o aplicativo. É a camada de preço que inclui o conjunto de recursos e a capacidade de dimensionamento para seu aplicativo.
  • O Grupo de Recursos para o aplicativo. Um grupo de recursos permite agrupar (em um contêiner lógico) todos os recursos do Azure necessários para o aplicativo.

Entre no portal do Azure e siga estas etapas para criar seus recursos do Serviço de Aplicativo do Azure.

Etapa 1: No portal do Azure:

  1. Insira "banco de dados de aplicativo Web" na barra de pesquisa na parte superior do portal do Azure.
  2. Selecione o item rotulado Web App + Database sob o título Marketplace . Você também pode navegar diretamente para o assistente de criação.

Uma captura de tela mostrando como usar a caixa de pesquisa na barra de ferramentas superior para localizar o assistente de criação de aplicativo Web + banco de dados (Flask).

Etapa 2: Na página Criar Aplicativo Web + Banco de Dados , preencha o formulário da seguinte maneira.

  1. Grupo de Recursos → Selecione Criar novo e use um nome de msdocs-python-postgres-tutorial.
  2. Região → qualquer região do Azure perto de si.
  3. Nomemsdocs-python-postgres-XYZ onde XYZ é qualquer três caracteres aleatórios. Este nome tem de ser exclusivo em todo o Azure.
  4. Pilha de tempo de execução → Python 3.10.
  5. Banco de dadosPostgreSQL - Servidor flexível é selecionado por padrão como o mecanismo de banco de dados. O nome do servidor e o nome do banco de dados também são definidos por padrão como valores apropriados.
  6. Plano de hospedagemBasic. Quando estiver pronto, você poderá escalar para um nível de preço de produção mais tarde.
  7. Selecione Rever + criar.
  8. Após a conclusão da validação, selecione Criar.

Uma captura de tela mostrando como configurar um novo aplicativo e banco de dados no assistente Aplicativo Web + Banco de Dados (Flask).

Etapa 3: A implantação leva alguns minutos para ser concluída. Quando a implantação for concluída, selecione o botão Ir para o recurso . Você é levado diretamente para o aplicativo do Serviço de Aplicativo, mas os seguintes recursos são criados:

  • Grupo de recursos → O contêiner para todos os recursos criados.
  • Plano do Serviço de Aplicativo → Define os recursos de computação para o Serviço de Aplicativo. Um plano Linux na camada Basic é criado.
  • Serviço de Aplicativo → Representa seu aplicativo e é executado no plano do Serviço de Aplicativo.
  • A rede virtual → integrada ao aplicativo Serviço de Aplicativo e isola o tráfego de rede back-end.
  • O servidor flexível do Banco de Dados do Azure para PostgreSQL → Acessível somente de dentro da rede virtual. Um banco de dados e um usuário são criados para você no servidor.
  • Zona DNS privada → Permite a resolução DNS do servidor PostgreSQL na rede virtual.

Uma captura de tela mostrando o processo de implantação concluído (Flask).

2. Segredos de conexão seguros

O assistente de criação gerou a cadeia de conectividade do banco de dados para você já como uma configuração de aplicativo. No entanto, a prática recomendada de segurança é manter os segredos completamente fora do Serviço de Aplicativo. Você move seus segredos para um cofre de chaves e altera a configuração do aplicativo para uma referência do Cofre de Chaves com a ajuda dos Conectores de Serviço.

Etapa 1: Recuperar a cadeia de conexão existente

  1. No menu esquerdo da página Serviço de Aplicativo, selecione Configurações > Variáveis de ambiente.
  2. Selecione AZURE_POSTGRESQL_CONNECTIONSTRING.
  3. Na configuração Adicionar/Editar aplicativo, no campo Valor , localize a parte password= no final da cadeia de caracteres.
  4. Copie a cadeia de caracteres de senha após Password= para uso posterior. Esta configuração do aplicativo permite que você se conecte ao banco de dados Postgres protegido por trás de um ponto de extremidade privado. No entanto, o segredo é salvo diretamente no aplicativo do Serviço de Aplicativo, o que não é o melhor. Você vai mudar isso.

Uma captura de tela mostrando como ver o valor de uma configuração de aplicativo.

Etapa 2: Criar um cofre de chaves para gerenciamento seguro de segredos

  1. Na barra de pesquisa superior, digite "cofre de chaves" e selecione Cofre de chaves do Marketplace>.
  2. Em Grupo de Recursos, selecione msdocs-python-postgres-tutorial.
  3. Em Nome do cofre de chaves, digite um nome que consista apenas em letras e números.
  4. Em Região, defina-o para o mesmo local que o grupo de recursos.

Uma captura de tela mostrando como criar um cofre de chaves.

Etapa 3: Proteger o cofre de chaves com um ponto de extremidade privado

  1. Selecione o separador Rede.
  2. Desmarque Ativar acesso público.
  3. Selecione Criar um ponto de extremidade privado.
  4. Em Grupo de Recursos, selecione msdocs-python-postgres-tutorial.
  5. Em Nome, digite um nome para o ponto de extremidade privado que consiste apenas em letras e números.
  6. Em Região, defina-o para o mesmo local que o grupo de recursos.
  7. Na caixa de diálogo, em Local, selecione o mesmo local do seu aplicativo do Serviço de Aplicativo.
  8. Em Grupo de Recursos, selecione msdocs-python-postgres-tutorial.
  9. Em Nome, digite msdocs-python-postgres-XYZVaultEndpoint.
  10. Em Rede virtual, selecione msdocs-python-postgres-XYZVnet.
  11. Em Sub-rede, msdocs-python-postgres-XYZSubnet.
  12. Selecione OK.
  13. Selecione Rever + criar e, em seguida, selecione Criar. Aguarde a conclusão da implantação do cofre de chaves. Você deve ver "Sua implantação está concluída".

Uma captura de tela mostrando como proteger um cofre de chaves com um ponto de extremidade privado.

Etapa 4: Configurar o Service Connector

  1. Na barra de pesquisa superior, digite msdocs-python-postgres e selecione o recurso do Serviço de Aplicativo chamado msdocs-python-postgres-XYZ.
  2. Na página Serviço de Aplicativo, no menu à esquerda, selecione Configurações > do Conector de Serviço. Já existe um conector, que o assistente de criação de aplicativos criou para você.
  3. Marque a caixa de seleção ao lado do conector e selecione Editar.
  4. Na guia Noções básicas, em Banco de dados PostgreSQL, selecione o banco de dados PostgreSQL que foi criado.
  5. Selecione a guia Autenticação .
  6. Em Senha, cole a senha copiada anteriormente.
  7. Selecione Armazenar segredo no Cofre da chave.
  8. Em Conexão do Cofre da Chave, selecione Criar novo. Uma caixa de diálogo Criar conexão é aberta na parte superior da caixa de diálogo de edição.

Uma captura de tela mostrando como editar um conector de serviço com uma conexão de cofre de chaves.

Etapa 5: Estabelecer a conexão do Cofre da Chave

  1. Na caixa de diálogo Criar conexão para a conexão do Cofre da Chave, no Cofre da Chave, selecione o cofre da chave criado anteriormente.
  2. Selecione Rever + Criar.
  3. Quando a validação for concluída, selecione Criar.

Uma captura de tela mostrando como configurar um conector de serviço do cofre de chaves.

Etapa 6: Finalizar a configuração do Service Connector

  1. Você está de volta na caixa de diálogo de edição para defaultConnector. Na guia Autenticação, aguarde até que o conector do cofre de chaves seja criado. Quando terminar, a lista suspensa Conexão do Cofre da Chave selecioná-la-á automaticamente.
  2. Selecione Next: Networking.
  3. Selecione Guardar. Aguarde até que a notificação Atualização bem-sucedida seja exibida.

Uma captura de tela mostrando a conexão do cofre de chaves selecionada no defaultConnector.

Etapa 7: Verificar a integração do Key Vault

  1. No menu à esquerda, selecione Configurações > Variáveis de ambiente novamente.
  2. Ao lado de AZURE_POSTGRESQL_CONNECTIONSTRING, selecione Mostrar valor. O valor deve ser @Microsoft.KeyVault(...), o que significa que é uma referência do cofre de chaves porque o segredo agora é gerenciado no cofre de chaves.

Uma captura de tela mostrando como ver o valor da variável de ambiente MySQL no Azure.

Para resumir, o processo envolveu a recuperação da cadeia de conexão PostgreSQL das variáveis de ambiente do Serviço de Aplicativo, a criação de um Cofre de Chaves do Azure para gerenciamento seguro de segredos com acesso privado e a atualização do conector de serviço para armazenar a senha no cofre de chaves. Uma conexão segura entre o aplicativo do Serviço de Aplicativo e o cofre de chaves foi estabelecida usando uma identidade gerenciada atribuída pelo sistema, e a configuração foi verificada confirmando que a cadeia de conexão usa uma referência do Cofre da Chave.

Tem problemas? Verifique a seção Solução de problemas.


3. Implantar código de exemplo

Nesta etapa, você configurará a implantação do GitHub usando as Ações do GitHub. É apenas uma das muitas maneiras de implantar no Serviço de Aplicativo, mas também uma ótima maneira de ter integração contínua em seu processo de implantação. Por padrão, cada git push um no repositório do GitHub iniciará a ação de compilação e implantação.

Passo 1: Em uma nova janela do navegador:

  1. Iniciar sessão na sua conta do GitHub.
  2. Navegar para https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app.
  3. Selecionar Bifurcação.
  4. Selecione Criar bifurcação.

Uma captura de tela mostrando como criar uma bifurcação do repositório GitHub de exemplo (Flask).

Etapa 2: Na página do GitHub, abra o Visual Studio Code no navegador pressionando a . tecla .

Uma captura de tela mostrando como abrir a experiência do navegador Visual Studio Code no GitHub (Flask).

Etapa 3: No Visual Studio Code no navegador, abra azureproject/production.py no explorador. Veja as variáveis de ambiente que estão sendo usadas no ambiente de produção, incluindo as configurações do aplicativo que você viu na página de configuração.

Uma captura de tela mostrando o Visual Studio Code no navegador e um arquivo aberto (Flask).

Etapa 4: De volta à página Serviço de Aplicativo, no menu à esquerda, selecione Central de Implantação.

Uma captura de tela mostrando como abrir o centro de implantação no Serviço de Aplicativo (Flask).

Etapa 5: Na página Centro de Implantação:

  1. Em Source, selecione GitHub. Por padrão, as Ações do GitHub são selecionadas como o provedor de compilação.
  2. Entre na sua conta do GitHub e siga o prompt para autorizar o Azure.
  3. Em Organização, selecione sua conta.
  4. Em Repositório, selecione msdocs-flask-postgresql-sample-app.
  5. Em Ramo, selecione principal.
  6. Mantenha a opção padrão selecionada para Adicionar um fluxo de trabalho.
  7. Em Tipo de autenticação, selecione Identidade atribuída pelo usuário.
  8. No menu superior, selecione Salvar. O Serviço de Aplicativo confirma um arquivo de fluxo de trabalho no repositório GitHub escolhido, no .github/workflows diretório.

Uma captura de tela mostrando como configurar CI/CD usando ações do GitHub (Flask).

Etapa 6: Na página Centro de Implantação:

  1. Selecione Registos. Uma execução de implantação já foi iniciada.
  2. No item de log para a execução da implantação, selecione Criar/Implantar Logs.

Uma captura de tela mostrando como abrir logs de implantação no centro de implantação (Flask).

Etapa 7: Você é levado ao repositório do GitHub e vê que a ação do GitHub está em execução. O arquivo de fluxo de trabalho define dois estágios separados, build e deploy. Aguarde até que a execução do GitHub mostre um status de Concluído. Demora cerca de 5 minutos.

Uma captura de tela mostrando uma execução do GitHub em andamento (Flask).

Tem problemas? Consulte o Guia de resolução de problemas.

4. Gerar esquema de banco de dados

Com o banco de dados PostgreSQL protegido pela rede virtual, a maneira mais fácil de executar migrações de banco de dados Flask é em uma sessão SSH com o contêiner do Serviço de Aplicativo.

Etapa 1: De volta à página do Serviço de Aplicativo, no menu à esquerda,

  1. Selecione SSH.
  2. Selecione Ir.

Uma captura de tela mostrando como abrir o shell SSH para seu aplicativo no portal do Azure (Flask).

Passo 2: No terminal SSH, execute flask db upgrade. Se for bem-sucedido, o Serviço de Aplicativo está se conectando com êxito ao banco de dados. Somente as alterações nos /home arquivos podem persistir além das reinicializações do aplicativo. As mudanças fora do /home não são persistentes.

Uma captura de tela mostrando os comandos a serem executados no shell SSH e sua saída (Flask).

5. Navegue até o aplicativo

Etapa 1: Na página Serviço de Aplicativo:

  1. No menu à esquerda, selecione Visão geral.
  2. Selecione o URL do seu aplicativo. Você também pode navegar diretamente para https://<app-name>.azurewebsites.net.

Uma captura de tela mostrando como iniciar um Serviço de Aplicativo a partir do portal do Azure (Flask).

Passo 2: Adicione alguns restaurantes à lista. Parabéns, você está executando um aplicativo Web no Serviço de Aplicativo do Azure, com conectividade segura ao Banco de Dados do Azure para PostgreSQL.

Uma captura de tela do aplicativo Web Flask com PostgreSQL em execução no Azure mostrando avaliações de restaurantes e restaurantes (Flask).

6. Transmitir logs de diagnóstico

O Serviço de Aplicativo do Azure captura todas as mensagens enviadas para o console para ajudá-lo a diagnosticar problemas com seu aplicativo. O aplicativo de exemplo inclui print() instruções para demonstrar esse recurso, conforme mostrado abaixo.

@app.route('/', methods=['GET'])
def index():
    print('Request for index page received')
    restaurants = Restaurant.query.all()
    return render_template('index.html', restaurants=restaurants)

Etapa 1: Na página Serviço de Aplicativo:

  1. No menu à esquerda, selecione Logs do Serviço de Aplicativo.
  2. Em Registo de aplicações, selecione Sistema de ficheiros.
  3. No menu superior, selecione Salvar.

Uma captura de tela mostrando como habilitar logs nativos no Serviço de Aplicativo no portal do Azure.

Passo 2: No menu à esquerda, selecione Log stream. Você vê os logs do seu aplicativo, incluindo logs da plataforma e logs de dentro do contêiner.

Uma captura de tela mostrando como exibir o fluxo de log no portal do Azure.

Saiba mais sobre como iniciar sessão em aplicações Python na série sobre como configurar o Azure Monitor para a sua aplicação Python.

7. Limpar os recursos

Quando terminar, pode eliminar todos os recursos da sua subscrição do Azure eliminando o grupo de recursos.

Etapa 1: Na barra de pesquisa na parte superior do portal do Azure:

  1. Insira o nome do grupo de recursos.
  2. Selecione o grupo de recursos.

Uma captura de tela mostrando como pesquisar e navegar para um grupo de recursos no portal do Azure.

Etapa 2: na página do grupo de recursos, selecione Excluir grupo de recursos.

Uma captura de tela mostrando o local do botão Excluir Grupo de Recursos no portal do Azure.

Passo 3:

  1. Introduza o nome do grupo de recursos para confirmar a sua eliminação.
  2. Selecione Eliminar.

Uma captura de tela da caixa de diálogo de confirmação para excluir um grupo de recursos no portal do Azure. :

1. Crie recursos do Azure e implante um aplicativo de exemplo

Nesta etapa, você cria os recursos do Azure e implanta um aplicativo de exemplo no Serviço de Aplicativo no Linux. As etapas usadas neste tutorial criam um conjunto de recursos seguros por padrão que incluem o Serviço de Aplicativo e o Banco de Dados do Azure para PostgreSQL.

  1. Se ainda não o fez, clone a ramificação do repositório de starter-no-infra exemplo em um terminal local.

    git clone -b starter-no-infra https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app
    cd msdocs-flask-postgresql-sample-app
    

    Este ramo clonado é o seu ponto de partida. Ele contém um aplicativo Flask de unidade de dados simples.

  2. A partir da raiz do repositório, execute azd init.

    azd init --template python-app-service-postgresql-infra
    
  3. Quando solicitado, dê as seguintes respostas:

    Pergunta Resposta
    O diretório atual não está vazio. Gostaria de inicializar um projeto aqui no '<seu-diretório>'? Y
    O que você gostaria de fazer com esses arquivos? Manter os meus ficheiros existentes inalterados
    Insira um novo nome de ambiente Escreva um nome exclusivo. O modelo azd usa esse nome como parte do nome DNS do seu aplicativo Web no Azure (<app-name>.azurewebsites.net). São permitidos caracteres alfanuméricos e hífenes.
  4. Execute o azd up comando para provisionar os recursos necessários do Azure e implantar o código do aplicativo. Se você ainda não estiver conectado ao Azure, o navegador será iniciado e solicitará que você entre. O azd up comando também solicitará que você selecione a assinatura desejada e o local para implantar.

    azd up
    

    O azd up comando pode levar alguns minutos para ser concluído. Ele também compila e implanta o código do aplicativo, mas você modificará o código mais tarde para trabalhar com o Serviço de Aplicativo. Enquanto está em execução, o comando fornece mensagens sobre o processo de provisionamento e implantação, incluindo um link para a implantação no Azure. Quando terminar, o comando também exibirá um link para o aplicativo deploy.

    Este modelo azd contém arquivos (azure.yaml e o diretório infra ) que geram uma arquitetura segura por padrão com os seguintes recursos do Azure:

    • Grupo de recursos → O contêiner para todos os recursos criados.
    • Plano do Serviço de Aplicativo → Define os recursos de computação para o Serviço de Aplicativo. Um plano Linux na camada B1 é especificado.
    • Serviço de Aplicativo → Representa seu aplicativo e é executado no plano do Serviço de Aplicativo.
    • A rede virtual → integrada ao aplicativo Serviço de Aplicativo e isola o tráfego de rede back-end.
    • O servidor flexível do Banco de Dados do Azure para PostgreSQL → Acessível somente de dentro da rede virtual. Um banco de dados e um usuário são criados para você no servidor.
    • Zona DNS privada → Permite a resolução DNS do servidor PostgreSQL na rede virtual.
    • Espaço de trabalho do Log Analytics → Atua como o contêiner de destino para seu aplicativo enviar seus logs, onde você também pode consultar os logs.

2. Use a cadeia de conexão do banco de dados

O modelo azd que você usa gerou as variáveis de conectividade para você já como configurações do aplicativo e as envia para o terminal para sua conveniência. As configurações do aplicativo são uma maneira de manter os segredos de conexão fora do seu repositório de código.

  1. Na saída azd, encontre as configurações do aplicativo e encontre as configurações AZURE_POSTGRESQL_CONNECTIONSTRING e AZURE_REDIS_CONNECTIONSTRING. Para manter os segredos seguros, apenas os nomes das configurações são exibidos. Eles se parecem com isso na saída azd:

     App Service app has the following settings:
    
             - AZURE_POSTGRESQL_CONNECTIONSTRING
             - AZURE_REDIS_CONNECTIONSTRING
             - FLASK_DEBUG
             - SCM_DO_BUILD_DURING_DEPLOYMENT
             - SECRET_KEY
     
  2. AZURE_POSTGRESQL_CONNECTIONSTRING contém a cadeia de conexão para o banco de dados Postgres no Azure e AZURE_REDIS_CONNECTIONSTRING contém a cadeia de conexão para o cache Redis no Azure. Você precisa usá-los seu código para se conectar a ele. Abra azureproject/production.py, descomente as seguintes linhas e salve o arquivo:

    conn_str = os.environ['AZURE_POSTGRESQL_CONNECTIONSTRING']
    conn_str_params = {pair.split('=')[0]: pair.split('=')[1] for pair in conn_str.split(' ')}
    DATABASE_URI = 'postgresql+psycopg2://{dbuser}:{dbpass}@{dbhost}/{dbname}'.format(
        dbuser=conn_str_params['user'],
        dbpass=conn_str_params['password'],
        dbhost=conn_str_params['host'],
        dbname=conn_str_params['dbname']
    )
    

    Seu código de aplicativo agora está configurado para se conectar ao banco de dados PostgreSQL no Azure. Se desejar, abra app.py e veja como a DATABASE_URI variável de ambiente é usada.

  3. No terminal, execute azd deploy.

    azd deploy
    

4. Gerar esquema de banco de dados

Com o banco de dados PostgreSQL protegido pela rede virtual, a maneira mais fácil de executar migrações de banco de dados Flask é em uma sessão SSH com o contêiner do Serviço de Aplicativo.

  1. Na saída azd, encontre o URL para a sessão SSH e navegue até ele no navegador. Tem esta aparência na saída:

     Open SSH session to App Service container at: https://<app-name>.scm.azurewebsites.net/webssh/host
     
  2. No terminal SSH, execute flask db upgrade. Se for bem-sucedido, o Serviço de Aplicativo está se conectando com êxito ao banco de dados.

    Uma captura de tela mostrando os comandos a serem executados no shell SSH e sua saída (Flask).

    Nota

    Somente as alterações nos /home arquivos podem persistir além das reinicializações do aplicativo. As mudanças fora do /home não são persistentes.

5. Navegue até o aplicativo

  1. Na saída azd, encontre o URL do seu aplicativo e navegue até ele no navegador. O URL tem esta aparência na saída AZD:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: https://<app-name>.azurewebsites.net/
     
  2. Adicione alguns restaurantes à lista.

    Parabéns, você está executando um aplicativo Web no Serviço de Aplicativo do Azure, com conectividade segura ao Banco de Dados do Azure para PostgreSQL.

6. Transmitir logs de diagnóstico

O Serviço de Aplicativo do Azure pode capturar logs do console para ajudá-lo a diagnosticar problemas com seu aplicativo. Por conveniência, o modelo azd já habilitou o registro no sistema de arquivos local, bem como o envio para um espaço de trabalho do Log Analytics.

O aplicativo de exemplo inclui print() instruções para demonstrar esse recurso, conforme mostrado no trecho a seguir.

@app.route('/', methods=['GET'])
def index():
    print('Request for index page received')
    restaurants = Restaurant.query.all()
    return render_template('index.html', restaurants=restaurants)

Na saída azd, localize o link para transmitir logs do Serviço de Aplicativo e navegue até ele no navegador. O link tem esta aparência na saída azd:

Stream App Service logs at: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream

Saiba mais sobre como iniciar sessão em aplicações Python na série sobre como configurar o Azure Monitor para a sua aplicação Python.

7. Limpar os recursos

Para excluir todos os recursos do Azure no ambiente de implantação atual, execute azd down.

azd down

Resolução de Problemas

Abaixo estão listados os problemas que você pode encontrar ao tentar trabalhar neste tutorial e as etapas para resolvê-los.

Não consigo me conectar à sessão SSH

Se você não conseguir se conectar à sessão SSH, o próprio aplicativo falhou ao iniciar. Verifique os logs de diagnóstico para obter detalhes. Por exemplo, se você vir um erro como KeyError: 'AZURE_POSTGRESQL_CONNECTIONSTRING', isso pode significar que a variável de ambiente está ausente (você pode ter removido a configuração do aplicativo).

Recebo um erro ao executar migrações de banco de dados

Se você encontrar algum erro relacionado à conexão com o banco de dados, verifique se as configurações do aplicativo (AZURE_POSTGRESQL_CONNECTIONSTRING) foram alteradas. Sem essa cadeia de conexão, o comando migrate não pode se comunicar com o banco de dados.

Perguntas mais frequentes

Quanto custa esta configuração?

O preço dos recursos criados é o seguinte:

  • O plano do Serviço de Aplicativo é criado na camada Básica e pode ser dimensionado para cima ou para baixo. Consulte Preços do Serviço de Aplicativo.
  • O servidor flexível PostgreSQL é criado na camada burstable mais baixa Standard_B1ms, com o tamanho mínimo de armazenamento, que pode ser dimensionado para cima ou para baixo. Consulte Banco de Dados do Azure para obter preços do PostgreSQL.
  • A rede virtual não incorre em cobrança, a menos que você configure uma funcionalidade extra, como emparelhamento. Consulte Preços da Rede Virtual do Azure.
  • A zona DNS privada incorre em uma pequena cobrança. Consulte Preços do DNS do Azure.

Como faço para me conectar ao servidor PostgreSQL que está protegido atrás da rede virtual com outras ferramentas?

  • Para acesso básico a partir de uma ferramenta de linha de comando, você pode executar psql a partir do terminal SSH do aplicativo.
  • Para se conectar a partir de uma ferramenta de área de trabalho, sua máquina deve estar dentro da rede virtual. Por exemplo, pode ser uma VM do Azure conectada a uma das sub-redes ou uma máquina em uma rede local que tenha uma conexão VPN site a site com a rede virtual do Azure.
  • Você também pode integrar o Azure Cloud Shell à rede virtual.

Como funciona o desenvolvimento de aplicativos locais com o GitHub Actions?

Usando o arquivo de fluxo de trabalho gerado automaticamente do Serviço de Aplicativo como exemplo, cada git push um inicia uma nova compilação e execução de implantação. A partir de um clone local do repositório GitHub, você faz as atualizações desejadas e envia por push para o GitHub. Por exemplo:

git add .
git commit -m "<some-message>"
git push origin main

Como o exemplo Django é configurado para ser executado no Serviço de Aplicativo do Azure?

Nota

Se você estiver acompanhando este tutorial com seu próprio aplicativo, veja a descrição do arquivo requirements.txt no arquivo README.md de cada projeto (Flask, Django) para ver quais pacotes você precisará.

O aplicativo de exemplo Django define as configurações no arquivo azureproject/production.py para que ele possa ser executado no Serviço de Aplicativo do Azure. Essas alterações são comuns à implantação do Django na produção e não específicas do Serviço de Aplicativo.

  • O Django valida o cabeçalho HTTP_HOST em solicitações recebidas. O código de exemplo usa a WEBSITE_HOSTNAME variável de ambiente no Serviço de Aplicativo para adicionar o nome de domínio do aplicativo à configuração de ALLOWED_HOSTS do Django.

    # Configure the domain name using the environment variable
    # that Azure automatically creates for us.
    ALLOWED_HOSTS = [os.environ['WEBSITE_HOSTNAME']] if 'WEBSITE_HOSTNAME' in os.environ else []
    
  • O Django não suporta o serviço de arquivos estáticos em produção. Para este tutorial, você usa WhiteNoise para habilitar o serviço dos arquivos. O pacote WhiteNoise já foi instalado com o requirements.txt e seu middleware foi adicionado à lista.

    
    # WhiteNoise configuration
    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        # Add whitenoise middleware after the security middleware
        'whitenoise.middleware.WhiteNoiseMiddleware',
    

    Em seguida, as configurações do arquivo estático são configuradas de acordo com a documentação do Django.

    SESSION_ENGINE = "django.contrib.sessions.backends.cache"
    STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
    

Para obter mais informações, consulte Configurações de produção para aplicativos Django.

Próximos passos

Avance para o próximo tutorial para saber como proteger seu aplicativo com um domínio e certificado personalizados.

Saiba como o Serviço de Aplicativo executa um aplicativo Python: