Exécuter Django dans l'environnement standard App Engine

Vous pouvez facilement commencer à développer des applications Django qui s'exécutent dans l'environnement standard Google App Engine. Comme App Engine s'adapte de manière dynamique en fonction du trafic, vous avez la garantie d'un dimensionnement efficace, à même de desservir l'ensemble de vos utilisateurs, qu'ils soient une poignée ou plusieurs millions.

Dans ce tutoriel, nous partons du principe que vous connaissez bien le développement Web avec Django. Nous allons vous guider dans le déploiement de l'application Django officielle, telle que décrite dans le tutoriel Écrire votre première application Django. Il est recommandé de parcourir ce tutoriel avant celui-ci, en particulier si vous débutez dans le développement avec Django. Les modèles de l'application représentent des sondages contenant des questions. Vous pouvez interagir avec ces modèles à l'aide de la console d'administration Django.

Ce tutoriel nécessite Python 3.7.

Avant de commencer

Cochez les étapes à mesure que vous les effectuez.

  1. check_box_outline_blank check_box Créez un projet dans la console Google Cloud Platform.
    Si ce n'est pas déjà fait, créez un projet maintenant. Les projets vous permettent de gérer toutes les ressources Google Cloud Platform pour votre application, y compris le déploiement, le contrôle des accès, la facturation et les services.
    1. Ouvrez la console GCP.
    2. Dans le menu déroulant en haut de l'écran, sélectionnez Créer un projet.
    3. Cliquez sur Afficher les options avancées. Sous App Engine location (Emplacement du site App Engine), sélectionnez un emplacement basé aux États-Unis.
    4. Attribuez un nom à votre projet.
    5. Notez l'ID du projet, qui peut être différent du nom du projet. Cet ID est utilisé dans les commandes et dans les configurations.
  2. check_box_outline_blank check_box Activez la facturation pour votre projetet souscrivez un essai gratuit.

    Si ce n'est pas encore fait, activez la facturation pour votre projet et inscrivez-vous à l'essai gratuit. L'activation de la facturation permet à l'application de consommer des ressources facturables, telles que l'exécution d'instances et le stockage de données. Pendant votre période d'essai gratuit, aucun service ne vous sera facturé.

  3. check_box_outline_blank check_box Installez le SDK Cloud.

    Si ce n'est pas déjà fait, installez le SDK Cloud et initialisez-le maintenant. Le SDK Cloud contient des outils et des bibliothèques qui vous permettent de créer et gérer des ressources sur GCP.

  4. check_box_outline_blank check_box Activez les API pour votre projet.

    Vous êtes alors dirigé vers la console GCP et les API utilisées par ce tutoriel sont automatiquement activées. L'API utilisée est la suivante : Google Cloud SQL.

Télécharger et exécuter l'application

Une fois les conditions préalables remplies, vous pouvez télécharger et déployer l'exemple d'application Django. Les sections suivantes vous guident dans la configuration, l'exécution et le déploiement de l'exemple.

Cloner l'application Django

Le code de l'exemple d'application Django se trouve dans le dépôt GitHub Google Cloud Platform python-docs-samples.

Clonez le dépôt sur votre machine locale :

git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git

Accédez au répertoire qui contient l'exemple de code :

Linux/macOS

cd python-docs-samples/appengine/standard_python37/django

Windows

cd python-docs-samples\appengine\standard_python37\django

Vous pouvez également télécharger l'exemple en tant que fichier zip et l'extraire.

Configurer votre environnement local

Une fois déployée, votre application communique avec votre instance Cloud SQL via le proxy Cloud SQL intégré à l'environnement App Engine. Notez toutefois que pour tester votre application en local, vous devez installer et utiliser une copie locale du proxy Cloud SQL dans votre environnement de développement.

Apprenez-en plus sur le proxy Cloud SQL.

Pour effectuer des tâches administratives de base sur votre instance Cloud SQL, vous pouvez utiliser le client MySQL.

Installer le proxy Cloud SQL

Téléchargez et installez le proxy Cloud SQL. Le proxy Cloud SQL se connecte à votre instance Cloud SQL lorsqu'il est exécuté en local.

Linux 64 bits

  1. Téléchargez le proxy :
    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
    
  2. Rendez le proxy exécutable :
    chmod +x cloud_sql_proxy
    

Linux 32 bits

  1. Téléchargez le proxy :
    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.386 -O cloud_sql_proxy
    
  2. Rendez le proxy exécutable :
    chmod +x cloud_sql_proxy
    

macOS 64 bits

  1. Téléchargez le proxy :
    curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64
    
  2. Rendez le proxy exécutable :
    chmod +x cloud_sql_proxy
    

macOS 32 bits

  1. Téléchargez le proxy :
    curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.386
    
  2. Rendez le proxy exécutable :
    chmod +x cloud_sql_proxy
    

Windows 64 bits

Cliquez avec le bouton droit de la souris sur https://dl.google.com/cloudsql/cloud_sql_proxy_x64.exe et sélectionnez Enregistrer le lien sous pour télécharger le proxy. Renommez le fichier en cloud_sql_proxy.exe.

Windows 32 bits

Cliquez avec le bouton droit sur https://dl.google.com/cloudsql/cloud_sql_proxy_x86.exe et sélectionnez Enregistrer le lien sous pour télécharger le proxy. Renommez le fichier en cloud_sql_proxy.exe.
Si votre système d'exploitation n'apparaît pas ici, vous pouvez également compiler le proxy à partir de la source.

Créer une instance Cloud SQL

  1. Créez une instance Cloud SQL pour MySQL de deuxième génération.

    Nommez-la polls-instance ou donnez-lui un nom similaire. La préparation de l'instance peut prendre quelques minutes. Une fois l'instance prête, elle est visible dans la liste des instances.

  2. Utilisez à présent le SDK Cloud pour exécuter la commande suivante, en remplaçant [YOUR_INSTANCE_NAME] par le nom de votre instance Cloud SQL.
    gcloud sql instances describe [YOUR_INSTANCE_NAME]

    Dans la sortie, notez la valeur indiquée pour [CONNECTION_NAME].

    La valeur de [CONNECTION_NAME] est au format [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME].

Initialisation de votre instance Cloud SQL

  1. Démarrez le proxy Cloud SQL en utilisant la valeur [CONNECTION_NAME] de l'étape précédente.

    Linux/macOS

    ./cloud_sql_proxy -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306

    Windows

    cloud_sql_proxy.exe -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306

    Remplacez [YOUR_INSTANCE_CONNECTION_NAME] par la valeur [CONNECTION_NAME] que vous avez enregistrée à l'étape précédente.

    Cette étape permet d'établir une connexion depuis votre ordinateur local vers votre instance Cloud SQL à des fins de test. N'arrêtez pas le proxy Cloud SQL lors du test local de votre application.

  2. Créez un utilisateur et une base de données Cloud SQL.

    Console GCP

    1. Créez une nouvelle base de données à l'aide de la console GCP pour votre instance polls-instance Cloud SQL. Par exemple, vous pouvez utiliser le nom polls.
    2. Créez un nouvel utilisateur à l'aide de la console GCP pour votre instance polls-instance Cloud SQL.

    Client MySQL

    1. Dans un onglet de ligne de commande distinct, connectez-vous à votre instance au moyen du client MySQL ou d'un programme similaire. Lorsque vous y êtes invité, saisissez le mot de passe racine que vous avez configuré.
      mysql --host 127.0.0.1 --user root --password
    2. Créez les bases de données, les utilisateurs et les autorisations d'accès nécessaires dans votre base de données Cloud SQL à l'aide des commandes suivantes. Remplacez [MYSQL_USER] et [MYSQL_PASSWORD] par le nom d'utilisateur et le mot de passe que vous souhaitez utiliser.
      CREATE DATABASE polls;
      CREATE USER '[MYSQL_USER]' IDENTIFIED BY '[MYSQL_PASSWORD]';
      GRANT ALL ON . TO '[MYSQL_USER]';

Configurer les paramètres de base de données

  1. Ouvrez mysite/settings.py pour le modifier.

  2. À deux endroits, remplacez [YOUR-USERNAME] et [YOUR-PASSWORD] par le nom d'utilisateur et le mot de passe de base de données créés précédemment à l'étape "Créer une instance Cloud SQL". Cette action facilite la configuration de la connexion à la base de données pour le déploiement d'App Engine et les tests locaux.

  3. Exécutez la commande suivante. Copiez la valeur affichée pour connectionName. Elle servira à l'étape suivante.

    gcloud sql instances describe [YOUR_INSTANCE_NAME]
    
  4. Remplacez [YOUR-CONNECTION-NAME] par la valeur de connectionName renvoyée à l'étape précédente.

  5. Remplacez [YOUR-DATABASE] par le nom que vous avez choisi lors de l'étape "Initialiser votre instance Cloud SQL".

  6. Fermez et enregistrez settings.py.

Exécuter l'application sur votre ordinateur local

  1. Pour exécuter l'application Django sur votre ordinateur local, configurez un environnement de développement Python incluant Python, pip et virtualenv. Pour obtenir les instructions correspondantes, consultez la page Configurer un environnement de développement Python pour Google Cloud Platform.

  2. Créez un environnement Python isolé et installez des dépendances :

    Linux/macOS

    virtualenv env
    source env/bin/activate
    pip install -r requirements.txt
    

    Windows

    virtualenv env
    env\scripts\activate
    pip install -r requirements.txt
    

  3. Exécutez les migrations Django pour configurer vos modèles :

    python manage.py makemigrations
    python manage.py makemigrations polls
    python manage.py migrate
    
  4. Démarrez un serveur Web local :

    python manage.py runserver
    
  5. Dans votre navigateur Web, saisissez cette adresse :

    http://localhost:8000
    

Vous devez voir une simple page Web affichant le texte suivant : "Hello, world. You're at the polls index." Les pages de l'exemple d'application sont diffusées par le serveur Web Django exécuté sur votre ordinateur. Lorsque vous êtes prêt à poursuivre, appuyez sur les touches Ctrl+C pour arrêter le serveur Web local.

Utiliser la console d'administration Django

  1. Créez un super-utilisateur :

    python manage.py createsuperuser
    
  2. Démarrez un serveur Web local :

    python manage.py runserver
    
  3. Saisissez cette adresse dans votre navigateur Web. Pour vous connecter au site d'administration, saisissez le nom d'utilisateur et le mot de passe que vous avez créés lorsque vous avez exécuté createsuperuser.

    http://localhost:8000/admin/
    

Déployer l'application dans l'environnement standard App Engine

  1. Rassemblez tout le contenu statique dans un seul dossier. Cette commande déplace tous les fichiers statiques de l'application dans le dossier spécifié par STATIC_ROOT dans settings.py :

    python manage.py collectstatic
    
  2. Importez l'application en exécutant la commande suivante dans le répertoire python-docs-samples/appengine/standard/django de l'application où se trouve le fichier app.yaml :

    gcloud app deploy
    

    Attendez le message vous informant que la mise à jour est terminée.

Voir l'application en cours d'exécution dans le cloud

Dans votre navigateur Web, saisissez cette adresse :

https://<your_project_id>.appspot.com

Cette fois, votre demande est traitée par un serveur Web s'exécutant dans l'environnement standard App Engine.

Cette commande déploie l'application comme décrit dans app.yaml et définit la version nouvellement déployée comme version par défaut, de sorte que celle-ci diffuse tout le nouveau trafic.

Pour mettre à jour l'application, vous pouvez déployer la version à jour en saisissant la même commande que celle utilisée pour le premier déploiement. Le nouveau déploiement crée une nouvelle version de votre application, qui est alors définie comme version par défaut. Les anciennes versions de votre application sont conservées. Sachez que toutes ces versions d'application sont des ressources facturables. Pour plus d'informations sur la suppression des versions autres que celles par défaut de votre application, consultez la section Effectuer un nettoyage.

Production

Lorsque vous êtes prêt à diffuser votre contenu en production, apportez les modifications de configuration suivantes :

  1. Dans mysite/settings.py, remplacez la valeur de la variable DEBUG par False.

Comprendre le code

L'exemple d'application Django a été créé à l'aide des outils Django standards. Ces commandes créent le projet et l'application "polls" :

django-admin startproject mysite
python manage.py startapp polls

Le fichier settings.py contient la configuration de votre base de données SQL. Le code settings.py utilise la variable d'environnement GAE_APPLICATION pour déterminer si l'application s'exécute sur App Engine ou sur votre ordinateur local. Lorsque l'application s'exécute sur App Engine, elle se connecte à l'hôte MySQL à l'aide du socket Unix /cloudsql. Lorsque l'application s'exécute sur votre ordinateur local, elle se connecte à l'hôte MySQL via TCP, qui nécessite un nom d'utilisateur et un mot de passe.

if os.getenv('GAE_APPLICATION', None):
    # Running on production App Engine, so connect to Google Cloud SQL using
    # the unix socket at /cloudsql/<your-cloudsql-connection string>
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '/cloudsql/[YOUR-CONNECTION-NAME]',
            'USER': '[YOUR-USERNAME]',
            'PASSWORD': '[YOUR-PASSWORD]',
            'NAME': '[YOUR-DATABASE]',
        }
    }
else:
    # Running locally so connect to either a local MySQL instance or connect to
    # Cloud SQL via the proxy. To start the proxy via command line:
    #
    #     $ cloud_sql_proxy -instances=[INSTANCE_CONNECTION_NAME]=tcp:3306
    #
    # See https://cloud.google.com/sql/docs/mysql-connect-proxy
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '127.0.0.1',
            'PORT': '3306',
            'NAME': '[YOUR-DATABASE]',
            'USER': '[YOUR-USERNAME]',
            'PASSWORD': '[YOUR-PASSWORD]',
        }
    }

Le fichier app.yaml contient des informations de configuration pour le déploiement sur App Engine. Ce fichier app.yaml spécifie qu'App Engine diffusera des fichiers statiques à partir du répertoire static/.

runtime: python37

handlers:
# This configures Google App Engine to serve the files in the app's static
# directory.
- url: /static
  static_dir: static/

# This handler routes all requests not caught above to your main app. It is
# required when static routes are defined, but can be omitted (along with
# the entire handlers section) when there are no static files defined.
- url: /.*
  script: auto
Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…