Preparar 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 fornecer arquivos estáticospsycopg2-binary
para se conectar ao PostgreSQL, o banco de dados de produção
Instale essas bibliotecas no projeto:
No Visual Studio Code, abra requirements.txt.
Adicione o código a seguir ao final de requirements.txt.
whitenoise psycopg2-binary
Abra um novo painel de terminal selecionando Terminal>Novo terminal.
Instale as bibliotecas executando o comando a seguir.
pip install -r requirements.txt
Criar um arquivo de configurações de produção
Os valores atribuídos às duas configurações principais, ALLOWED_HOSTS
e DATABASES
, dependem do ambiente que hospeda o aplicativo. As configurações padrão foram projetadas para desenvolvimento. Para executar seu aplicativo em produção, verifique se essas configurações foram atualizadas corretamente.
ALLOWED_HOSTS
controla os servidores que têm permissão para hospedar ou executar o aplicativo. Você vai configurá-lo para permitir que o site seja executado do Azure e localmente. DATABASES
contém a lista de cadeias de conexão disponíveis.
Uma forma comum de definir as configurações é criar um segundo arquivo Python que contenha 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 o aplicativo está em execução em produção:
Crie um arquivo dentro de project. Dê a ele o nome azure.py.
Adicione o código a seguir para importar
os
.from .settings import * import os
Adicione o seguinte código ao final do arquivo
ALLOWED_HOSTS
a ser substituído 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 []
Observação
O Serviço de Aplicativo do Azure cria automaticamente uma variável de ambiente chamada
WEBSITE_HOSTNAME
. Essa variável contém a URL do seu site. Você pode usar essa variável para determinar se o aplicativo está em execução no Azure.Adicione o código a seguir para configurar a cadeia de conexão de banco de dados para o 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'] } }
Observação
Você definirá as variáveis de ambiente no Azure em uma etapa posterior.
Observação
A conexão de banco de dados é do Servidor Flexível PostgreSQL. Em Servidor Único do PostgreSQL, defina o valor de
USER
paraos.environ['DBUSER'] + "@" + hostname
.A cadeia de conexão que você está usando destina-se ao PostgreSQL. Forneça as seguintes informações:
- MECANISMO: tipo de banco de dados
- NOME: nome do banco de dados
- HOST: URL do servidor
- USUÁRIO: nome de usuário a ser usado para se conectar ao banco de dados
- SENHA: senha do usuário
Adicione o código a seguir ao final do arquivo para habilitar
whitenoise
, que fornecerá 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')
O WhiteNoise é um middleware que lê as solicitações do usuário para arquivos estáticos, como CSS ou JavaScript. Ele também garante que os arquivos sejam fornecidos corretamente. Você registrou o middleware atualizando a matriz
MIDDLEWARE
. Registrou umSTATIC_ROOT
para armazenar arquivos estáticos.Defina a
SECRET_KEY
com uma leitura das variáveis de ambiente adicionando o código a seguir.SECRET_KEY = os.getenv('SECRET_KEY')
Você criará uma chave secreta depois de implantar o aplicativo e armazená-lo como uma configuração de aplicativo.
Desabilite o modo de depuração adicionando o código a seguir.
DEBUG = False
Configurar o aplicativo para usar o arquivo de configurações de produção
Agora que você criou o arquivo de configurações de produção, atualize o aplicativo para carregar o arquivo em produção. Comece procurando a variável de ambiente WEBSITE_HOSTNAME
. Essa variável indica que o aplicativo está em execução no Azure.
Abra settings.py.
Adicione o código a seguir 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.
Você acabou de configurar um aplicativo Django para produção.