Förbereda programmet för distribution

Slutförd

Konfigurera ditt program för produktion genom att uppdatera några av de vanligaste inställningarna.

Lägga till bibliotek

Du använder två nya bibliotek för projektet:

  • whitenoise för att hantera statiska filer
  • psycopg2-binary för att ansluta till PostgreSQL, produktionsdatabasen

Installera biblioteken i projektet:

  1. Öppna requirements.txt i Visual Studio Code.

  2. Lägg till följande kod i slutet av requirements.txt.

    whitenoise
    psycopg2-binary
    
  3. Öppna ett nytt terminalfönster genom att välja Terminal>Ny terminal.

  4. Installera biblioteken genom att köra följande kommando.

    pip install -r requirements.txt
    

Skapa en fil för produktionsinställningar

De värden som du tilldelar till två kärninställningar och ALLOWED_HOSTS DATABASES, beror på miljön som är värd för programmet. Standardinställningarna är utformade för utveckling. Om du vill köra appen i produktion kontrollerar du att de här inställningarna uppdateras korrekt.

ALLOWED_HOSTS styr de servrar som tillåts vara värdar för eller köra ditt program. Du konfigurerar den så att webbplatsen kan köras från Azure och lokalt. DATABASESinnehåller listan över tillgängliga anslutningssträng.

Ett vanligt sätt att konfigurera inställningarna är att skapa en andra Python-fil som innehåller samlingen med inställningar för produktion. Sedan avgör en kontroll i slutet av settings.py om du vill använda produktionsinställningarna.

Nu ska du skapa en fil för produktionsinställningar och lägga till kontrollen för att avgöra om programmet körs i produktion:

  1. Skapa en ny fil i projektet. Ge den namnet azure.py.

  2. Lägg till följande kod för att importera os.

    from .settings import *
    import os
    
  3. Lägg till följande kod i slutet av filen för att åsidosätta ALLOWED_HOSTS så att Azure kan vara värd för programmet och definiera betrott ursprung.

    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 []
    

    Kommentar

    Azure App Service skapar automatiskt en miljövariabel med namnet WEBSITE_HOSTNAME. Den här variabeln innehåller URL:en för webbplatsen. Du kan använda den här variabeln för att avgöra om programmet körs i Azure.

  4. Lägg till följande kod för att konfigurera databasen anslutningssträng för 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'] 
        }
    }
    

    Kommentar

    Du ställer in miljövariablerna i Azure i ett senare steg.

    Kommentar

    Databasanslutningen är för PostgreSQL – flexibel server. För PostgreSQL – enskild server anger du värdet USER till os.environ['DBUSER'] + "@" + hostname.

    Den anslutningssträng du använder är för PostgreSQL. Du anger följande information:

    • MOTOR: Databastyp
    • NAMN: Namnet på databasen
    • VÄRD: URL för servern
    • ANVÄNDARE: Användarnamn som ska användas för att ansluta till databasen
    • LÖSENORD: Lösenord för användaren
  5. Lägg till följande kod längst ned i filen för att aktivera whitenoise, som ska hantera statiska filer.

    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 är mellanprogram som läser användarbegäranden för statiska filer som CSS eller JavaScript. Det säkerställer också att filerna hanteras korrekt. Du har registrerat mellanprogrammet genom att uppdatera matrisen MIDDLEWARE . Du har registrerat en STATIC_ROOT för att lagra statiska filer.

  6. SECRET_KEY Ange med en läsning från miljövariabler genom att lägga till följande kod.

    SECRET_KEY = os.getenv('SECRET_KEY')
    

    Du skapar en ny hemlig nyckel när du har distribuerat programmet och lagrar det som en programinställning.

  7. Inaktivera felsökningsläget genom att lägga till följande kod.

    DEBUG = False
    

Konfigurera appen så att den använder filen med produktionsinställningar

Nu när du har skapat filen med produktionsinställningar kan du uppdatera programmet för att läsa in filen i produktion. Börja med att WEBSITE_HOSTNAME leta efter miljövariabeln. Den här variabeln anger att programmet körs i Azure.

  1. Öppna settings.py.

  2. Lägg till följande kod i slutet av filen för att åsidosätta de nödvändiga inställningarna när appen körs i produktion.

    import os
    if 'WEBSITE_HOSTNAME' in os.environ: # Running on Azure
        from .azure import *
    
  3. Spara alla filer genom att välja Spara>alla filer.

Nu har du konfigurerat ett Django-program för produktion.