Uw toepassing voorbereiden voor implementatie

Voltooid

Stel uw toepassing voor productie in door enkele van de meest voorkomende instellingen bij te werken.

Bibliotheken toevoegen

U gebruikt twee nieuwe bibliotheken voor uw project:

  • whitenoise om statische bestanden te verwerken
  • psycopg2-binary verbinding maken met PostgreSQL, de productiedatabase

Installeer deze bibliotheken in uw project:

  1. Open requirements.txt in Visual Studio Code.

  2. Voeg de volgende code toe aan het einde van requirements.txt.

    whitenoise
    psycopg2-binary
    
  3. Open een nieuw terminalvenster door Terminal>New terminal te selecteren.

  4. Installeer de bibliotheken door de volgende opdracht uit te voeren.

    pip install -r requirements.txt
    

Een productie-instellingenbestand maken

De waarden die u toewijst aan twee kerninstellingen ALLOWED_HOSTS en DATABASESzijn afhankelijk van de omgeving die als host fungeert voor de toepassing. De standaardinstellingen zijn ontworpen voor ontwikkeling. Als u uw app in productie wilt uitvoeren, moet u ervoor zorgen dat deze instellingen correct worden bijgewerkt.

ALLOWED_HOSTS bepaalt de servers die uw toepassing mogen hosten of uitvoeren. U configureert deze zo dat de site kan worden uitgevoerd vanuit Azure en lokaal. DATABASESbevat de lijst met beschikbare verbindingsreeks s.

Een veelgebruikte manier om de instellingen te configureren, is door een tweede Python-bestand te maken dat de verzameling instellingen voor productie bevat. Vervolgens bepaalt een controle aan het einde van de settings.py of de productie-instellingen moeten worden gebruikt.

Nu maakt u een productie-instellingenbestand en voegt u de controle toe om te bepalen of uw toepassing wordt uitgevoerd in productie:

  1. Maak een nieuw bestand in een project. Noem het azure.py.

  2. Voeg de volgende code toe om te importeren os.

    from .settings import *
    import os
    
  3. Voeg de volgende code toe aan het einde van het bestand om te overschrijven ALLOWED_HOSTS om Azure toe te staan de toepassing te hosten en vertrouwde oorsprongen te definiëren.

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

    Notitie

    Azure-app Service maakt automatisch een omgevingsvariabele met de naam WEBSITE_HOSTNAME. Deze variabele bevat de URL voor uw website. U kunt deze variabele gebruiken om te bepalen of uw toepassing wordt uitgevoerd in Azure.

  4. Voeg de volgende code toe om de database verbindingsreeks voor PostgreSQL te configureren.

    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'] 
        }
    }
    

    Notitie

    In een latere stap stelt u de omgevingsvariabelen in Azure in.

    Notitie

    De databaseverbinding is bedoeld voor PostgreSQL Flexible Server. Stel voor PostgreSQL Single Server de USER waarde in op os.environ['DBUSER'] + "@" + hostname.

    De verbindingsreeks die u gebruikt, is voor PostgreSQL. U geeft de volgende informatie op:

    • ENGINE: Databasetype
    • NAAM: Naam van de database
    • HOST: URL voor de server
    • GEBRUIKER: Gebruikersnaam die moet worden gebruikt om verbinding te maken met de database
    • WACHTWOORD: Wachtwoord voor de gebruiker
  5. Voeg de volgende code toe aan de onderkant van het bestand om in te schakelen whitenoise, die statische bestanden zal verwerken.

    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 is middleware die gebruikersaanvragen leest voor statische bestanden zoals CSS of JavaScript. Het zorgt er ook voor dat de bestanden correct worden verwerkt. U hebt de middleware geregistreerd door de MIDDLEWARE matrix bij te werken. U hebt een STATIC_ROOT geregistreerd om statische bestanden op te slaan.

  6. Stel de SECRET_KEY met één gelezen uit omgevingsvariabelen in door de volgende code toe te voegen.

    SECRET_KEY = os.getenv('SECRET_KEY')
    

    U maakt een nieuwe geheime sleutel nadat u de toepassing hebt geïmplementeerd en opslaat als toepassingsinstelling.

  7. Schakel de foutopsporingsmodus uit door de volgende code toe te voegen.

    DEBUG = False
    

Uw app configureren voor het gebruik van het productie-instellingenbestand

Nu u het bestand met productie-instellingen hebt gemaakt, kunt u uw toepassing bijwerken om het bestand in productie te laden. Zoek eerst naar de WEBSITE_HOSTNAME omgevingsvariabele. Deze variabele geeft aan dat de toepassing wordt uitgevoerd in Azure.

  1. Open settings.py.

  2. Voeg de volgende code toe aan het einde van het bestand om de benodigde instellingen te overschrijven wanneer de app in productie wordt uitgevoerd.

    import os
    if 'WEBSITE_HOSTNAME' in os.environ: # Running on Azure
        from .azure import *
    
  3. Sla alle bestanden op door Bestand>opslaan te selecteren.

U hebt nu een Django-toepassing geconfigureerd voor productie.