Tutorial: Implementar aplicativo Django com Serviço de Aplicações e Base de Dados do Azure para PostgreSQL - Servidor Flexível

APLICA-SE A: Base de Dados do Azure para PostgreSQL - Servidor Flexível

Neste tutorial você vai aprender a implementar uma aplicação Django em Azure usando Serviços de Aplicações e Base de Dados do Azure para PostgreSQL - Servidor Flexível em uma rede virtual.

Pré-requisitos

Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.

Este artigo requer que esteja a executar a versão 2.0 do Azure CLI ou mais tarde localmente. Para ver a versão instalada, execute o comando az --version. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI).

Terá de iniciar sessão na sua conta utilizando o comando de login az . Anote a propriedade id da saída de comando para o nome de subscrição correspondente.

az login

Se tiver várias subscrições, escolha a subscrição adequada na qual o recurso deve ser cobrado. Selecione o ID da subscrição específica na sua conta com o comando az account set. Substitua a propriedade de ID por subscrição da saída de login az para a sua subscrição no espaço reservado de iD de subscrição.

az account set --subscription <subscription id>

Clone ou descarregue o aplicativo de amostra

Clone o repositório de amostras:

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

Em seguida, entre na pasta:

cd djangoapp

A amostra do Djangoapp contém a aplicação de sondagens Django orientada por dados que obtém depois de escrever a sua primeira aplicação Django na documentação do Django. A aplicação completa é fornecida aqui para sua conveniência.

A amostra também é modificada para funcionar num ambiente de produção como Serviço de Aplicações:

  • As definições de produção estão no ficheiro azuresite/produção.py . Os detalhes do desenvolvimento estão em azuresite/configurações.py.
  • A aplicação utiliza definições de produção quando a variável ambiente DJANGO_ENV está definida para "produção". Você cria esta variável de ambiente mais tarde no tutorial juntamente com outros usados para a configuração da base de dados PostgreSQL.

Estas alterações são específicas para configurar Django para funcionar em qualquer ambiente de produção e não são particulares para Serviço de Aplicações. Para mais informações, consulte a lista de verificação de implementação do Django.

Criar um Servidor Flexível PostgreSQL numa nova rede virtual

Crie um servidor flexível privado e uma base de dados dentro de uma rede virtual (VNET) utilizando o seguinte comando:

# Create Flexible server in a VNET

az postgres flexible-server create --resource-group myresourcegroup --location westus2

Este comando executa as seguintes ações, que podem demorar alguns minutos:

  • Crie o grupo de recursos se já não existir.
  • Gera um nome de servidor se não for fornecido.
  • Crie uma nova rede virtual para o seu novo servidor postgreSQL. Tome nota do nome da rede virtual e nome da sub-rede criado para o seu servidor, uma vez que precisa de adicionar a aplicação web à mesma rede virtual.
  • Cria nome de utilizador de administração, senha para o seu servidor se não for fornecido. Tome nota do nome de utilizador e da palavra-passe para utilizar no passo seguinte.
  • Criar uma base de dados postgres que possa ser usada para o desenvolvimento. Pode executar o PSQL para ligar à base de dados para criar uma base de dados diferente.

Nota

Tome nota da sua palavra-passe que será gerada para si se não for fornecida. Se esquecer a palavra-passe, teria de redefinir a palavra-passe usando az postgres flexible-server update o comando

Desloque o código para Serviço de Aplicações do Azure

Nesta secção, cria-se um anfitrião de aplicações em Serviço de Aplicações aplicação, liga esta aplicação à base de dados postgres e, em seguida, implementa o seu código para esse anfitrião.

Crie a Serviço de Aplicações aplicação web numa rede virtual

No terminal, certifique-se de que está na raiz do repositório (djangoapp) que contém o código da aplicação.

Crie uma aplicação Serviço de Aplicações (o processo de anfitrião) com o az webapp up comando:

# Create a web app

az webapp up --resource-group myresourcegroup --location westus2 --plan DjangoPostgres-tutorial-plan --sku B1 --name <app-name>

# Enable VNET integration for web app.

# Replace <vnet-name> and <subnet-name> with the virtual network and subnet name that the flexible server is using.

az webapp vnet-integration add -g myresourcegroup -n  mywebapp --vnet <vnet-name> --subnet <subnet-name>

# Configure database information as environment variables

# Use the postgres server name , database name , username , password for the database created in the previous steps

az webapp config appsettings set --settings DJANGO_ENV="production" DBHOST="<postgres-server-name>.postgres.database.azure.com" DBNAME="postgres" DBUSER="<username>" DBPASS="<password>"
  • Para o --location argumento, utilize a mesma localização que fez para a base de dados na secção anterior.
  • Substitua <o nome> da aplicação por um nome único em todo o Azure (o ponto final do servidor é https://\<app-name>.azurewebsites.net). Os caracteres permitidos para <o nome> de aplicações são A-Z,-09 e .- Um bom padrão é usar uma combinação do nome da sua empresa e um identificador de aplicativos.
  • Crie o plano Serviço de AplicaçõesDjangoPostgres-tutorial-plano no nível básico de preços (B1), se não existir. --plan e --sku são opcionais.
  • Crie a aplicação Serviço de Aplicações se não existir.
  • Ativar o registo predefinido para a aplicação, se ainda não estiver ativada.
  • Faça o upload do repositório utilizando a implementação ZIP com automatização de construção ativada.
  • o comando de integração de vnets da webapp adiciona a aplicação web na mesma rede virtual que o servidor postgres.
  • O código da aplicação espera encontrar informação sobre bases de dados em muitas variáveis ambientais. Para definir variáveis ambientais em Serviço de Aplicações, cria "configurações de aplicações" com o comando de configuração de configurações de configuração de appsettings az webapp.

Dica

Muitos comandos Azure CLI cache parâmetros comuns, como o nome do grupo de recursos e Serviço de Aplicações plano, no ficheiro .azure/config. Como resultado, não precisa de especificar todos os mesmos parâmetros com comandos posteriores. Por exemplo, para recolocar a app depois de efetuar alterações, pode simplesmente correr az webapp up novamente sem quaisquer parâmetros.

Executar migrações de base de dados de Django

As migrações na base de dados de Django asseguram que o esquema na base de dados PostgreSQL na base de dados Azure corresponde às descritas no seu código.

  1. Abra uma sessão de SSH no navegador navegando para https://< app-name.scm.azurewebsites.net/webssh/host> e iniciar sessão com as suas credenciais de conta Azure (não as credenciais do servidor de base de dados).

  2. Na sessão SSH, executar os seguintes comandos (pode colar comandos usando Ctrl+Shift+V):

    cd site/wwwroot
    
    # Activate default virtual environment in App Service container
    source /antenv/bin/activate
    # Install packages
    pip install -r requirements.txt
    # Run database migrations
    python manage.py migrate
    # Create the super user (follow prompts)
    python manage.py createsuperuser
    
  3. O createsuperuser comando pede-lhe credenciais de super-20. Para efeitos deste tutorial, utilize o nome rootde utilizador predefinido , prima Enter para o endereço de e-mail para o deixar em branco e introduza postgres1 a palavra-passe.

Crie uma pergunta de sondagem na app

  1. Num browser, abra o URL http://< app-name.azurewebsites.net>. A aplicação deve exibir a mensagem "Não há sondagens disponíveis" porque ainda não há sondagens específicas na base de dados.

  2. Procure http://< app-name.azurewebsites.net/admin>. Inscreva-se utilizando credenciais de super-utilização da secção anterior (roote postgres1. Em Sondagens, selecione Adicionar ao Lado das Perguntas e criar uma pergunta de sondagem com algumas escolhas.

  3. Procure novamente http://< app-name.azurewebsites.net/> para confirmar que as perguntas são agora apresentadas ao utilizador. Responda a perguntas como quiser gerar alguns dados na base de dados.

Parabéns! Está a executar uma aplicação web Python Django em Serviço de Aplicações do Azure para o Linux, com uma base de dados de Postgres ativa.

Nota

Serviço de Aplicações deteta um projeto Django procurando um ficheiro wsgi.py em cada sub-página, o que manage.py startproject cria por padrão. Quando Serviço de Aplicações encontra esse ficheiro, carrega a aplicação web do Django. Para mais informações, consulte a imagem de Configure incorporada python.

Fazer alterações de código e reimplantar

Nesta secção, efetua alterações locais na aplicação e reimplante o código para Serviço de Aplicações. No processo, você configura um ambiente virtual Python que suporta o trabalho em curso.

Executar a aplicação localmente

Numa janela de terminal, execute os comandos seguintes. Certifique-se de seguir as instruções ao criar o superuser:

# Configure the Python virtual environment

python3 -m venv venv
source venv/bin/activate

# Install packages

pip install -r requirements.txt
# Run Django migrations

python manage.py migrate
# Create Django superuser (follow prompts)

python manage.py createsuperuser
# Run the dev server

python manage.py runserver

Uma vez que a aplicação web está totalmente carregada, o servidor de desenvolvimento Django fornece o URL da aplicação local na mensagem: "Iniciar o servidor de desenvolvimento em http://127.0.0.1:8000/. Saia do servidor com CTRL-BREAK".

Exemplo saída do servidor de desenvolvimento de Django

Teste a aplicação localmente com os seguintes passos:

  1. Aceda a http://localhost:8000 um browser, que deve exibir a mensagem "Não há sondagens disponíveis".

  2. http://localhost:8000/admin Entre e inscreva-se utilizando o utilizador de administração que criou anteriormente. Em Sondagens, selecione mais uma vez Adicionar ao Lado das Perguntas e criar uma pergunta de sondagem com algumas escolhas.

  3. Vá de http://localhost:8000 novo e responda à pergunta para testar a app.

  4. Pare o servidor Django pressionando ctrl+C.

Ao correr localmente, a aplicação está a usar uma base de dados local do Sqlite3 e não interfere com a sua base de dados de produção. Também pode utilizar uma base de dados postgreSQL local, se desejar, para simular melhor o seu ambiente de produção.

Atualizar a aplicação

Em polls/models.py, localizar a linha que começa com choice_text e alterar o max_length parâmetro para 100:

# Find this lie of code and set max_length to 100 instead of 200

choice_text = models.CharField(max_length=100)

Porque mudou o modelo de dados, crie uma nova migração de Django e migra a base de dados:

python manage.py makemigrations
python manage.py migrate

Executar novamente o servidor de desenvolvimento com python manage.py runserver e testar a aplicação em http://localhost:8000/admin:

Pare o servidor web de Django novamente com Ctrl+C.

Recolocar o código para Azure

Executar o seguinte comando na raiz do repositório:

az webapp up

Este comando utiliza os parâmetros em cache no ficheiro .azure/config . Como Serviço de Aplicações deteta que a app já existe, apenas redistribui o código.

Rerun migrações em Azure

Como fez alterações no modelo de dados, precisa de refazer as migrações na base de dados em Serviço de Aplicações.

Abra novamente uma sessão de SSH no navegador navegando para https://< app-name.scm.azurewebsites.net/webssh/host>. Em seguida, execute os seguintes comandos:

cd site/wwwroot

# Activate default virtual environment in App Service container

source /antenv/bin/activate
# Run database migrations

python manage.py migrate

App de revisão em produção

Navegue para http://< app-name.azurewebsites.net> e teste novamente a aplicação em produção. (Como só alterou o comprimento de um campo de base de dados, a alteração só é percetível se tentar introduzir uma resposta mais longa na criação de uma pergunta.)

Dica

Você pode usar django-armazenamento para armazenar ativos estáticos & de mídia no armazenamento Azure. Pode utilizar o Azure CDN para gzipping para ficheiros estáticos.

Gerencie a sua aplicação no portal do Azure

No portal do Azure, procure o nome da aplicação e selecione a aplicação nos resultados.

Navegue para a sua aplicação Python Django no portal do Azure

Por predefinição, o portal mostra a página geral da sua aplicação, que fornece uma visão geral do desempenho. Aqui, também pode executar tarefas básicas de gestão como navegar, parar, reiniciar e excluir. Os separadores no lado esquerdo da página mostram as várias páginas de configuração que pode abrir.

Gerencie a sua aplicação Python Django na página Overview na portal do Azure

Limpar os recursos

Se quiser manter a app ou continuar até ao próximo tutorial, avance para os próximos passos. Caso contrário, para evitar incorrer em encargos em curso, pode eliminar o grupo de recursos criado para este tutorial:

az group delete -g myresourcegroup

O comando utiliza o nome do grupo de recursos em cache no ficheiro .azure/config . Ao eliminar o grupo de recursos, também negoceia e elimina todos os recursos contidos no mesmo.

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: