Préparer votre application pour le déploiement

Effectué

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 statiques
  • psycopg2-binary pour vous connecter à PostgreSQL, la base de données de production

Installez ces bibliothèques dans votre projet :

  1. Dans Visual Studio Code, ouvrez requirements.txt.

  2. Ajoutez le code suivant à la fin de requirements.txt.

    whitenoise
    psycopg2-binary
    
  3. Sélectionnez Terminal>Nouveau terminal pour ouvrir un nouveau volet de terminal.

  4. 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 :

  1. Créez un fichier dans project. Nommez-le azure.py.

  2. Ajoutez le code suivant pour importer os.

    from .settings import *
    import os
    
  3. 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.

  4. 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 sur os.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
  5. 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 un STATIC_ROOT pour stocker les fichiers statiques.

  6. 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.

  7. 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.

  1. Ouvrez settings.py.

  2. 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 *
    
  3. Enregistrez tous les fichiers en sélectionnant Fichier>Enregistrer tout.

Vous venez de configurer une application Django pour la production.