Share via


Tutoriel : Utilisation de Service Connector pour créer une application Django avec Postgres dans Azure App Service

Remarque

Dans ce tutoriel, vous utilisez le Connecteur de services qui simplifie le processus de connexion d’une application web à un service de base de données. Ce tutoriel est une modification du Tutoriel App Service, vous pouvez donc voir quelques similitudes. Consultez la section Configurer des variables d’environnement pour connecter la base de données pour voir à quel moment le connecteur de services est utilisé et comment il simplifie le processus de connexion indiqué dans le tutoriel App Service.

Ce tutoriel explique comment déployer une application web Python Django pilotée par les données sur Azure App Service et la connecter à une base de données Azure Database pour PostgreSQL – Serveur flexible.

Ce tutoriel explique comment utiliser Azure CLI pour effectuer les tâches suivantes :

  • Configurer votre environnement initial avec Python et Azure CLI
  • Créer une base de données de serveur flexible Azure Database pour PostgreSQL
  • Déployer du code pour Azure App Service et se connecter à un serveur flexible PostgreSQL
  • Mettre à jour votre code et effectuer un redéploiement
  • Afficher les journaux de diagnostic
  • Gérer l’application web dans le portail Azure.

Configurer votre environnement initial

  1. Installez Python 3.8 ou une version ultérieure. Pour vérifier si votre version de Python est 3.8 ou ultérieure, exécutez le code suivant dans une fenêtre de terminal :

    python3 --version
    
  2. Installez Azure CLI 2.30.0 ou version ultérieure. Pour vérifier si votre version d’Azure CLI est 2.30.0 ou ultérieure, exécutez la commande az --version. Si vous avez besoin d’une mise à niveau, exécutez az upgrade (nécessite la version 2.30.0+).

  3. Connectez-vous à Azure à l’aide de l’interface CLI avec az login. Cette commande ouvre un navigateur pour recueillir vos informations d’identification. Une fois l’exécution de la commande terminée, elle affiche une sortie JSON contenant des informations sur vos abonnements. Une fois connecté, vous pouvez exécuter des commandes Azure avec l’interface de ligne de commande Azure CLI pour utiliser des ressources de votre abonnement.

Cloner ou télécharger l’exemple d’application

Clonez l’exemple de dépôt :

git clone https://github.com/Azure-Samples/serviceconnector-webapp-postgresql-django.git

Accédez au dossier suivant :

cd serviceconnector-webapp-postgresql-django

Utilisez la branche Serveur flexible de l’exemple, qui comprend quelques modifications nécessaires, comme la façon dont l’URL du serveur de base de données est définie et l’ajout de 'OPTIONS': {'sslmode': 'require'} à la configuration de la base de données Django, comme requis par le serveur flexible Azure PostgreSQL.

git checkout flexible-server

L’exemple de dossier djangoapp contient l’application de sondage Django pilotée par les données que vous obtenez en suivant les étapes décrivant l’écriture de votre première application Django dans la documentation de Django. L’application terminée est fournie ici à des fins de commodité.

L’exemple est également modifié pour s’exécuter dans un environnement de production tel qu’App Service :

  • Les paramètres de production se trouvent dans le fichier azuresite/production.py. Les paramètres de développement se trouvent dans azuresite/settings.py.
  • L’application utilise les paramètres de production quand la variable d’environnement WEBSITE_HOSTNAME est définie. Azure App Service définit automatiquement cette variable avec l’URL de l’application web, par exemple msdocs-django.azurewebsites.net.

Les paramètres de production sont propres à la configuration de Django pour s’exécuter dans n’importe quel environnement de production. Ils ne sont pas propres à App Service. Pour plus d’informations, consultez la liste de contrôle du déploiement de Django. Pour obtenir plus d’informations sur certaines modifications, consultez également Paramètres de production pour Django sur Azure.

Vous rencontrez des problèmes ? Faites-le nous savoir.

Créer une base de données Postgres dans Azure

  1. Activez les paramètres de mise en cache avec Azure CLI pour que vous n’ayez pas besoin de fournir ces paramètres avec chaque commande. (Les valeurs mises en cache sont enregistrées dans le dossier .Azure.)

    az config param-persist on 
    
  2. Créez un groupe de ressources (vous pouvez modifier le nom, si vous le souhaitez). Le nom du groupe de ressources est mis en cache et appliqué automatiquement aux commandes suivantes.

    az group create --name ServiceConnector-tutorial-rg --location eastus
    
  3. Créez le serveur de base de données (le processus prend quelques minutes) :

    az postgres flexible-server create --sku-name Standard_B1ms --public-access all
    

    Si la commande az n’est pas reconnue, vérifiez qu’Azure CLI est installé, comme décrit dans Configurer votre environnement initial.

    La commande az postgres flexible-server create effectue les actions suivantes, qui prennent quelques minutes :

    • Créez un groupe de ressources par défaut s’il n’existe pas déjà de nom mis en cache.
    • Créez un serveur flexible PostgreSQL :
      • Par défaut, la commande utilise un nom généré comme server383813186. Vous pouvez spécifier votre propre nom avec le paramètre --name. Le nom doit être unique dans tout Azure.
      • La commande utilise le niveau tarifaire Standard_B1ms le moins coûteux. Omettez l'argument --sku-name pour utiliser le niveau Standard_D2s_v3 par défaut.
      • La commande utilise le groupe de ressources et l’emplacement mis en cache à partir de la commande az group create précédente, qui, dans cet exemple, est le groupe de ressources ServiceConnector-tutorial-rg dans la région eastus.
    • Créez un compte d’administrateur avec un nom d’utilisateur et un mot de passe. Vous pouvez spécifier ces valeurs directement avec les paramètres --admin-user et --admin-password.
    • Créer une base de données nommée flexibleserverdb par défaut. Vous pouvez spécifier un nom de base de données avec le paramètre --database-name.
    • Permet un accès public complet, que vous pouvez contrôler à l’aide du paramètre --public-access.
  4. Une fois l’exécution de la commande terminée, copiez la sortie JSON de la commande dans un fichier car vous aurez besoin des valeurs de la sortie plus loin dans ce tutoriel, en particulier l’hôte, le nom d’utilisateur et le mot de passe, ainsi que le nom de la base de données.

Vous rencontrez des problèmes ? Faites-le nous savoir.

Déployer l’image dans Azure App Service

Dans cette section, vous allez créer un hôte d’application dans l’application App Service, connecter cette application à la base de données Postgres, puis déployer votre code sur cet hôte.

Créer l’application App Service

  1. Dans le terminal, vérifiez que vous êtes dans le dossier référentiel djangoapp qui contient le code de l’application.

  2. Basculez vers la branche de l’exemple d’application flexible-server. Cette branche contient une configuration spécifique requise pour le serveur flexible PostgreSQL :

    git checkout flexible-server
    
  3. Exécutez la commande az webapp up suivante pour créer l’hôte App service pour l’application :

    az webapp up --name <app-name> --sku B1 
    

    Cette commande effectue les actions suivantes, qui peuvent prendre quelques minutes, en utilisant le groupe de ressources et l’emplacement mis en cache à partir de la commande précédente az group create(le groupe Python-Django-PGFlex-rg dans la région eastus de cet exemple).

    • Créez un plan App service dans le niveau tarifaire de base (B1). Vous pouvez omettre --sku pour utiliser les valeurs par défaut.
    • Créez l’application App Service.
    • Activez la journalisation par défaut pour l'application.
    • Chargez le dépôt à l’aide du déploiement ZIP avec l’automatisation de la génération activée.

Une fois le déploiement réussi, la commande génère une sortie JSON comme dans l’exemple suivant :

Capture d’écran du terminal montrant un exemple de sortie pour la commande az webapp up.

Vous rencontrez des problèmes ? Consultez d’abord le Guide de résolution des problèmes ; autrement, faites-le nous savoir.

Configurer des variables d’environnement pour connecter la base de données

Le code étant maintenant déployé sur App Service, l’étape suivante consiste à connecter l’application à la base de données Postgres dans Azure.

Le code de l’application s’attend à trouver des informations sur la base de données dans quatre variables d’environnement nommées AZURE_POSTGRESQL_HOST, AZURE_POSTGRESQL_NAME, AZURE_POSTGRESQL_USER et AZURE_POSTGRESQL_PASS.

Pour définir des variables d’environnement dans App Service, créez des « paramètres d’application » à l’aide de la commande az connection create suivante.

az webapp connection create postgres-flexible --client-type django

Le groupe de ressources, le nom de l’application et le nom de la base de données sont extraits des valeurs mises en cache. Vous devez fournir le mot de passe administrateur de votre base de données postgres pendant l’exécution de cette commande.

  • La commande crée les paramètres nommés « AZURE_POSTGRESQL_HOST », « AZURE_POSTGRESQL_NAME », « AZURE_POSTGRESQL_USER », « AZURE_POSTGRESQL_PASS » comme attendu par le code de l’application.
  • Si vous avez oublié vos informations d’identification administrateur, la commande vous guidera pour les réinitialiser.

Notes

Si vous voyez le message d’erreur « L’abonnement n’est pas inscrit pour utiliser Microsoft.ServiceLinker », exécutez az provider register -n Microsoft.ServiceLinker pour inscrire le fournisseur de ressources Service Connector et réexécutez la commande de connexion.

Dans votre code Python, vous accédez à ces paramètres comme à des variables d’environnement avec des instructions telles que os.environ.get('AZURE_POSTGRESQL_HOST'). Pour en savoir plus, consultez Accéder aux variables d’environnement.

Vous rencontrez des problèmes ? Consultez d’abord le Guide de résolution des problèmes ; autrement, faites-le nous savoir.

Exécuter des migrations de base de données Django

Les migrations de base de données Django garantissent que le schéma de la base de données PostgreSQL sur Azure correspond à ceux décrits de votre code.

  1. Exécutez az webapp ssh pour ouvrir une session SSH pour l’application Web dans le navigateur :

    az webapp ssh
    
  2. Dans la session SSH, exécutez les commandes suivantes :

    # Run database migrations
    python manage.py migrate
    
    # Create the super user (follow prompts)
    python manage.py createsuperuser
    

    Si vous rencontrez des erreurs liées à la connexion à la base de données, vérifiez les valeurs des paramètres d’application créés dans la section précédente.

  3. La commande createsuperuser vous invite à entrer vos informations d’identification de superutilisateur. Pour les besoins de ce tutoriel, utilisez le nom d’utilisateur par défaut root, appuyez sur Entrée pour l’adresse a-mail afin de laisser le champ vide, puis entrez Pollsdb1 en tant que mot de passe.

  4. Si vous voyez une erreur indiquant que la base de données est verrouillée, assurez-vous que vous avez exécuté la commande az webapp settings dans la section précédente. Sans ces paramètres, la commande de migration ne peut pas communiquer avec la base de données, ce qui provoque l’erreur.

Vous rencontrez des problèmes ? Consultez d’abord le Guide de résolution des problèmes ; autrement, faites-le nous savoir.

Créer une question de sondage dans l’application

  1. Ouvrez le site web de l’application. L’application doit afficher le message « Polls app » (Application de sondage) et « No polls are available » (Aucun sondage n’est disponible), car il n’existe pas encore de sondages spécifiques dans la base de données.

    az webapp browse
    

    Si le message « Erreur d’application » s’affiche, vous n’avez probablement pas créé les paramètres nécessaires lors de l’étape précédente « Configurer des variables d’environnement pour connecter la base de données », ou ces valeurs contiennent des erreurs. Exécutez la commande az webapp config appsettings list pour vérifier les paramètres.

    Après avoir mis à jour les paramètres pour corriger les erreurs, donnez à l’application une minute pour redémarrer, puis actualisez le navigateur.

  2. Accédez à la page d’administration de l’application en ajoutant /admin à l’URL, par exemple, http://<app-name>.azurewebsites.net/admin. Connectez-vous à l’aide des informations d’identification de superutilisateur Django de la section précédente (root et Pollsdb1). Sous Sondages, sélectionnez Ajouter en regard de Questions, puis créez une question de sondage avec quelques options.

  3. Revenez au site web principal (http://<app-name>.azurewebsites.net) pour vérifier que les questions sont à présent posées à l’utilisateur. Répondez aux questions en fonction de la manière dont vous voulez générer des données dans la base de données.

Félicitations ! Vous exécutez une application web Python Django dans Azure App Service pour Linux, avec une base de données Postgres active.

Notes

App Service détecte un projet Django en recherchant un fichier wsgi.py dans chaque sous-dossier que manage.py startproject crée par défaut. Quand App Service trouve ce fichier, il charge l’application web Django. Pour plus d’informations, consultez Configurer une image Python intégrée.

Nettoyer les ressources

Si vous souhaitez conserver l’application ou passer à d’autres tutoriels, allez directement à Étapes suivantes. Autrement, pour éviter des frais récurrents, supprimez le groupe de ressources créé pour ce tutoriel :

az group delete --name ServiceConnector-tutorial-rg --no-wait

En supprimant le groupe de ressources, vous désallouez et supprimez également toutes les ressources qu’il contient. Vérifiez bien que vous n’avez plus besoin des ressources du groupe avant d’exécuter la commande.

La suppression de toutes les ressources peut prendre un certain temps. L’argument --no-wait permet à la commande de revenir immédiatement.

Vous rencontrez des problèmes ? Faites-le nous savoir.

Étape suivante