Preparar seu aplicativo para implantação

Concluído

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áticos
  • psycopg2-binary para se conectar ao PostgreSQL, o banco de dados de produção

Instale essas bibliotecas no projeto:

  1. No Visual Studio Code, abra requirements.txt.

  2. Adicione o código a seguir ao final de requirements.txt.

    whitenoise
    psycopg2-binary
    
  3. Abra um novo painel de terminal selecionando Terminal>Novo terminal.

  4. 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:

  1. Crie um arquivo dentro de project. Dê a ele o nome azure.py.

  2. Adicione o código a seguir para importar os.

    from .settings import *
    import os
    
  3. 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.

  4. 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 para os.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
  5. 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 um STATIC_ROOT para armazenar arquivos estáticos.

  6. 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.

  7. 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.

  1. Abra settings.py.

  2. 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 *
    
  3. Salve todos os arquivos selecionando Arquivo>Salvar tudo.

Você acabou de configurar um aplicativo Django para produção.