Prepare seu aplicativo para implantação
Configure seu aplicativo para produção atualizando algumas das configurações mais comuns.
Adicionar bibliotecas
Você usará duas novas bibliotecas para seu projeto:
whitenoise
Para servir arquivos estáticospsycopg2-binary
para se conectar ao PostgreSQL, o banco de dados de produção
Instale essas bibliotecas em seu projeto:
No Visual Studio Code, abra requirements.txt.
Adicione o seguinte código ao final do requirements.txt.
whitenoise psycopg2-binary
Abra um novo painel de terminal selecionando Terminal>Novo terminal.
Instale as bibliotecas executando o seguinte comando.
pip install -r requirements.txt
Criar um arquivo de configurações de produção
Os valores atribuídos a duas configurações ALLOWED_HOSTS
principais e DATABASES
, dependem do ambiente que hospeda o aplicativo. As configurações padrão são projetadas para desenvolvimento. Para executar seu aplicativo em produção, verifique se essas configurações estão atualizadas corretamente.
ALLOWED_HOSTS
Controla os servidores que têm permissão para hospedar ou executar seu aplicativo. Você o configurará para permitir que o site seja executado a partir do Azure e localmente. DATABASES
Contém a lista de cadeias de conexão disponíveis.
Uma maneira comum de definir as configurações é criar um segundo arquivo Python que contém a coleção de configurações para produção. Em seguida, uma verificação no final do settings.py determina se as configurações de produção devem ser usadas.
Agora você criará um arquivo de configurações de produção e adicionará a verificação para determinar se seu aplicativo está sendo executado em produção:
Crie um novo arquivo dentro do projeto. Nomeie-o azure.py.
Adicione o seguinte código para importar
os
.from .settings import * import os
Adicione o seguinte código ao final do arquivo para substituir
ALLOWED_HOSTS
para permitir que o Azure hospede o aplicativo e defina origens confiáveis.ALLOWED_HOSTS = [os.environ['WEBSITE_HOSTNAME']] if 'WEBSITE_HOSTNAME' in os.environ else [] CSRF_TRUSTED_ORIGINS = ['https://'+ os.environ['WEBSITE_HOSTNAME']] if 'WEBSITE_HOSTNAME' in os.environ else []
Nota
O Serviço de Aplicativo do Azure cria automaticamente uma variável ambiental chamada
WEBSITE_HOSTNAME
. Esta variável contém o URL do seu website. Você pode usar essa variável para determinar se seu aplicativo está sendo executado no Azure.Adicione o código a seguir para configurar a cadeia de conexão de banco de dados para PostgreSQL.
hostname = os.environ['DBHOST'] DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': os.environ['DBNAME'], 'HOST': hostname + ".postgres.database.azure.com", 'USER': os.environ['DBUSER'], 'PASSWORD': os.environ['DBPASS'] } }
Nota
Você definirá as variáveis ambientais no Azure em uma etapa posterior.
Nota
A conexão de banco de dados é para PostgreSQL Flexible Server. Para PostgreSQL Single Server, defina o
USER
valor comoos.environ['DBUSER'] + "@" + hostname
.A cadeia de conexão que você está usando é para PostgreSQL. Você fornece as seguintes informações:
- ENGINE: Tipo de banco de dados
- NOME: Nome do banco de dados
- HOST: URL para o servidor
- USER: Nome de usuário a ser usado para se conectar ao banco de dados
- PASSWORD: Palavra-passe para o utilizador
Adicione o seguinte código à parte inferior do arquivo para habilitar
whitenoise
o , que servirá arquivos estáticos.MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', # Enables whitenoise for serving static files 'whitenoise.middleware.WhiteNoiseMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
WhiteNoise é um middleware que lê solicitações do usuário para arquivos estáticos, como CSS ou JavaScript. Ele também garante que os arquivos sejam servidos corretamente. Você registrou o middleware atualizando a
MIDDLEWARE
matriz. Você registrou umSTATIC_ROOT
para armazenar arquivos estáticos.Defina o
SECRET_KEY
com uma leitura das variáveis ambientais adicionando o código a seguir.SECRET_KEY = os.getenv('SECRET_KEY')
Você criará uma nova chave secreta depois de implantar o aplicativo e armazená-lo como uma configuração de aplicativo.
Desative o modo de depuração adicionando o código a seguir.
DEBUG = False
Configurar seu aplicativo para usar o arquivo de configurações de produção
Agora que você criou o arquivo de configurações de produção, pode atualizar seu aplicativo para carregar o arquivo em produção. Comece por procurar a WEBSITE_HOSTNAME
variável ambiental. Essa variável indica que o aplicativo está sendo executado no Azure.
Abra settings.py.
Adicione o seguinte código ao final do arquivo para substituir as configurações necessárias quando o aplicativo for executado em produção.
import os if 'WEBSITE_HOSTNAME' in os.environ: # Running on Azure from .azure import *
Salve todos os arquivos selecionando Arquivo>Salvar tudo.
Agora você configurou um aplicativo Django para produção.