La compatibilité de la version 5.5 de PHP n'étant plus assurée par la communauté, nous vous recommandons vivement d'utiliser l'environnement d'exécution PHP 7 pour toute nouvelle application.

Déployer une application PHP 5

Déployez votre application pour l'importer et l'exécuter dans App Engine. Lorsque vous déployez vos applications, vous créez des versions de ces applications et de leurs services correspondants dans App Engine. Vous pouvez déployer des applications entières, y compris l'ensemble du code source et des fichiers de configuration, ou déployer et mettre à jour des versions ou des fichiers de configuration individuels.

Pour déployer vos applications par programmation, utilisez l'API Admin.

Si vous utilisez l'outil obsolète appcfg pour déployer des applications, consultez la documentation de référence sur appcfg pour en savoir plus sur son utilisation.

Avant de commencer

Avant de déployer votre application, vérifiez que les conditions suivantes sont remplies :

  • Le propriétaire du projet Cloud doit créer l'application App Engine.

  • Assurez-vous que votre compte utilisateur inclut les droits requis.

  • Autorisez Cloud Build à déployer des applications dans votre projet. Lorsque vous déployez votre application, App Engine utilise Cloud Build pour créer l'application dans un conteneur et déployer ce conteneur dans l'environnement d'exécution. Cloud Build n'étant pas autorisé à déployer des applications PHP 5 par défaut, vous devez en donner l'autorisation avant de déployer des applications.

Installer l'outil de ligne de commande gcloud

Pour déployer votre application avec l'outil gcloud, vous devez télécharger, installer et initialiser le SDK Cloud.

Télécharger le SDK

Si l'outil gcloud est déjà installé et que vous souhaitez le configurer pour utiliser un ID de projet Cloud différent de celui avec lequel vous avez effectué l'initialisation, consultez la page Gérer les configurations du SDK.

Utiliser un proxy

Si vous exécutez la commande de déploiement à partir d'un système utilisant un proxy HTTP ou HTTPS, vous devez configurer l'outil afin qu'il puisse communiquer via le proxy.

Exécutez les commandes suivantes pour configurer l'outil gcloud :

gcloud config set proxy/type [PROXY_TYPE]
gcloud config set proxy/address [PROXY_ADDRESS]
gcloud config set proxy/port [PROXY_PORT]

Vous pouvez également définir un nom d'utilisateur (username) et un mot de passe (password) pour le proxy. Pour en savoir plus, consultez la page gcloud config.

Déployer une application

Pour déployer votre application sur App Engine, utilisez la commande gcloud app deploy à partir de l'emplacement de vos fichiers de configuration (app.yaml, par exemple).

Choisir des ID de version uniques

Pour les instances avec scaling manuel, l'ID de votre version doit commencer par une lettre afin de les distinguer des ID d'instances numériques. Cela garantit que les requêtes sont acheminées vers la bonne destination et évite l'ambiguïté avec des formats d'URL tels que 123-dot-my-service.[REGION_ID].r.appspot.com, qui peuvent être interprétés de deux manières :

  • Si la version 123 existe, la requête est acheminée vers la version 123 du service my-service.
  • Si la version 123 n'existe pas, la requête est acheminée vers l'ID de l'instance 123 sur laquelle les versions du service my-service sont en cours d'exécution.

Vous pouvez attribuer n'importe quel type de nom aux versions des instances qui sont configurées pour l'autoscaling ou le scaling de base, car il n'est pas possible de les cibler.

gcloud app deploy [CONFIGURATION_FILES]

Par défaut, la commande déploie le fichier de configuration app.yaml à partir du répertoire actuel. Si vous exécutez la commande à partir d'un répertoire qui ne contient pas le app.yaml de votre application, ou si vous souhaitez déployer plusieurs applications, remplacez [CONFIGURATION_FILES] par le chemin d'accès d'un ou de plusieurs fichiers de configuration. Utilisez un seul espace pour séparer les chemins d'accès.

Options facultatives :

  • --version : spécifie un ID de version personnalisé. Par défaut, App Engine génère un ID de version.
  • --no-promote : déploie votre application sans acheminer automatiquement tout le trafic vers cette version. Par défaut, chaque version que vous déployez est automatiquement configurée de sorte à recevoir la totalité du trafic.
  • --project : spécifie un autre ID de projet Cloud que celui que vous avez initialisé par défaut dans l'outil gcloud.

Pour plus d'informations, consultez la documentation de référence gcloud app deploy ou exécutez gcloud help à partir de la ligne de commande.

Exemples :

gcloud app deploy
gcloud app deploy app.yaml dos.yaml index.yaml
gcloud app deploy --version [YOUR_VERSION_ID] --no-promote --project [YOUR_PROJECT_ID]

Si vous déployez une version qui spécifie le même ID qu'une version qui existe déjà sur App Engine, les fichiers que vous déployez écraseront la version existante. Cela peut s'avérer problématique si la version diffuse du trafic, car le trafic de votre application risque d'être interrompu. Pour éviter de perturber le trafic, déployez votre nouvelle version avec un ID de version différent, puis déplacez le trafic vers cette version.

Déployer des applications à plusieurs services

Lorsque votre application est intégrée à plusieurs services, vous pouvez déployer et mettre à jour simultanément certains services ou tous les services. Le déploiement de mises à jour des services peut inclure la mise à jour de fichiers de configuration individuels ou la mise à jour du code source dans les versions correspondantes.

Vous pouvez, par exemple, déployer et créer deux versions dans App Engine, chaque version s'exécutant sur son propre service. La première version sert de service d'interface et l'autre de backend de votre application. Vous pouvez ensuite déployer des fichiers de configuration individuels pour mettre à jour uniquement les paramètres d'un service. Vous avez également la possibilité de déployer une nouvelle version sur un service afin de mettre à jour le code source de l'interface, du backend ou des deux simultanément.

Conditions requises pour déployer plusieurs services

Les mêmes commandes de déploiement permettent de déployer et de mettre à jour les différents services de votre application si vous respectez les conditions requises suivantes :

  • Vous devez d'abord déployer une version de votre application sur le service default avant de pouvoir créer et déployer d'autres services.

  • Vous devez spécifier l'ID de votre service dans le fichier de configuration app.yaml de la version correspondante. Pour spécifier l'ID de service, vous devez inclure la définition de l'élément service: [YOUR_SERVICE_ID] dans chaque fichier de configuration. Par défaut, l'exclusion de cette définition d'élément de votre fichier de configuration déploie la version sur le service default.

  • Vous devez spécifier tous les fichiers de configuration app.yaml correspondants dans votre commande de déploiement pour déployer simultanément plusieurs services.

Déployer plusieurs services

À partir du répertoire racine de l'application où se trouvent les fichiers de configuration, exécutez la commande de déploiement et spécifiez les chemins d'accès et les noms de fichiers associés à chaque fichier app.yaml du service.

gcloud app deploy [CONFIGURATION_FILES]

[CONFIGURATION_FILES] désigne le nom et le chemin d'accès d'un ou de plusieurs fichiers de configuration, séparés par un espace blanc.

Exemple
gcloud app deploy main/app.yaml service1/app.yaml service2/app.yaml

Vous recevrez une vérification via la ligne de commande à chaque déploiement de service réussi.

Résoudre des problèmes

Voici des messages d'erreur courants que vous pouvez rencontrer :

PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
Si le projet Cloud n'inclut pas l'application App Engine requise, la commande gcloud app deploy peut échouer lorsqu'elle tente d'exécuter la commande gcloud app create. Seuls les comptes dotés du rôle "Propriétaire" disposent des autorisations nécessaires pour créer des applications App Engine.
Command not found
Si vous n'avez pas créé de liens symboliques pour les outils dev_appserver.sh lorsque vous avez installé le SDK App Engine (obsolète), vous devrez peut-être spécifier le chemin de répertoire complet pour exécuter l'outil, par exemple : [PATH_TO_CLOUD_SDK]/bin/dev_appserver.py.
Import Error
Si vous avez installé le SDK Cloud et le SDK App Engine d'origine, les entrées de votre variable PATH peuvent entrer en conflit et entraîner des erreurs d'importation. Si vous avez reçu des erreurs lors de l'exécution des commandes Cloud SDK, essayez explicitement d'utiliser le SDK App Engine d'origine. Vous pouvez déplacer l'entrée du SDK App Engine d'origine plus tôt dans votre variable PATH afin que ces commandes soient prioritaires. Vous pouvez également exécuter la commande en spécifiant le chemin d'accès complet au répertoire : [PATH_TO_APP_ENGINE_SDK]/dev_appserver.py.
[400] The first service (module) you upload to a new application must be the 'default' service (module)
Avant de pouvoir déployer et créer les différents services de votre application, vous devez d'abord déployer et créer le service default. Pour en savoir plus sur le déploiement d'une version sur le service default, consultez la section Déployer des applications à plusieurs services.
Too Many Versions (403)
App Engine limite le nombre de versions déployées de votre application. Ce nombre est différent pour les applications gratuites et les applications déployées. Vous pouvez utiliser Cloud Console pour supprimer une ancienne version, puis importer votre dernier code.
Autre erreur de déploiement
Si votre déploiement échoue, assurez-vous que l'API Cloud Build est activée dans votre projet. App Engine active automatiquement cette API la première fois que vous déployez une application, mais si quelqu'un l'a désactivée depuis, les déploiements échouent.

Étapes suivantes