Déployer une application web Python (Django ou Flask) avec PostgreSQL dans Azure

Dans ce tutoriel, vous allez déployer une application web Python pilotée par les données (Django ou Flask) sur Azure App Service avec le service de base de données relationnelle Azure Database pour PostgreSQL. Azure App Service prend en charge Python dans un environnement serveur Linux.

An architecture diagram showing an App Service with a PostgreSQL database in Azure.

Pour suivre ce didacticiel, vous aurez besoin des éléments suivants :

Passer à la fin

Avec Azure Developer CLI installé, vous pouvez déployer un exemple d’application entièrement configuré présenté dans ce tutoriel et le voir s’exécuter dans Azure. Exécutez simplement les commandes suivantes dans un répertoire de travail vide :

azd auth login
azd init --template msdocs-flask-postgresql-sample-app
azd up

Exemple d’application

Des exemples d’applications Python utilisant l’infrastructure Flask et Django sont fournis pour vous aider à suivre ce tutoriel. Pour les déployer sans les exécuter localement, ignorez cette partie.

Pour lancer l’application localement, assurez-vous que Python 3.7 ou version ultérieure et PostgreSQL sont installés localement. Ensuite, clonez la branche starter-no-infra de l’exemple de référentiel et passez à la racine de référentiel.

git clone -b starter-no-infra https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app
cd msdocs-flask-postgresql-sample-app

Créez un fichier .env comme montré ci-dessous en utilisant le fichier .env.sample comme guide. Définissez la valeur de DBNAME sur le nom d’une base de données existante dans votre instance PostgreSQL locale. Définissez les valeurs de DBHOST, DBUSER et DBPASS en fonction de votre instance PostgreSQL locale.

DBNAME=<database name>
DBHOST=<database-hostname>
DBUSER=<db-user-name>
DBPASS=<db-password>

Créez un environnement virtuel pour l’application :

py -m venv .venv
.venv\scripts\activate

Installez les dépendances :

pip install -r requirements.txt

Exécutez l’exemple d’application avec la commande suivante :

# Run database migration
flask db upgrade
# Run the app at http://127.0.0.1:5000
flask run

1. Créer les instances App Service et PostgreSQL

git clone https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app.git

Dans cette étape, vous créez les ressources Azure. La procédure indiquée dans ce tutoriel permet de créer un ensemble de ressources sécurisées par défaut qui incluent App Service et Azure DB pour PostgreSQL. Pour le processus de création, vous devez spécifier :

  • Le nom de l’application web. Il s’agit du nom utilisé dans le cadre du nom DNS de votre application web sous la forme https://<app-name>.azurewebsites.net.
  • La Région du monde où l’application sera physiquement exécutée.
  • La Pile du runtime de l’application. C’est là que vous sélectionnez la version de Python à utiliser pour votre application.
  • Le Plan d’hébergement de l’application. Il s’agit du niveau tarifaire qui inclut l’ensemble des fonctionnalités et la scalabilité de l’application.
  • Le groupe de ressources pour l’application. Un groupe de ressources vous permet de regrouper (dans un conteneur logique) toutes les ressources Azure nécessaires à l’application.

Connectez-vous au portail Azure et procédez comme suit pour créer vos ressources Azure App Service.

Étape 1 : Dans le Portail Azure :

  1. Entrez « base de données d’application web » dans la barre de recherche située en haut du portail Azure.
  2. Sélectionnez l’élément intitulé Application web + Base de données sous le titre Place de marché. Vous pouvez également accéder directement à l’Assistant de création.

A screenshot showing how to use the search box in the top tool bar to find the Web App + Database creation wizard (Flask).

Étape 2 : Dans la page Créer une application web + base de données, remplissez le formulaire comme suit.

  1. Groupe de ressources → Sélectionnez Créer et utilisez le nom msdocs-python-postgres-tutorial.
  2. Région → Toute région Azure près de chez vous.
  3. Nommsdocs-python-postgres-XYZ, où XYZ est un ensemble de trois caractères aléatoires quelconques. Ce nom doit être unique au sein d’Azure.
  4. Runtime stackPython 3.10.
  5. Base de donnéesPostgreSQL - Serveur Flexible est sélectionné par défaut comme moteur de base de données. Les noms du serveur et de la base de données sont aussi définis par défaut sur les valeurs appropriées.
  6. Plan d’hébergementDe base. Vous pourrez ultérieurement effectuer un scale-up vers un niveau tarifaire de production.
  7. Sélectionnez Revoir + créer.
  8. Une fois la validation terminée, sélectionnez Créer.

A screenshot showing how to configure a new app and database in the Web App + Database wizard (Flask).

Étape 3 : Le déploiement prend quelques minutes. Une fois le déploiement terminé, sélectionnez le bouton Accéder à la ressource. L’application App Service s’ouvre automatiquement, mais les ressources suivantes sont créées :

  • Groupe de ressources → Conteneur pour toutes les ressources créées.
  • Plan App Service → Définit les ressources de calcul pour App Service. Un plan Linux est créé sur le niveau De base.
  • App Service → Représente votre application et s’exécute dans le plan App Service.
  • Réseau virtuel → Intégré à l’application App Service, isole le trafic réseau principal.
  • Azure Database pour PostgreSQL - Serveur flexible → Accessible uniquement à partir du réseau virtuel. Une base de données et un utilisateur sont créés pour vous sur le serveur.
  • Zone DNS privée → active la résolution DNS du serveur PostgreSQL dans le réseau virtuel.

A screenshot showing the deployment process completed (Flask).

2. Vérifier les paramètres de connexion

L’assistant de création a généré les variables de connectivité pour vous déjà en tant que paramètres d’application. Les paramètres d’application sont un moyen de préserver les secrets de connexion hors de votre référentiel de code. Lorsque vous êtes prêt à déplacer vos secrets vers un emplacement plus sécurisé, voici un article concernant le stockage dans Azure Key Vault.

Étape 1 : Dans le menu de gauche de la page App Service, sélectionnez Configuration.

A screenshot showing how to open the configuration page in App Service (Flask).

Étape 2 : Dans l’onglet Paramètres de l’application de la page Configuration, vérifiez que AZURE_POSTGRESQL_CONNECTIONSTRING est présent. Ce sera injecté dans l’environnement runtime en tant que variable d’environnement.

A screenshot showing how to see the autogenerated connection string (Flask).

Étape 3 : À l’invite du terminal ou de commandes, exécutez le script Python suivant pour générer un secret unique : python -c 'import secrets; print(secrets.token_hex())'. Copiez la valeur de sortie pour l’utiliser à l’étape suivante.

3. Déployer l’exemple de code

Dans cette étape, vous allez configurer le déploiement GitHub avec GitHub Actions. Cette méthode fait partie des nombreuses façons de déployer sur App Service, mais elle permet également de bénéficier d’une intégration continue dans votre processus de déploiement. Par défaut, chaque git push dans votre dépôt GitHub lance l’action de build et de déploiement.

Étape 1 : Dans une nouvelle fenêtre de navigateur :

  1. Connectez-vous à votre compte GitHub.
  2. Accédez à https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app.
  3. Sélectionnez Fork.
  4. Sélectionnez Créer la duplication.

A screenshot showing how to create a fork of the sample GitHub repository (Flask).

Étape 2 : Dans la page GitHub, ouvrez Visual Studio Code dans le navigateur en appuyant sur la touche ..

A screenshot showing how to open the Visual Studio Code browser experience in GitHub (Flask).

Étape 3 :Dans Visual Studio Code, ouvrez azureproject/production.py dans l’explorateur. Consultez les variables d’environnement utilisées dans l’environnement de production, notamment les paramètres d’application que vous avez vus dans la page de configuration.

A screenshot showing Visual Studio Code in the browser and an opened file (Flask).

Étape 4 : De retour dans la page App Service, sélectionnez Centre de déploiement dans le menu de gauche.

A screenshot showing how to open the deployment center in App Service (Flask).

Étape 5 : Dans la page Centre de déploiement :

  1. Dans Source, sélectionnez GitHub. Par défaut, GitHub Actions est sélectionné en tant que fournisseur de build.
  2. Connectez-vous à votre compte GitHub et suivez l’invite pour autoriser Azure.
  3. Dans Organisation, sélectionnez votre compte.
  4. Dans Référentiel, sélectionnez msdocs-flask-postgresql-sample-app.
  5. Dans Branche, sélectionnez principal.
  6. Conservez l’option sélectionnée par défaut pour Ajouter un flux de travail.
  7. Sous Type d’authentification, sélectionnez Identité affectée par l’utilisateur.
  8. Dans le menu principal, sélectionnez Enregistrer. App Service valide un fichier de flux de travail dans le référentiel GitHub choisi, au sein du répertoire .github/workflows.

A screenshot showing how to configure CI/CD using GitHub Actions (Flask).

Étape 6 : Dans la page Centre de déploiement :

  1. Sélectionnez Journaux d’activité. Une exécution de déploiement a déjà démarré.
  2. Dans l’élément de journal de l’exécution du déploiement, sélectionnez Générer/Déployer des journaux.

A screenshot showing how to open deployment logs in the deployment center (Flask).

Étape 7 : Vous êtes dirigé vers votre référentiel GitHub où vous voyez que l’action GitHub est en cours d’exécution. Le fichier de workflow définit deux étapes distinctes : la build et le déploiement. Attendez que l’exécution de GitHub affiche l’état Terminé. Cela prend environ 5 minutes.

A screenshot showing a GitHub run in progress (Flask).

Vous rencontrez des problèmes ? Consultez le Guide de résolution des problèmes.

4. Générer le schéma de la base de données

Avec la base de données PostgreSQL protégée par le réseau virtuel, le moyen le plus simple d’exécuter les migrations de base de données Flask est de le faire dans une session SSH avec le conteneur App Service.

Étape 1 : De retour dans la page App Service, dans le menu de gauche,

  1. Sélectionnez SSH.
  2. Sélectionnez Go.

A screenshot showing how to open the SSH shell for your app from the Azure portal (Flask).

Étape 2 : Dans le terminal SSH, exécutez flask db upgrade. Si cela réussit, App Service se connecte avec succès à la base de données. Seules les modifications apportées aux fichiers dans /home peuvent être conservées au-delà des redémarrages d’application. Les modifications effectuées en dehors de /home ne sont pas conservées.

A screenshot showing the commands to run in the SSH shell and their output (Flask).

5. Accéder à l’application

Étape 1 : Dans la page App Service :

  1. Dans le menu de gauche, sélectionnez Vue d’ensemble.
  2. Sélectionnez l’URL de votre application. Vous pouvez également naviguer directement vers https://<app-name>.azurewebsites.net.

A screenshot showing how to launch an App Service from the Azure portal (Flask).

Étape 2 : Ajoutez quelques restaurants à la liste. Félicitations, vous exécutez une application web Flask dans Azure App Service, avec une connectivité sécurisée vers Azure Database pour PostgreSQL.

A screenshot of the Flask web app with PostgreSQL running in Azure showing restaurants and restaurant reviews (Flask).

6. Diffuser les journaux de diagnostic

Azure App Service capture tous les messages qui s’affichent sur la console pour vous aider à diagnostiquer les problèmes liés à votre application. L’exemple d’application inclut des instructions print() pour montrer cette fonctionnalité, comme ci-dessous.

@app.route('/', methods=['GET'])
def index():
    print('Request for index page received')
    restaurants = Restaurant.query.all()
    return render_template('index.html', restaurants=restaurants)

Étape 1 : Dans la page App Service :

  1. Dans le menu de gauche, sélectionnez Journaux App Service.
  2. Sous Application Logging, sélectionnez Système de fichiers.
  3. Dans le menu principal, sélectionnez Enregistrer.

A screenshot showing how to enable native logs in App Service in the Azure portal.

Étape 2 : Dans le menu de gauche, sélectionnez Flux de journaux. Les journaux de votre application (notamment les journaux de plateforme et ceux issus de l’intérieur du conteneur) apparaissent.

A screenshot showing how to view the log stream in the Azure portal.

Apprenez-en davantage sur la journalisation dans les applications Python dans la série sur la configuration d’Azure Monitor pour votre application Python.

7. Nettoyer les ressources

Lorsque vous avez terminé, vous pouvez supprimer toutes les ressources de votre abonnement Azure en supprimant le groupe de ressources.

Étape 1 : Dans la barre de recherche située en haut du Portail Microsoft Azure :

  1. Entrez le nom du groupe de ressources.
  2. Sélectionnez le groupe de ressources.

A screenshot showing how to search for and navigate to a resource group in the Azure portal.

Étape 2 : Sur la page Groupe de ressources, sélectionnez Supprimer un groupe de ressources.

A screenshot showing the location of the Delete Resource Group button in the Azure portal.

Étape 3 :

  1. Entrer le nom du groupe de ressources pour confirmer la suppression.
  2. Sélectionnez Supprimer.

A screenshot of the confirmation dialog for deleting a resource group in the Azure portal. :

1. Créer des ressources Azure et déployer un exemple d’application

Dans cette étape, vous allez créer les ressources Azure et déployer un exemple d’application dans App Service sur Linux. La procédure indiquée dans ce tutoriel permet de créer un ensemble de ressources sécurisées par défaut qui incluent App Service et Azure DB pour PostgreSQL.

  1. Si ce n’est déjà fait, clonez la branche starter-no-infra de l’exemple de référentiel dans un terminal local.

    git clone -b starter-no-infra https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app
    cd msdocs-flask-postgresql-sample-app
    

    Cette branche clonée est votre point de départ. Il contient une simple application Flask de lecteur de données.

  2. Depuis la racine du référentiel, exécutez azd init.

    azd init --template python-app-service-postgresql-infra
    
  3. Lorsque vous y êtes invité, fournissez les réponses suivantes :

    Question Réponse
    Le répertoire actif n’est pas vide. Voulez-vous initialiser un projet ici dans «<votre-répertoire>» ? Y
    Que souhaitez-vous faire de ces fichiers ? Conserver mes fichiers existants inchangés
    Entrer un nom pour le nouvel environnement Tapez un nom unique. Le modèle azd utilise ce nom dans le cadre du nom DNS de votre application web dans Azure (<app-name>.azurewebsites.net). Les caractères alphanumériques et les traits d’union sont autorisés.
  4. Exécutez la commande azd up pour provisionner les ressources Azure nécessaires et déployer le code de l’application. Si vous n’êtes pas déjà connecté à Azure, le navigateur s’ouvre et vous y invite. La commande azd up vous invite également à sélectionner l’abonnement et l’emplacement souhaités sur lesquels effectuer le déploiement.

    azd up
    

    L’exécution de la commande azd up peut prendre quelques instants. Il compile et déploie également le code de votre application, mais vous allez modifier votre code ultérieurement pour utiliser App Service. Pendant son exécution, la commande fournit des messages sur le processus d’approvisionnement et de déploiement, y compris un lien vers le déploiement dans Azure. Une fois l’opération terminée, la commande affiche également un lien vers l’application de déploiement.

    Ce modèle azd contient des fichiers (azure.yaml et le répertoire infra) qui génèrent une architecture sécurisée par défaut avec les ressources Azure suivantes :

    • Groupe de ressources → Conteneur pour toutes les ressources créées.
    • Plan App Service → Définit les ressources de calcul pour App Service. Un plan Linux est spécifié dans le niveau B1.
    • App Service → Représente votre application et s’exécute dans le plan App Service.
    • Réseau virtuel → Intégré à l’application App Service, isole le trafic réseau principal.
    • Azure Database pour PostgreSQL - Serveur flexible → Accessible uniquement à partir du réseau virtuel. Une base de données et un utilisateur sont créés pour vous sur le serveur.
    • Zone DNS privée → active la résolution DNS du serveur PostgreSQL dans le réseau virtuel.
    • L’espace de travail Log Analytics → agit comme le conteneur cible de votre application pour expédier ses journaux d’activité, dans lequel vous pouvez également interroger les journaux.

2. Utiliser la chaîne de connexion de base de données

Le modèle azd utilisé a généré les variables de connectivité pour vous en tant que paramètres d’application et les restitue sur le terminal pour plus de facilité. Les paramètres d’application sont un moyen de préserver les secrets de connexion hors de votre référentiel de code.

  1. Dans la sortie azd, retrouvez les paramètres de l’application et les paramètres AZURE_POSTGRESQL_CONNECTIONSTRING et AZURE_REDIS_CONNECTIONSTRING. Pour préserver la sécurité des secrets, seuls les noms des paramètres sont affichés. Ils ressemblent à ceci dans la sortie azd :

     App Service app has the following settings:
    
             - AZURE_POSTGRESQL_CONNECTIONSTRING
             - AZURE_REDIS_CONNECTIONSTRING
             - FLASK_DEBUG
             - SCM_DO_BUILD_DURING_DEPLOYMENT
             - SECRET_KEY
     
  2. AZURE_POSTGRESQL_CONNECTIONSTRING contient la chaîne de connexion vers la base de données Postgres dans Azure et AZURE_REDIS_CONNECTIONSTRING contient la chaîne de connexion vers le cache Redis dans Azure. Vous devez les utiliser dans votre code pour vous y connecter. Ouvrez azureproject/production.py, supprimez les marques de commentaire dans les lignes suivantes et enregistrez le fichier :

    conn_str = os.environ['AZURE_POSTGRESQL_CONNECTIONSTRING']
    conn_str_params = {pair.split('=')[0]: pair.split('=')[1] for pair in conn_str.split(' ')}
    DATABASE_URI = 'postgresql+psycopg2://{dbuser}:{dbpass}@{dbhost}/{dbname}'.format(
        dbuser=conn_str_params['user'],
        dbpass=conn_str_params['password'],
        dbhost=conn_str_params['host'],
        dbname=conn_str_params['dbname']
    )
    

    Votre code d’application est désormais configuré pour se connecter à la base de données PostgreSQL dans Azure. Si vous le souhaitez, ouvrez app.py et voyez comment la variable d’environnement DATABASE_URI est utilisée.

  3. Dans le terminal, exécutez azd deploy.

    azd deploy
    

4. Générer le schéma de la base de données

Avec la base de données PostgreSQL protégée par le réseau virtuel, le moyen le plus simple d’exécuter les migrations de base de données Flask est de le faire dans une session SSH avec le conteneur App Service.

  1. Dans la sortie azd, retrouvez l’URL de la session SSH et accédez-y dans le navigateur. Cela ressemble à ceci dans la sortie :

     Open SSH session to App Service container at: https://<app-name>.scm.azurewebsites.net/webssh/host
     
  2. Dans le terminal SSH, exécutez flask db upgrade. Si cela réussit, App Service se connecte avec succès à la base de données.

    A screenshot showing the commands to run in the SSH shell and their output (Flask).

    Remarque

    Seules les modifications apportées aux fichiers dans /home peuvent être conservées au-delà des redémarrages d’application. Les modifications effectuées en dehors de /home ne sont pas conservées.

5. Accéder à l’application

  1. Dans la sortie azd, retrouvez l’URL de votre application et accédez-y dans le navigateur. L’URL ressemble à ceci dans la sortie AZD :

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: https://<app-name>.azurewebsites.net/
     
  2. Ajoutez quelques restaurants à la liste.

    Félicitations, vous exécutez une application web Flask dans Azure App Service, avec une connectivité sécurisée vers Azure Database pour PostgreSQL.

6. Diffuser les journaux de diagnostic

Azure App Service peut capturer les journaux de la console pour vous aider à diagnostiquer les problèmes liés à votre application. Pour plus de facilité, le modèle azd a déjà activé la journalisation sur le système de fichiers local, ainsi que leur expédition vers un espace de travail Log Analytics.

L’exemple d’application contient des instructions print() pour montrer cette fonctionnalité, comme illustré dans l’extrait suivant.

@app.route('/', methods=['GET'])
def index():
    print('Request for index page received')
    restaurants = Restaurant.query.all()
    return render_template('index.html', restaurants=restaurants)

Dans la sortie azd, retrouvez le lien pour diffuser en continu les journaux App Service et accédez-y dans le navigateur. Le lien ressemble à ceci dans la sortie azd :

Stream App Service logs at: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream

Apprenez-en davantage sur la journalisation dans les applications Python dans la série sur la configuration d’Azure Monitor pour votre application Python.

7. Nettoyer les ressources

Pour supprimer toutes les ressources Azure dans le présent environnement de déploiement, exécutez azd down.

azd down

Résolution des problèmes

Vous allez trouver ci-dessous les problèmes que vous pouvez rencontrer lorsque vous travaillez avec ce tutoriel et les étapes à suivre pour les résoudre.

Je n’arrive pas à me connecter à la session SSH

Si vous ne pouvez pas vous connecter à la session SSH, c’est que l’application elle-même n’a pas pu démarrer. Pour plus d’informations, consultez les journaux de diagnostic. Par exemple, si vous voyez une erreur du type KeyError: 'AZURE_POSTGRESQL_CONNECTIONSTRING', cela peut signifier que la variable d’environnement est manquante (vous pouvez avoir supprimé le paramètre de l’application).

Je reçois une erreur lors de l’exécution des migrations de bases de données

Si vous rencontrez des erreurs liées en lien avec la connexion à la base de données, vérifiez si les paramètres de l’application (AZURE_POSTGRESQL_CONNECTIONSTRING) ont été modifiés. Sans cette chaîne de connexion, la commande de migration ne peut pas communiquer avec la base de données.

Forum aux questions

Quel est le coût de cette configuration ?

Le prix des ressources créées est calculé comme suit :

  • Le plan App Service est créé au niveau De base. Il peut faire l’objet d’un scale-up ou d’un scale-down. Consultez la tarification App Service.
  • Le serveur flexible PostgreSQL est créé dans le plus bas niveau burstable Standard_B1ms, avec la taille minimale de stockage qui peut être augmentée ou diminuée. Consultez Tarifs d’Azure Database pour PostgreSQL.
  • Le réseau virtuel n’entraîne pas de frais, sauf si vous configurez des fonctionnalités supplémentaires, telles que le peering. Consultez Tarification du réseau virtuel Azure.
  • La zone DNS privée entraîne des frais minimes. Consultez la tarification d’Azure DNS.

Comment se connecter au serveur PostgreSQL sécurisé derrière le réseau virtuel avec d’autres outils ?

  • Pour un accès de base à partir d’un outil en ligne de commande, vous pouvez exécuter psql à partir du terminal SSH de l’application.
  • Pour vous connecter à partir d’un outil de bureau, votre ordinateur doit se trouver dans le réseau virtuel. Par exemple, il peut s’agir d’une machine virtuelle Azure connectée à l’un des sous-réseaux ou d’une machine dans un réseau local disposant d’une connexion VPN de site à site avec le réseau virtuel Azure.
  • Vous pouvez également intégrer Azure Cloud Shell au réseau virtuel.

Comment le développement d’applications locales fonctionne-t-il avec GitHub Actions ?

Grâce au fichier de flux de travail généré automatiquement à partir d’App Service comme exemple, chaque git push démarre une nouvelle exécution de build et de déploiement. À partir d’un clone local du référentiel GitHub, vous effectuez les mises à jour souhaitées et poussez vers GitHub. Par exemple :

git add .
git commit -m "<some-message>"
git push origin main

Comment l’exemple Django est-il configuré pour fonctionner sur Azure App Service ?

Notes

Si vous suivez ce tutoriel avec votre propre application, consultez la description du fichier requirements.txt dans le fichier README.md de chaque projet (Flask, Django) pour voir les packages dont vous aurez besoin.

L’exemple d’application Django configure les paramètres dans le fichier azureproject/production.py afin qu’il puisse s’exécuter dans Azure App Service. Ces modifications sont courantes pour déployer Django en production et non spécifiques à App Service.

  • Django valide l’en-tête HTTP_HOST dans les requêtes entrantes. L’exemple de code utilise la variable d’environnement WEBSITE_HOSTNAME dans App Service pour ajouter le nom de domaine de l’application au paramètre ALLOWED_HOSTS de Django.

    # Configure the domain name using the environment variable
    # that Azure automatically creates for us.
    ALLOWED_HOSTS = [os.environ['WEBSITE_HOSTNAME']] if 'WEBSITE_HOSTNAME' in os.environ else []
    
  • Django ne prend pas en charge le traitement des fichiers statiques en production. Pour ce tutoriel, vous utilisez WhiteNoise pour permettre le traitement des fichiers. Le package WhiteNoise a déjà été installé avec requirements.txt, et son intergiciel est ajouté à la liste.

    
    # WhiteNoise configuration
    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        # Add whitenoise middleware after the security middleware
        'whitenoise.middleware.WhiteNoiseMiddleware',
    

    Ensuite, les paramètres de fichier statique sont configurés en fonction de la documentation Django.

    SESSION_ENGINE = "django.contrib.sessions.backends.cache"
    STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
    

Pour plus d’informations, consultez Paramètres de production des applications Django.

Étapes suivantes

Passez au tutoriel suivant pour apprendre à sécuriser votre application avec un domaine personnalisé et un certificat.

Découvrez comment App Service exécute une application Python :