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

Instale essas bibliotecas em seu projeto:

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

  2. Adicione o seguinte código ao final do requirements.txt.

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

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

  1. Crie um novo arquivo dentro do projeto. Nomeie-o azure.py.

  2. Adicione o seguinte código para importar os.

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

  4. 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 como os.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
  5. Adicione o seguinte código à parte inferior do arquivo para habilitar whitenoiseo , 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 um STATIC_ROOT para armazenar arquivos estáticos.

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

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

  1. Abra settings.py.

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

Agora você configurou um aplicativo Django para produção.