Cette page a été traduite par l'API Cloud Translation.
Switch to English

Exécuter Django dans l'environnement flexible App Engine

Les applications Django dans l'environnement flexible App Engine s'exécutent sur la même infrastructure que tous les produits Google, ce qui améliore généralement leur évolutivité.

Dans ce tutoriel, nous partons du principe que vous connaissez bien le développement Web avec Django. Si vous débutez dans le développement avec Django, nous vous recommandons d'écrire votre première application Django avant de continuer. Dans ce tutoriel, 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 ou une version ultérieure.

Avant de commencer

  1. Connectez-vous à votre compte Google.

    Si vous n'en possédez pas déjà un, vous devez en créer un.

  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder à la page de sélection du projet

  3. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier que la facturation est activée pour votre projet.

  4. Activez Cloud SQL Admin API.

    Activer l'API

  5. Installez et initialisez le SDK Cloud.

Se connecter à gcloud

Procurez-vous de nouveaux identifiants pour utiliser l'API Cloud SQL Admin :

gcloud auth application-default login

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

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

Cloner l'application Django

Le code de l'exemple d'application Django se trouve dans le dépôt GoogleCloudPlatform/python-docs-samples sur GitHub.

  1. Vous pouvez soit télécharger l'exemple sous forme de fichier ZIP et l'extraire, soit cloner le dépôt sur votre ordinateur local à l'aide de la commande suivante :

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

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

Linux/macOS

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

Windows

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

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

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 Cloud SQL:
    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
    
  2. Rendez le proxy Cloud SQL exécutable:
    chmod +x cloud_sql_proxy
    

Linux 32 bits

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

macOS 64 bits

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

macOS 32 bits

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

Windows 64 bits

Pour télécharger le proxy Cloud SQL, effectuez un clic droit sur https://dl.google.com/cloudsql/cloud_sql_proxy_x64.exe, puis sélectionnez Enregistrer le lien sous Renommez le fichier en cloud_sql_proxy.exe.

Windows 32 bits

Pour télécharger le proxy Cloud SQL, effectuez un clic droit sur https://dl.google.com/cloudsql/cloud_sql_proxy_x86.exe, puis sélectionnez Enregistrer le lien sous Renommez le fichier en cloud_sql_proxy.exe.

Image Docker du proxy Cloud SQL

Pour plus de commodité, l'équipe Cloud SQL gère plusieurs images de conteneur contenant le proxy Cloud SQL destiné à nos clients. Pour plus d'informations sur ces images, consultez le dépôt proxy Cloud SQL sur GitHub. Vous pouvez extraire la dernière image sur votre ordinateur local en utilisant Docker avec la commande suivante :
docker pull gcr.io/cloudsql-docker/gce-proxy:1.19.1

Autres systèmes d'exploitation

Pour les autres systèmes d'exploitation qui ne sont pas répertoriés ici, vous pouvez compiler le proxy Cloud SQL à partir de la source.

Créer une instance Cloud SQL

  1. <a{: class="internal" l10n-attrs-original-order="href,track-type,track-name,track-metadata-position,track-metadata-end-goal,class,target" l10n-encrypted- href="lsL4NbV5FI0DRuRANJcTZKJysOQGKX761P3ItELRG1PjHEtGnUIGGfDSUdzN6k/z" target="_blank" track-metadata-end-goal="createInstance" track-metadata-position="body" track-internal="body" track-internal="body" track"internal > Créer une instance Cloud SQL pour PostgreSQL

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

    </a{:>
  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 le résultat, notez la valeur indiquée pour [CONNECTION_NAME].

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

Initialiser 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:5432

    Windows

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

    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 :

    Cloud Console

    1. Créez une base de données à l'aide de Cloud Console dans l'instance Cloud SQL polls-instance. Vous pouvez par exemple utiliser le nom polls.
    2. Créez un utilisateur à l'aide de Cloud Console dans l'instance Cloud SQL polls-instance.

    Client Postgres

    1. Dans un onglet de ligne de commande distinct, installez le client Postgres.
      sudo apt-get install postgresql
    2. Utilisez le client Postgres ou un programme similaire pour vous connecter à votre instance. Lorsque vous y êtes invité, saisissez le mot de passe racine que vous avez configuré.
      psql --host 127.0.0.1 --user postgres --password
    3. 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 [POSTGRES_USER] et [POSTGRES_PASSWORD] par le nom d'utilisateur et le mot de passe que vous souhaitez utiliser.
      CREATE DATABASE polls;
      CREATE USER [POSTGRES_USER] WITH PASSWORD '[POSTGRES_PASSWORD]';
      GRANT ALL PRIVILEGES ON DATABASE polls TO [POSTGRES_USER];
      GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO [POSTGRES_USER];
      

Configurer les paramètres de base de données

  1. Ouvrez mysite/settings.py pour y apporter des modifications.

    1. Pour utiliser MySQL au lieu de PostgreSQL :

      1. Suivez les instructions fournies dans les commentaires du fichier pour activer le pilote de base de données MySQL.
      2. Ouvrez le fichier requirements.txt et modifiez-le en suivant les instructions afin d'ajouter comme dépendance le pilote de base de données MySQL.
    2. Pour configurer la connexion à la base de données à la fois pour le déploiement d'App Engine et pour les tests locaux, renseignez <your-database-user> et <your-database-password> avec le nom d'utilisateur et le mot de passe que vous avez créés précédemment à l'étape Créer une instance Cloud SQL.

    3. Récupérez les valeurs des paramètres de l'instance à l'aide de la commande suivante :

      gcloud sql instances describe [YOUR_INSTANCE_NAME]
      
    4. Copiez la valeur connectionName du résultat en vue de l'étape suivante.

    5. Renseignez <your-cloudsql-connection-string> avec la valeur connectionName copiée à l'étape précédente.

  2. Enregistrez et fermez le fichier 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 comprenant au moins Python, pip et virtualenv.

  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, accédez à http://localhost:8000.

    http://localhost:8000
    

    La page affiche le texte suivant : "Hello, world. You're at the polls index." Le serveur Web Django qui s'exécute sur votre ordinateur diffuse les pages de l'exemple d'application.

  6. Appuyez sur Control+C pour arrêter le serveur Web local.

Utiliser la console d'administration Django

  1. Créez un super-utilisateur en spécifiant son nom d'utilisateur et son mot de passe.

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

    python manage.py runserver
    
  3. Dans votre navigateur, accédez à http://localhost:8000/admin.

    http://localhost:8000/admin
    
  4. Connectez-vous au site d'administration à l'aide du nom d'utilisateur et du mot de passe que vous avez spécifiés dans la commande createsuperuser.

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

Lorsque l'application est déployée sur Google Cloud, elle utilise le serveur Gunicorn. Comme ce serveur ne peut pas diffuser de contenu statique, l'app doit utiliser Cloud Storage pour diffuser le contenu statique.

  1. Créez un bucket Cloud Storage :

    1. Créez un bucket Cloud Storage et rendez-le lisible en mode public. Remplacez <your-gcs-bucket> par le nom de bucket de votre choix. Par exemple, vous pouvez utiliser votre ID de projet :

      gsutil mb gs://<your-gcs-bucket>
      gsutil defacl set public-read gs://<your-gcs-bucket>
      
    2. Rassemblez tout le contenu statique localement dans un seul dossier :

      python manage.py collectstatic
      
    3. Importez le contenu statique dans Cloud Storage :

      gsutil rsync -R static/ gs://<your-gcs-bucket>/static
      
  2. Modifiez le fichier settings.py :

    1. Ouvrez mysite/settings.py pour y apporter des modifications.

    2. Renseignez la valeur de STATIC_URL avec URL suivante, en prenant soin de remplacer <your-gcs-bucket> par le nom du bucket que vous avez créé précédemment.

      https://storage.googleapis.com/<your-gcs-bucket>/static/
      
    3. Enregistrez et fermez le fichier settings.py.

  3. Modifiez le fichier app.yaml :

    1. Ouvrez app.yaml pour y apporter des modifications.

    2. Exécutez la commande suivante à partir de la ligne de commande :

      gcloud sql instances describe [YOUR_INSTANCE_NAME]
      
    3. Copiez la valeur connectionName du résultat en vue de l'étape suivante.

    4. Remplacez <your-cloudsql-connection-string> par la valeur connectionName copiée à l'étape précédente.

    5. Enregistrez et fermez le fichier app.yaml.

  4. Déployer l'exemple d'application à l'aide de la commande suivante :

    gcloud app deploy
    

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

Afficher l'application exécutée dans Google Cloud

La commande suivante déploie l'application conformément aux instructions du fichier 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.

La requête est diffusée par un serveur Web s'exécutant dans l'environnement flexible App Engine.

Lors du déploiement de l'application, certains messages risquent de s'afficher plusieurs fois pendant que la plate-forme vérifie si l'application est en service. Ceci est normal. Attendez le message indiquant que la mise à jour de l'application est terminée.

Si vous modifiez votre application, vous pouvez déployez 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 devient alors la version par défaut. Les anciennes versions de votre application sont conservées, tout comme les instances de machine virtuelle (VM) associées. Toutes ces versions d'applications et instances de VM sont des ressources facturables. Pour réduire les coûts, supprimez toutes les versions de votre application sauf celle par défaut.

Pour apprendre comment supprimer les versions de votre application sauf celle par défaut, ou comment arrêter vos instances de VM, consultez la section Effectuer un nettoyage.

Production

Lorsque vous êtes prêt à diffuser le contenu en production, faites passer la variable DEBUG à False dans le fichier mysite/settings.py.

Comprendre le code

L'exemple d'application Django a été créé à l'aide des outils Django standards.

  • Les commandes suivantes 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 la base de données SQL :

    DATABASES = {
        'default': {
            # If you are using Cloud SQL for MySQL rather than PostgreSQL, set
            # 'ENGINE': 'django.db.backends.mysql' instead of the following.
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': 'polls',
            'USER': '<your-database-user>',
            'PASSWORD': '<your-database-password>',
            # For MySQL, set 'PORT': '3306' instead of the following. Any Cloud
            # SQL Proxy instances running locally must also be set to tcp:3306.
            'PORT': '5432',
        }
    }
    # In the flexible environment, you connect to CloudSQL using a unix socket.
    # Locally, you can use the CloudSQL proxy to proxy a localhost connection
    # to the instance
    DATABASES['default']['HOST'] = '/cloudsql/<your-cloudsql-connection-string>'
    if os.getenv('GAE_INSTANCE'):
        pass
    else:
        DATABASES['default']['HOST'] = '127.0.0.1'
  • Pour spécifier comment l'application diffuse du contenu statique, définissez la valeur de STATIC_URL dans le fichier settings.py :

    # Fill in your cloud bucket and switch which one of the following 2 lines
    # is commented to serve static content from GCS
    # STATIC_URL = 'https://storage.googleapis.com/<your-gcs-bucket>/static/'
    STATIC_URL = '/static/'
  • Le fichier app.yaml contient les informations de configuration concernant le déploiement dans l'environnement flexible :

    runtime: python
    env: flex
    entrypoint: gunicorn -b :$PORT mysite.wsgi
    
    beta_settings:
        cloud_sql_instances: <your-cloudsql-connection-string>
    
    runtime_config:
      python_version: 3