Förbereda programmet för distribution
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 filerpsycopg2-binary
för att ansluta till PostgreSQL, produktionsdatabasen
Installera biblioteken i projektet:
Öppna requirements.txt i Visual Studio Code.
Lägg till följande kod i slutet av requirements.txt.
whitenoise psycopg2-binary
Öppna ett nytt terminalfönster genom att välja Terminal>Ny terminal.
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. DATABASES
innehå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:
Skapa en ny fil i projektet. Ge den namnet azure.py.
Lägg till följande kod för att importera
os
.from .settings import * import os
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.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
tillos.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
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 enSTATIC_ROOT
för att lagra statiska filer.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.
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.
Öppna settings.py.
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 *
Spara alla filer genom att välja Spara>alla filer.
Nu har du konfigurerat ett Django-program för produktion.