Uw toepassing voorbereiden voor implementatie
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 verwerkenpsycopg2-binary
verbinding maken met PostgreSQL, de productiedatabase
Installeer deze bibliotheken in uw project:
Open requirements.txt in Visual Studio Code.
Voeg de volgende code toe aan het einde van requirements.txt.
whitenoise psycopg2-binary
Open een nieuw terminalvenster door Terminal>New terminal te selecteren.
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 DATABASES
zijn 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. DATABASES
bevat 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:
Maak een nieuw bestand in een project. Noem het azure.py.
Voeg de volgende code toe om te importeren
os
.from .settings import * import os
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.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 opos.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
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 eenSTATIC_ROOT
geregistreerd om statische bestanden op te slaan.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.
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.
Open settings.py.
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 *
Sla alle bestanden op door Bestand>opslaan te selecteren.
U hebt nu een Django-toepassing geconfigureerd voor productie.