Tutorial: compilar um aplicativo Web Python (Django) com PostgreSQL no serviço Azure AppTutorial: Build a Python (Django) web app with PostgreSQL in Azure App Service

O Serviço de Aplicações no Linux oferece um serviço de alojamento na Web altamente dimensionável e com correção automática.App Service on Linux provides a highly scalable, self-patching web hosting service. Este tutorial mostra como criar um aplicativo Web Django (Python controlado por dados) usando PostgreSQL como o back-end do banco de dado.This tutorial shows how to create a data-driven Python (Django) web app, using PostgreSQL as the database back-end. Quando terminar, você terá um aplicativo Web Django em execução no serviço Azure App no Linux.When you are done, you have a Django web application running in Azure App Service on Linux.

Aplicativo Web python django no serviço de Azure App no Linux

Neste tutorial, ficará a saber como:In this tutorial, you learn how to:

  • Criar uma base de dados PostgreSQL no AzureCreate a PostgreSQL database in Azure
  • Conectar um aplicativo Web Python ao PostgreSQLConnect a Python web app to PostgreSQL
  • Implantar o aplicativo Web Python no AzureDeploy the Python web app to Azure
  • Ver registos de diagnósticoView diagnostic logs
  • Gerenciar o aplicativo Web Python no portal do AzureManage the Python web app in the Azure portal

Nota

Antes de criar um banco de dados do Azure para PostgreSQL, verifique qual geração de computação está disponível em sua região.Before creating an Azure Database for PostgreSQL, please check which compute generation is available in your region.

Você pode seguir as etapas neste artigo sobre as instruções do macOS, Linux e Windows são as mesmas na maioria dos casos, mas as diferenças não são detalhadas neste tutorial.You can follow the steps in this article on macOS, Linux and Windows instructions are the same in most cases, but the differences are not detailed in this tutorial.

Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.If you don't have an Azure subscription, create a free account before you begin.

Pré-requisitosPrerequisites

Para concluir este tutorial:To complete this tutorial:

  1. Instalar o GitInstall Git
  2. Instalar o PythonInstall Python
  3. Instalar e executar o PostgreSQLInstall and run PostgreSQL

Testar a instalação do PostgreSQL local e criar uma base de dadosTest local PostgreSQL installation and create a database

Numa janela do terminal local, execute psql para ligar ao seu servidor PostgreSQL local.In a local terminal window, run psql to connect to your local PostgreSQL server.

sudo -u postgres psql postgres

Se obtiver uma mensagem de erro semelhante a unknown user: postgres, a instalação do PostgreSQL pode ser configurada com o seu nome de utilizador com sessão iniciada.If you get an error message similar to unknown user: postgres, your PostgreSQL installation may be configured with your logged in username. Em alternativa, experimente o comando seguinte.Try the following command instead.

psql postgres

Se a ligação for bem-sucedida, a base de dados PostgreSQL está em execução.If your connection is successful, your PostgreSQL database is running. Caso contrário, certifique-se de que a base de dados PostgresQL local é iniciada conforme as instruções para o seu sistema operativo em Transferências - Distribuição do PostgreSQL Core.If not, make sure that your local PostgresQL database is started by following the instructions for your operating system at Downloads - PostgreSQL Core Distribution.

Crie um banco de dados chamado pollsdb e configure um usuário de banco de dados separado chamado gerente com a senha supersecretpass.Create a database called pollsdb and set up a separate database user named manager with password supersecretpass.

CREATE DATABASE pollsdb;
CREATE USER manager WITH PASSWORD 'supersecretpass';
GRANT ALL PRIVILEGES ON DATABASE pollsdb TO manager;

Escreva \q para sair do cliente PostgreSQL.Type \q to exit the PostgreSQL client.

Criar uma aplicação Python localCreate local Python app

Nesta etapa, você configura o projeto Django do Python local.In this step, you set up the local Python Django project.

Clonar a aplicação de exemploClone the sample app

Abra a janela de terminal e CD num diretório de trabalho.Open the terminal window, and CD to a working directory.

Execute os seguintes comandos para clonar o repositório de exemplo.Run the following commands to clone the sample repository.

git clone https://github.com/Azure-Samples/djangoapp.git
cd djangoapp

Este repositório de exemplo contém um aplicativo Django .This sample repository contains a Django application. É o mesmo aplicativo controlado por dados que você obteria seguindo o tutorial de introdução na documentação do Django.It's the same data-driven app you would get by following the getting started tutorial in the Django documentation. Este tutorial não ensina a Django, mas mostra como fazer a implantação e executar um aplicativo Web Django (ou outro aplicativo Python controlado por dados) para Azure App serviço.This tutorial doesn't teach you Django, but shows you how to take deploy and run a Django web app (or another data-driven Python app) to Azure App Service.

Configurar o ambienteConfigure environment

Crie um ambiente virtual Python e use um script para definir as configurações de conexão do banco de dados.Create a Python virtual environment and use a script to set the database connection settings.

# Bash
python3 -m venv venv
source venv/bin/activate
source ./env.sh

# PowerShell
py -3 -m venv venv
venv\scripts\activate
.\env.ps1

As variáveis de ambiente definidas em env.sh e env. ps1 são usadas em azuresite/Settings. py para definir as configurações do banco de dados.The environment variables defined in env.sh and env.ps1 are used in azuresite/settings.py to define the database settings.

Executar a aplicação localmenteRun app locally

Instale os pacotes necessários, Execute migrações Django e crie um usuário administrador.Install the required packages, run Django migrations and create an admin user.

pip install -r requirements.txt
python manage.py migrate
python manage.py createsuperuser

Depois que o usuário administrador for criado, execute o servidor Django.Once the admin user is created, run the Django server.

python manage.py runserver

Quando o aplicativo Web Django estiver totalmente carregado, você verá algo semelhante à seguinte mensagem:When the Django web app is fully loaded, you see something similar to the following message:

Performing system checks...

System check identified no issues (0 silenced).
October 26, 2018 - 10:54:59
Django version 2.1.2, using settings 'azuresite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Vá para http://localhost:8000 em um navegador.Go to http://localhost:8000 in a browser. Você deverá ver a mensagem No polls are available..You should see the message No polls are available..

Vá para http://localhost:8000/admin e entre usando o usuário administrador que você criou na última etapa.Go to http://localhost:8000/admin and sign in using the admin user you created in the last step. Selecione Adicionar ao lado de perguntas e criar uma pergunta de sondagem com algumas opções.Select Add next to Questions and create a poll question with some choices.

Executar o aplicativo python django nos serviços de aplicativos localmente

Vá para http://localhost:8000 novamente e veja a pergunta de sondagem exibida.Go to http://localhost:8000 again and see the poll question displayed.

O aplicativo de exemplo Django armazena dados do usuário no banco de dado.The Django sample application stores user data in the database. Se você tiver êxito ao adicionar uma pergunta de pesquisa, seu aplicativo está gravando dados no banco de dado PostgreSQL local.If you are successful at adding a poll question, your app is writing data to the local PostgreSQL database.

Para interromper o servidor Django a qualquer momento, digite CTRL + C no terminal.To stop the Django server at anytime, type Ctrl+C in the terminal.

Criar uma base de dados PostgreSQL de produçãoCreate a production PostgreSQL database

Neste passo, vai criar uma base de dados PostgreSQL no Azure.In this step, you create a PostgreSQL database in Azure. Quando a aplicação for implementada no Azure, utiliza esta base de dados na cloud.When your app is deployed to Azure, it uses this cloud database.

Utilizar o Azure Cloud ShellUse Azure Cloud Shell

O Azure hospeda Azure Cloud Shell, um ambiente de shell interativo que você pode usar por meio de seu navegador.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Você pode usar o bash ou o PowerShell com Cloud Shell para trabalhar com os serviços do Azure.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. Você pode usar o Cloud Shell comandos pré-instalados para executar o código neste artigo sem precisar instalar nada em seu ambiente local.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Para iniciar Azure Cloud Shell:To start Azure Cloud Shell:

OpçãoOption Exemplo/linkExample/Link
Selecione Experimentar no canto superior direito de um bloco de código.Select Try It in the upper-right corner of a code block. A seleção de try não copia automaticamente o código para Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Exemplo de teste para Azure Cloud Shell
Vá para https://shell.azure.comou selecione o botão Iniciar Cloud Shell para abrir Cloud Shell em seu navegador.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. iniciar Cloud Shell em uma nova janelaLaunch Cloud Shell in a new window
Selecione o botão Cloud Shell na barra de menus superior direita na portal do Azure.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Botão Cloud Shell no portal do Azure

Para executar o código neste artigo em Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Iniciar Cloud Shell.Start Cloud Shell.

  2. Selecione o botão copiar em um bloco de código para copiar o código.Select the Copy button on a code block to copy the code.

  3. Cole o código na sessão de Cloud Shell selecionando Ctrl+Shift+v no Windows e Linux ou selecionando cmd+Shift+v no MacOS.Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Selecione Enter para executar o código.Select Enter to run the code.

Criar um grupo de recursosCreate a resource group

Um grupo de recursos é um contentor lógico em que os recursos do Azure, como aplicações Web, bases de dados e contas de armazenamento são implementados e geridos.A resource group is a logical container into which Azure resources like web apps, databases, and storage accounts are deployed and managed. Por exemplo, pode optar por eliminar todo o grupo de recursos num único passo simples mais tarde.For example, you can choose to delete the entire resource group in one simple step later.

No Cloud Shell, crie um grupo de recursos com o comando az group create.In the Cloud Shell, create a resource group with the az group create command. O exemplo seguinte cria um grupo de recursos com o nome myResourceGroup, na localização Europa Ocidental.The following example creates a resource group named myResourceGroup in the West Europe location. Para ver todas as localizações suportadas para o Serviço de Aplicações no Linux no escalão Básico, execute o comando az appservice list-locations --sku B1 --linux-workers-enabled.To see all supported locations for App Service on Linux in Basic tier, run the az appservice list-locations --sku B1 --linux-workers-enabled command.

az group create --name myResourceGroup --location "West Europe"

Geralmente, o grupo de recursos e os recursos são criados numa região perto de si.You generally create your resource group and the resources in a region near you.

Quando o comando for concluído, uma saída JSON mostra as propriedades do grupo de recursos.When the command finishes, a JSON output shows you the resource group properties.

Criar uma Base de Dados do Azure para o servidor PostgreSQLCreate an Azure Database for PostgreSQL server

Crie um servidor PostgreSQL com o comando az postgres server create no Cloud Shell.Create a PostgreSQL server with the az postgres server create command in the Cloud Shell.

No comando de exemplo a seguir, substitua <postgresql-name > por um nome de servidor exclusivo e substitua <admin-username > e <admin-password > pelas credenciais de usuário desejadas.In the following example command, replace <postgresql-name> with a unique server name, and replace <admin-username> and <admin-password> with the desired user credentials. As credenciais de utilizador são para a conta de administrador da base de dados.The user credentials are for the database administrator account. O nome do servidor é utilizado como parte do ponto final do PostgreSQL (https://<postgresql-name>.postgres.database.azure.com), por isso, o nome tem de ser exclusivo em todos os servidores no Azure.The server name is used as part of your PostgreSQL endpoint (https://<postgresql-name>.postgres.database.azure.com), so the name needs to be unique across all servers in Azure.

az postgres server create --resource-group myResourceGroup --name <postgresql-name> --location "West Europe" --admin-user <admin-username> --admin-password <admin-password> --sku-name B_Gen4_1

Após criar o servidor da Base de Dados do Azure para PostgreSQL, a CLI do Azure mostra informações semelhantes ao exemplo seguinte:When the Azure Database for PostgreSQL server is created, the Azure CLI shows information similar to the following example:

{
  "administratorLogin": "<admin-username>",
  "fullyQualifiedDomainName": "<postgresql-name>.postgres.database.azure.com",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.DBforPostgreSQL/servers/<postgresql-name>",
  "location": "westus",
  "name": "<postgresql-name>",
  "resourceGroup": "myResourceGroup",
  "sku": {
    "capacity": 1,
    "family": "Gen4",
    "name": "B_Gen4_1",
    "size": null,
    "tier": "Basic"
  },
  < JSON data removed for brevity. >
}

Nota

Lembre-se de que <admin-username > e <admin-password > para mais tarde.Remember <admin-username> and <admin-password> for later. Precisará deles para iniciar sessão no servidor e bases de dados Postgre.You need them to sign in to the Postgre server and its databases.

Criar regras de firewall para o servidor PostgreSQLCreate firewall rules for the PostgreSQL server

No Cloud Shell, execute o seguinte comando da CLI do Azure, para permitir o acesso à base de dados a partir dos recursos do Azure.In the Cloud Shell, run the following Azure CLI commands to allow access to the database from Azure resources.

az postgres server firewall-rule create --resource-group myResourceGroup --server-name <postgresql-name> --start-ip-address=0.0.0.0 --end-ip-address=0.0.0.0 --name AllowAllAzureIPs

Nota

Esta definição permite ligações de rede de todos os IPs na rede do Azure.This setting allows network connections from all IPs within the Azure network. Para utilização em produção, experimente configurar as regras de firewall o mais restritivas possível ao utilizar apenas os endereços IP de saída que a aplicação utiliza.For production use, try to configure the most restrictive firewall rules possible by using only the outbound IP addresses your app uses.

No Cloud Shell, execute o comando novamente para permitir o acesso do seu computador local, substituindo <your-IP-address > pelo seu endereço IP IPv4 local.In the Cloud Shell, run the command again to allow access from your local computer by replacing <your-ip-address> with your local IPv4 IP address.

az postgres server firewall-rule create --resource-group myResourceGroup --server-name <postgresql-name> --start-ip-address=<your-ip-address> --end-ip-address=<your-ip-address> --name AllowLocalClient

Ligar a aplicação Python base de dados de produçãoConnect Python app to production database

Nesta etapa, você conecta seu aplicativo Web Django ao banco de dados do Azure para o servidor PostgreSQL criado.In this step, you connect your Django web app to the Azure Database for PostgreSQL server you created.

Criar base de dados vazia e acesso de utilizadorCreate empty database and user access

No Cloud Shell, conecte-se ao banco de dados executando o comando a seguir.In the Cloud Shell, connect to the database by running the command below. Quando a sua palavra-passe de administrador lhe for pedida, utilize a mesma palavra-passe que especificou em Criar uma Base de Dados do Azure para servidor PostgreSQL.When prompted for your admin password, use the same password you specified in Create an Azure Database for PostgreSQL server.

psql -h <postgresql-name>.postgres.database.azure.com -U <admin-username>@<postgresql-name> postgres

Assim como no seu servidor Postgres local, crie a base de dados e um utilizador no servidor Postgres do Azure.Just like in your local Postgres server, create the database and user in the Azure Postgres server.

CREATE DATABASE pollsdb;
CREATE USER manager WITH PASSWORD 'supersecretpass';
GRANT ALL PRIVILEGES ON DATABASE pollsdb TO manager;

Escreva \q para sair do cliente PostgreSQL.Type \q to exit the PostgreSQL client.

Nota

Uma prática recomendada é criar utilizadores de base de dados com permissões restritas para aplicações específicas, em vez de utilizar o utilizador administrador.It's best practice to create database users with restricted permissions for specific applications, instead of using the admin user. Neste exemplo, o utilizador manager tem todos os privilégios para a base de dados pollsdb.In this example, the manager user has full privileges to only the pollsdb database.

Testar a conectividade da aplicação à base de dados de produçãoTest app connectivity to production database

Na janela do terminal local, altere as variáveis de ambiente do banco de dados (que você configurou anteriormente executando env.sh ou env. ps1):In the local terminal window, change the database environment variables (which you configured earlier by running env.sh or env.ps1):

# Bash
export DBHOST="<postgresql-name>.postgres.database.azure.com"
export DBUSER="manager@<postgresql-name>"
export DBNAME="pollsdb"
export DBPASS="supersecretpass"

# PowerShell
$Env:DBHOST = "<postgresql-name>.postgres.database.azure.com"
$Env:DBUSER = "manager@<postgresql-name>"
$Env:DBNAME = "pollsdb"
$Env:DBPASS = "supersecretpass"

Execute a migração do Django para o banco de dados do Azure e crie um usuário administrador.Run Django migration to the Azure database and create an admin user.

python manage.py migrate
python manage.py createsuperuser

Depois que o usuário administrador for criado, execute o servidor Django.Once the admin user is created, run the Django server.

python manage.py runserver

Vá para http://localhost:8000 novamente.Go to http://localhost:8000 in again. Você deverá ver a mensagem No polls are available. novamente.You should see the message No polls are available. again.

Vá para http://localhost:8000/admin e entre usando o usuário administrador que você criou e crie uma pergunta de pesquisa como antes.Go to http://localhost:8000/admin and sign in using the admin user you created, and create a poll question like before.

Executar o aplicativo python django nos serviços de aplicativos localmente

Vá para http://localhost:8000 novamente e veja a pergunta de sondagem exibida.Go to http://localhost:8000 again and see the poll question displayed. Agora, seu aplicativo está gravando dados no banco de dado no Azure.Your app is now writing data to the database in Azure.

Implementar no AzureDeploy to Azure

Neste passo, vai implementar a aplicação Python ligada ao Postgres no Serviço de Aplicações do Azure.In this step, you deploy the Postgres-connected Python application to Azure App Service.

Configurar o repositórioConfigure repository

Django valida o cabeçalho HTTP_HOST em solicitações de entrada.Django validates the HTTP_HOST header in incoming requests. Para que seu aplicativo Web Django funcione no serviço de aplicativo, você precisa adicionar o nome de domínio totalmente qualificado do aplicativo aos hosts permitidos.For your Django web app to work in App Service, you need to add the full-qualified domain name of the app to the allowed hosts. Abra azuresite/Settings. py e localize a configuração ALLOWED_HOSTS.Open azuresite/settings.py and find the ALLOWED_HOSTS setting. Altere a linha para:Change the line to:

ALLOWED_HOSTS = [os.environ['WEBSITE_SITE_NAME'] + '.azurewebsites.net', '127.0.0.1'] if 'WEBSITE_SITE_NAME' in os.environ else []

Em seguida, Django não dá suporte para a manutenção de arquivos estáticos em produção, portanto, você precisa habilitar isso manualmente.Next, Django doesn't support serving static files in production, so you need to enable this manually. Para este tutorial, você usa WhiteNoise.For this tutorial, you use WhiteNoise. O pacote WhiteNoise já está incluído em requirements. txt.The WhiteNoise package is already included in requirements.txt. Você só precisa configurar o Django para usá-lo.You just need to configure Django to use it.

Em azuresite/Settings. py, localize a configuração MIDDLEWARE e adicione o middleware whitenoise.middleware.WhiteNoiseMiddleware à lista, logo abaixo do middleware django.middleware.security.SecurityMiddleware.In azuresite/settings.py, find the MIDDLEWARE setting, and add the whitenoise.middleware.WhiteNoiseMiddleware middleware to the list, just below the django.middleware.security.SecurityMiddleware middleware. A configuração MIDDLEWARE deve ter a seguinte aparência:Your MIDDLEWARE setting should look like this:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    ...
]

No final de azuresite/Settings. py, adicione as linhas a seguir.At the end of azuresite/settings.py, add the following lines.

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

Para obter mais informações sobre como configurar o WhiteNoise, consulte a documentação do WhiteNoise.For more information on configuring WhiteNoise, see the WhiteNoise documentation.

Importante

A seção Configurações de banco de dados já segue a prática recomendada de segurança de usar variáveis de ambiente.The database settings section already follows the security best practice of using environment variables. Para obter as recomendações completas de implantação, consulte a documentação do Django: lista de verificação de implantação.For the complete deployment recommendations, see Django Documentation: deployment checklist.

Confirme suas alterações no repositório.Commit your changes into the repository.

git commit -am "configure for App Service"

Configurar usuário de implantaçãoConfigure deployment user

FTP e local Git podem implementar uma aplicação web do Azure ao utilizar um utilizador de implementação.FTP and local Git can deploy to an Azure web app by using a deployment user. Depois de configurar o seu utilizador de implementação, pode usá-lo para todas as suas implementações do Azure.Once you configure your deployment user, you can use it for all your Azure deployments. O nome de utilizador de implementação ao nível da conta e palavra-passe são diferentes das credenciais da sua subscrição do Azure.Your account-level deployment username and password are different from your Azure subscription credentials.

Para configurar o utilizador de implementação, execute o conjunto de usuários do az webapp deployment comando no Azure Cloud Shell.To configure the deployment user, run the az webapp deployment user set command in Azure Cloud Shell. Substitua <nome de utilizador > e <palavra-passe > com um nome de utilizador de utilizador de implementação e a palavra-passe.Replace <username> and <password> with a deployment user username and password.

  • O nome de utilizador tem de ser exclusivo no Azure e para local Git pushes, não pode conter o ' @' símbolo.The username must be unique within Azure, and for local Git pushes, must not contain the ‘@’ symbol.
  • A palavra-passe tem de ser, pelo menos, oito carateres de comprimento, com dois dos seguintes três elementos: letras, números e símbolos.The password must be at least eight characters long, with two of the following three elements: letters, numbers, and symbols.
az webapp deployment user set --user-name <username> --password <password>

A saída JSON mostra a palavra-passe como null.The JSON output shows the password as null. Se obtiver o erro 'Conflict'. Details: 409, altere o nome de utilizador.If you get a 'Conflict'. Details: 409 error, change the username. Se obtiver o 'Bad Request'. Details: 400 erro, utilize uma palavra-passe mais forte.If you get a 'Bad Request'. Details: 400 error, use a stronger password.

Registe o seu nome de utilizador e palavra-passe para utilizar para implementar as suas aplicações web.Record your username and password to use to deploy your web apps.

Criar plano do App ServiceCreate App Service plan

No Cloud Shell, crie um plano do Serviço de Aplicações no grupo de recursos com o comando az appservice plan create.In the Cloud Shell, create an App Service plan in the resource group with the az appservice plan create command.

O exemplo seguinte cria um plano do Serviço de Aplicações com o nome myAppServicePlan, no escalão de preços Básico (--sku B1) e num contentor do Linux (--is-linux).The following example creates an App Service plan named myAppServicePlan in the Basic pricing tier (--sku B1) and in a Linux container (--is-linux).

az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku B1 --is-linux

Quando o plano do Serviço de Aplicações tiver sido criado, a CLI do Azure mostra informações semelhantes ao seguinte exemplo:When the App Service plan has been created, the Azure CLI shows information similar to the following example:

{ 
  "adminSiteName": null,
  "appServicePlanName": "myAppServicePlan",
  "geoRegion": "West Europe",
  "hostingEnvironmentProfile": null,
  "id": "/subscriptions/0000-0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan",
  "kind": "linux",
  "location": "West Europe",
  "maximumNumberOfWorkers": 1,
  "name": "myAppServicePlan",
  < JSON data removed for brevity. >
  "targetWorkerSizeId": 0,
  "type": "Microsoft.Web/serverfarms",
  "workerTierName": null
} 

Criar uma aplicação WebCreate a web app

Crie uma aplicação Web no plano do Serviço de Aplicações myAppServicePlan.Create a web app in the myAppServicePlan App Service plan.

Na Cloud Shell, pode utilizar o comando az webapp create.In the Cloud Shell, you can use the az webapp create command. No exemplo a seguir, substitua <app-name> com um nome de aplicação globalmente exclusivo (os carateres válidos são a-z, 0-9 e -).In the following example, replace <app-name> with a globally unique app name (valid characters are a-z, 0-9, and -). O runtime está definido como PYTHON|3.7.The runtime is set to PYTHON|3.7. Para ver todos os runtimes suportados, execute az webapp list-runtimes --linux.To see all supported runtimes, run az webapp list-runtimes --linux.

# Bash
az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime "PYTHON|3.7" --deployment-local-git
# PowerShell
az --% webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime "PYTHON|3.7" --deployment-local-git

Quando a aplicação Web tiver sido criada, a CLI do Azure mostra informações semelhantes ao seguinte exemplo:When the web app has been created, the Azure CLI shows output similar to the following example:

Local git is configured with url of 'https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git'
{
  "availabilityState": "Normal",
  "clientAffinityEnabled": true,
  "clientCertEnabled": false,
  "cloningInfo": null,
  "containerSize": 0,
  "dailyMemoryTimeQuota": 0,
  "defaultHostName": "<app-name>.azurewebsites.net",
  "deploymentLocalGitUrl": "https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git",
  "enabled": true,
  < JSON data removed for brevity. >
}

Criou uma nova aplicação Web vazia, com a implementação de git ativada.You’ve created an empty new web app, with git deployment enabled.

Nota

O URL do Git remoto é apresentado na propriedade deploymentLocalGitUrl, com o formato https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git.The URL of the Git remote is shown in the deploymentLocalGitUrl property, with the format https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Guarde este URL, uma vez que vai precisar dele mais tarde.Save this URL as you need it later.

Configurar as variáveis de ambienteConfigure environment variables

No início do tutorial, definiu as variáveis de ambiente para ligar à base de dados PostgreSQL.Earlier in the tutorial, you defined environment variables to connect to your PostgreSQL database.

No Serviço de Aplicações, as variáveis de ambiente são definidas como definições da aplicação com o comando az webapp config appsettings set no Cloud Shell.In App Service, you set environment variables as app settings by using the az webapp config appsettings set command in Cloud Shell.

O exemplo seguinte especifica os detalhes de ligação de base de dados, como as definições da aplicação.The following example specifies the database connection details as app settings.

az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings DBHOST="<postgresql-name>.postgres.database.azure.com" DBUSER="manager@<postgresql-name>" DBPASS="supersecretpass" DBNAME="pollsdb"

Para obter informações sobre como essas configurações de aplicativo são acessadas em seu código, consulte acessar variáveis de ambiente.For information on how these app settings are accessed in your code, see Access environment variables.

Enviar para o Azure a partir do GitPush to Azure from Git

Regresse à janela de terminal local e adicione um remoto do Azure ao seu repositório Git local.Back in the local terminal window, add an Azure remote to your local Git repository. Substitua <deploymentLocalGitUrl-from-create-step> pelo URL do Git remoto que guardou em Criar uma aplicação Web.Replace <deploymentLocalGitUrl-from-create-step> with the URL of the Git remote that you saved from Create a web app.

git remote add azure <deploymentLocalGitUrl-from-create-step>

Envie para o remoto do Azure para implementar a sua aplicação com o comando seguinte.Push to the Azure remote to deploy your app with the following command. Quando lhe forem pedidas credenciais pelo Gestor de credenciais do Git, certifique-se de que introduz as credenciais que criou em configurar um utilizador de implementação, não as credenciais de que utiliza para iniciar sessão no portal do Azure.When prompted for credentials by Git Credential Manager, make sure that you enter the credentials you created in Configure a deployment user, not the credentials you use to sign in to the Azure portal.

git push azure master

Este comando pode demorar alguns minutos a ser executado.This command may take a few minutes to run. Ao executar, apresenta informações semelhantes ao exemplo seguinte:While running, it displays information similar to the following example:

Counting objects: 7, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (7/7), 775 bytes | 0 bytes/s, done.
Total 7 (delta 4), reused 0 (delta 0)
remote: Updating branch 'master'.
remote: Updating submodules.
remote: Preparing deployment for commit id '6520eeafcc'.
remote: Generating deployment script.
remote: Running deployment command...
remote: Python deployment.
remote: Kudu sync from: '/home/site/repository' to: '/home/site/wwwroot'
. 
. 
. 
remote: Deployment successful.
remote: App container will begin restart within 10 seconds.
To https://<app-name>.scm.azurewebsites.net/<app-name>.git 
   06b6df4..6520eea  master -> master

O servidor de implantação do serviço de aplicativo vê requirements. txt na raiz do repositório e executa o gerenciamento de pacotes do Python automaticamente após git push.The App Service deployment server sees requirements.txt in the repository root and runs Python package management automatically after git push.

Navegue até o aplicativo do AzureBrowse to the Azure app

Navegue até o aplicativo implantado.Browse to the deployed app. Demora algum tempo a iniciar porque o contentor precisa de ser transferido e executado quando a aplicação é solicitada pela primeira vez.It takes some time to start because the container needs to be downloaded and run when the app is requested for the first time. Se a página exceder o limite de tempo ou apresentar uma mensagem de erro, aguarde alguns minutos e atualize a página.If the page times out or displays an error message, wait a few minutes and refresh the page.

http://<app-name>.azurewebsites.net

Você deve ver a pergunta de pesquisa que você criou anteriormente.You should see the poll question that you created earlier.

O serviço de aplicativo detecta um projeto Django em seu repositório procurando um WSGI.py em cada subdiretório, que é criado pelo manage.py startproject por padrão.App Service detects a Django project in your repository by looking for a wsgi.py in each subdirectory, which is created by manage.py startproject by default. Quando ele encontra o arquivo, ele carrega o aplicativo Web Django.When it finds the file, it loads the Django web app. Para obter mais informações sobre como o serviço de aplicativo carrega aplicativos Python, consulte Configurar imagem interna do Python.For more information on how App Service loads Python apps, see Configure built-in Python image.

Acesse <app-name>.azurewebsites.net e entre usando o mesmo usuário administrador que você criou.Go to <app-name>.azurewebsites.net and sign in using same admin user you created. Se desejar, tente criar mais algumas perguntas de pesquisa.If you like, try creating some more poll questions.

Executar o aplicativo python django nos serviços de aplicativos no Azure

Parabéns!Congratulations! Você está executando um aplicativo Web Python (Django) no serviço Azure App para Linux.You're running a Python (Django) web app in Azure App Service for Linux.

Transmitir registos de diagnóstico em fluxoStream diagnostic logs

Pode acessar os registos de consola gerados a partir de dentro do contentor.You can access the console logs generated from inside the container. Em primeiro lugar, ativar o registo de contentor ao executar o seguinte comando no Cloud Shell:First, turn on container logging by running the following command in the Cloud Shell:

az webapp log config --name <app-name> --resource-group myResourceGroup --docker-container-logging filesystem

Assim que o registo de contentor está ativado, execute o seguinte comando para ver o fluxo de registo:Once container logging is turned on, run the following command to see the log stream:

az webapp log tail --name <app-name> --resource-group myResourceGroup

Se não vir os registos da consola imediatamente, volte a consultar dentro de 30 segundos.If you don't see console logs immediately, check again in 30 seconds.

Nota

Também pode inspecionar os ficheiros de registo do navegador em https://<app-name>.scm.azurewebsites.net/api/logs/docker.You can also inspect the log files from the browser at https://<app-name>.scm.azurewebsites.net/api/logs/docker.

Para parar a transmissão de registos em qualquer altura, escreva Ctrl + C.To stop log streaming at any time, type Ctrl+C.

Gerenciar seu aplicativo no portal do AzureManage your app in the Azure portal

Vá para a portal do Azure para ver o aplicativo que você criou.Go to the Azure portal to see the app you created.

No menu à esquerda, selecione serviços de aplicativose, em seguida, selecione o nome do seu aplicativo do Azure.From the left menu, select App Services, then select the name of your Azure app.

Navegue até seu aplicativo python django no portal do Azure

Por padrão, o portal mostra a página de visão geral do aplicativo.By default, the portal shows your app's Overview page. Esta página proporciona-lhe uma vista do desempenho da aplicação.This page gives you a view of how your app is doing. Aqui, também pode realizar tarefas de gestão básicas, como navegar, parar, iniciar, reiniciar e eliminar.Here, you can also perform basic management tasks like browse, stop, start, restart, and delete. Os separadores no lado esquerdo da página mostram as várias páginas de configuração que pode abrir.The tabs on the left side of the page show the different configuration pages you can open.

Gerencie seu aplicativo python django na página Visão geral no portal do Azure

Limpar recursosClean up resources

Nos passos anteriores, criou os recursos do Azure num grupo de recursos.In the preceding steps, you created Azure resources in a resource group. Se achar que não vai precisar destes recursos no futuro, execute o seguinte comando no Cloud Shell para eliminar o grupo de recursos:If you don't expect to need these resources in the future, delete the resource group by running the following command in the Cloud Shell:

az group delete --name myResourceGroup

Este comando pode demorar alguns minutos a ser executado.This command may take a minute to run.

Passos seguintesNext steps

Neste tutorial, ficou a saber como:In this tutorial, you learned how to:

  • Criar uma base de dados PostgreSQL no AzureCreate a PostgreSQL database in Azure
  • Conectar um aplicativo Web Python ao PostgreSQLConnect a Python web app to PostgreSQL
  • Implantar o aplicativo Web Python no AzureDeploy the Python web app to Azure
  • Ver registos de diagnósticoView diagnostic logs
  • Gerenciar o aplicativo Web Python no portal do AzureManage the Python web app in the Azure portal

Avance para o próximo tutorial para saber como mapear um nome DNS personalizado para seu aplicativo.Advance to the next tutorial to learn how to map a custom DNS name to your app.

Ou então, confira outros recursos:Or, check out other resources: