Préparer votre application pour le déploiement
Configurez votre application pour la production en mettant à jour certains des paramètres les plus courants.
Ajouter des bibliothèques
Vous allez utiliser deux nouvelles bibliothèques pour votre projet :
whitenoise
pour servir les fichiers statiquespsycopg2-binary
pour vous connecter à PostgreSQL, la base de données de production
Installez ces bibliothèques dans votre projet :
Dans Visual Studio Code, ouvrez requirements.txt.
Ajoutez le code suivant à la fin de requirements.txt.
whitenoise psycopg2-binary
Sélectionnez Terminal>Nouveau terminal pour ouvrir un nouveau volet de terminal.
Installez les bibliothèques en exécutant la commande suivante.
pip install -r requirements.txt
Créer un fichier de paramètres de production
Les valeurs que vous affectez à deux paramètres de base, ALLOWED_HOSTS
et DATABASES
, dépendent de l’environnement qui héberge l’application. Les paramètres par défaut sont conçus pour le développement. Pour exécuter votre application en production, vérifiez que ces paramètres sont correctement mis à jour.
ALLOWED_HOSTS
contrôle les serveurs autorisés à héberger ou à exécuter votre application. Vous allez le configurer pour autoriser le site à s’exécuter localement et à partir d’Azure. DATABASES
contient la liste des chaînes de connexion disponibles.
Un moyen courant de configurer les paramètres consiste à créer un deuxième fichier Python contenant la collection de paramètres pour la production. Ensuite, une vérification à la fin de settings.py détermine s’il faut utiliser les paramètres de production.
Vous allez maintenant créer un fichier de paramètres de production et ajouter la vérification pour déterminer si votre application s’exécute en production :
Créez un fichier dans project. Nommez-le azure.py.
Ajoutez le code suivant pour importer
os
.from .settings import * import os
Ajoutez le code suivant à la fin du fichier pour écraser
ALLOWED_HOSTS
et permettre à Azure d’héberger l’application et de définir les origines approuvées.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 []
Notes
Azure App Service crée automatiquement une variable d’environnement nommée
WEBSITE_HOSTNAME
. Cette variable contient l’URL de votre site web. Vous pouvez utiliser cette variable pour déterminer si votre application s’exécute sur Azure.Ajoutez le code suivant pour configurer la chaîne de connexion de base de données pour 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'] } }
Notes
Vous définirez les variables d’environnement sur Azure lors d’une étape ultérieure.
Notes
La connexion de base de données est pour Serveur flexible PostgreSQL. Pour Serveur unique PostgreSQL, définissez la valeur
USER
suros.environ['DBUSER'] + "@" + hostname
.La chaîne de connexion que vous utilisez est pour PostgreSQL. Indiquez les informations suivantes :
- ENGINE : type de base de données
- NAME : nom de la base de données
- HOST : URL du serveur
- USER : nom d’utilisateur à utiliser pour se connecter à la base de données
- PASSWORD : mot de passe de l’utilisateur
Ajoutez le code suivant en bas du fichier pour activer
whitenoise
qui servira les fichiers statiques.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 est un intergiciel qui lit les demandes de fichiers statiques (CSS, JavaScript, etc.) émises par les utilisateurs. Il garantit également que les fichiers sont correctement servis. Vous avez inscrit l’intergiciel en mettant à jour le tableau
MIDDLEWARE
. Vous avez inscrit unSTATIC_ROOT
pour stocker les fichiers statiques.Ajoutez le code suivant pour définir
SECRET_KEY
avec une lecture des variables d’environnement.SECRET_KEY = os.getenv('SECRET_KEY')
Vous créerez une nouvelle clé secrète une fois l’application déployée et la stockerez en tant que paramètre d’application.
Ajoutez le code suivant pour désactiver le mode débogage.
DEBUG = False
Configurer votre application pour utiliser le fichier de paramètres de production
Maintenant que vous avez un fichier de paramètres de production, vous pouvez mettre à jour votre application pour charger ce fichier en production. Commencez par rechercher la variable d’environnement WEBSITE_HOSTNAME
. Cette variable indique que l’application s’exécute sur Azure.
Ouvrez settings.py.
Ajoutez le code suivant à la fin du fichier pour remplacer les paramètres nécessaires quand l’application s’exécute en production.
import os if 'WEBSITE_HOSTNAME' in os.environ: # Running on Azure from .azure import *
Enregistrez tous les fichiers en sélectionnant Fichier>Enregistrer tout.
Vous venez de configurer une application Django pour la production.