Utilisation de la plateforme PHP Elastic Beanstalk - AWS Elastic Beanstalk

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation de la plateforme PHP Elastic Beanstalk

AWS Elastic Beanstalk fournit et prend en charge diverses branches de plate-forme pour différentes versions de PHP. Les plateformes prennent en charge les applications Web PHP qui s'exécutent de manière autonome ou sous Composer. Voir PHP dans le document AWS Elastic Beanstalk Platforms pour une liste complète des branches de plateforme prises en charge.

Elastic Beanstalk propose des options de configuration que vous pouvez utiliser pour personnaliser le logiciel qui s'exécute sur les instances EC2 Amazon de votre environnement Elastic Beanstalk. Vous pouvez configurer les variables d'environnement requises par votre application, activer la rotation des journaux sur Amazon S3, mapper les dossiers de la source de votre application contenant les fichiers statiques avec les chemins desservis par le serveur proxy, et définir les paramètres d'initialisation PHP communs.

Des options de configuration sont disponibles dans la console Elastic Beanstalk pour modifier la configuration d'un environnement en cours d'exécution. Pour éviter de perdre la configuration de votre environnement en le résiliant, vous pouvez utiliser des configurations enregistrées pour enregistrer vos paramètres et les appliquer par la suite à un autre environnement.

Pour enregistrer les paramètres dans votre code source, vous pouvez inclure des fichiers de configuration. Les paramètres des fichiers de configuration sont appliquées chaque fois que vous créez un environnement ou que vous déployez votre application. Vous pouvez également utiliser des fichiers de configuration pour installer des packages, exécuter des scripts ou effectuer d'autres opérations de personnalisation d'instance lors des déploiements.

Si vous utilisez Composer, vous pouvez inclure un fichiercomposer.json dans votre bundle source afin d'installer des packages pendant le déploiement.

Pour des paramètres avancés PHP et de configuration PHP non fournis en tant qu'options de configuration, vous pouvez utiliser des fichiers de configuration pour fournir un fichier INI qui peut étendre et remplacer les paramètres par défaut appliqués par Elastic Beanstalk, ou installer des extensions supplémentaires.

Les paramètres appliqués dans la console Elastic Beanstalk remplacent les mêmes paramètres des fichiers de configuration, s'ils existent. Cela vous permet d'utiliser les paramètres par défaut dans les fichiers de configuration et de les remplacer par des paramètres spécifiques à l'environnement dans la console. Pour plus d'informations sur la priorité et les autres méthodes de modification des paramètres, consultez Options de configuration.

Pour plus d'informations sur les différentes manières d'étendre une plateforme Elastic Beanstalk basée sur Linux, consultez Extension des plateformes Linux Elastic Beanstalk.

Installation du AWS SDK pour PHP

Si vous devez gérer AWS des ressources depuis votre application, installez le AWS SDK pour PHP. Par exemple, avec le kit SDK pour PHP, vous pouvez utiliser Amazon DynamoDB (DynamoDB) pour stocker les informations relatives à l'utilisateur et à la session sans créer de base de données relationnelle.

Pour installer le SDK pour PHP avec Composer

$ composer require aws/aws-sdk-php

Pour plus d'informations, consultez la AWS SDK for PHPpage d'accueil. Pour obtenir des instructions, voir Installer le AWS SDK for PHP.

Considérations relatives à PHP 8.1 sur Amazon Linux 2

Veuillez lire cette section si vous utilisez la branche de plateforme PHP 8.1 sur Amazon Linux 2.

Note

Les informations de cette rubrique s'appliquent uniquement à la branche de plateforme PHP 8.1 sur Amazon Linux 2. Elle ne s'applique pas aux branches de la plateforme PHP basées sur AL2 023. Elles ne s'appliquent pas non plus à la branche de plateforme PHP 8.0 Amazon Linux 2.

Elastic Beanstalk stocke les packages RPM liés à PHP 8.1 pour la branche de plate-forme PHP 8.1 sur Amazon Linux 2 EC2 sur les instances dans un répertoire local, au lieu du référentiel Amazon Linux. Vous pouvez utiliser rpm -i afin d'installer des packages. À partir de la version 3.5.0 de la plateforme PHP 8.1, Elastic Beanstalk stocke les packages RPM associés à PHP 8.1 dans le répertoire local suivant. EC2

/opt/elasticbeanstalk/RPMS

L'exemple suivant permet d'installer le package php-debuginfo.

$rpm -i /opt/elasticbeanstalk/RPMS/php-debuginfo-8.1.8-1.amzn2.x86_64.rpm

La version indiquée dans le nom du package varie en fonction de la version réelle répertoriée dans le répertoire EC2 local/opt/elasticbeanstalk/RPMS. Utilisez la même syntaxe afin d'installer d'autres packages RPM PHP 8.1.

Développez la section suivante afin d'afficher une liste des packages RPM que nous fournissons.

La liste suivante présente les packages RMP fournis par la plateforme PHP 8.1 Elastic Beanstalk sur Amazon Linux 2. Ils se situent dans le répertoire local /opt/elasticbeanstalk/RPMS.

Les numéros de version 8.1.8-1 et 3.7.0-1 figurant dans les noms de packages listés ne sont qu'un exemple.

  • php-8.1.8-1.amzn2.x86_64.rpm

  • php-bcmath-8.1.8-1.amzn2.x86_64.rpm

  • php-cli-8.1.8-1.amzn2.x86_64.rpm

  • php-common-8.1.8-1.amzn2.x86_64.rpm

  • php-dba-8.1.8-1.amzn2.x86_64.rpm

  • php-dbg-8.1.8-1.amzn2.x86_64.rpm

  • php-debuginfo-8.1.8-1.amzn2.x86_64.rpm

  • php-devel-8.1.8-1.amzn2.x86_64.rpm

  • php-embedded-8.1.8-1.amzn2.x86_64.rpm

  • php-enchant-8.1.8-1.amzn2.x86_64.rpm

  • php-fpm-8.1.8-1.amzn2.x86_64.rpm

  • php-gd-8.1.8-1.amzn2.x86_64.rpm

  • php-gmp-8.1.8-1.amzn2.x86_64.rpm

  • php-intl-8.1.8-1.amzn2.x86_64.rpm

  • php-ldap-8.1.8-1.amzn2.x86_64.rpm

  • php-mbstring-8.1.8-1.amzn2.x86_64.rpm

  • php-mysqlnd-8.1.8-1.amzn2.x86_64.rpm

  • php-odbc-8.1.8-1.amzn2.x86_64.rpm

  • php-opcache-8.1.8-1.amzn2.x86_64.rpm

  • php-pdo-8.1.8-1.amzn2.x86_64.rpm

  • php-pear-1.10.13-1.amzn2.noarch.rpm

  • php-pgsql-8.1.8-1.amzn2.x86_64.rpm

  • php-process-8.1.8-1.amzn2.x86_64.rpm

  • php-pspell-8.1.8-1.amzn2.x86_64.rpm

  • php-snmp-8.1.8-1.amzn2.x86_64.rpm

  • php-soap-8.1.8-1.amzn2.x86_64.rpm

  • php-sodium-8.1.8-1.amzn2.x86_64.rpm

  • php-xml-8.1.8-1.amzn2.x86_64.rpm

  • php-pecl-imagick-3.7.0-1.amzn2.x86_64.rpm

  • php-pecl-imagick-debuginfo-3.7.0-1.amzn2.x86_64.rpm

  • php-pecl-imagick-devel-3.7.0-1.amzn2.noarch.rpm

Vous pouvez utiliser les packages PEAR et PECL afin d'installer des extensions courantes. Pour plus d'informations sur PEAR, veuillez consulter le site Web PEAR - PHP Extension and Application Repository (PEAR : référentiel d'applications et extension PHP) (français non garanti). Pour plus d'informations sur PECL, veuillez consulter le site Web de PECL extension (L'extension PECL) (français non garanti).

Les exemples de commandes suivants permettent d'installer les extensions Memcached.

$pecl install memcache

Vous pouvez également utiliser ce qui suit :

$pear install pecl/memcache

Les exemples de commandes suivants permettent d'installer les extensions Redis.

$pecl install redis

Vous pouvez également utiliser ce qui suit :

$pear install pecl/redis

Configuration de votre environnement PHP

Vous pouvez utiliser la console Elastic Beanstalk pour activer la rotation de journal sur Amazon S3, configurer des variables que votre application peut lire depuis l'environnement et modifier des paramètres PHP.

Pour configurer votre environnement PHP dans la console Elastic Beanstalk
  1. Ouvrez la console Elastic Beanstalk, puis dans la liste des régions, sélectionnez votre. Région AWS

  2. Dans le panneau de navigation, choisissez Environments (Environnements), puis choisissez le nom de votre environnement dans la liste.

  3. Dans le panneau de navigation, choisissez Configuration.

  4. Dans la catégorie de configuration Mises à jour, surveillance et journalisation, sélectionnez Modifier.

Paramètres PHP

  • Proxy server (Serveur proxy) – Serveur proxy à utiliser sur vos instances d'environnement. Le serveur nginx est utilisé par défaut.

  • Racine du document – Dossier qui contient la page par défaut de votre site. Si votre page d'accueil n'est pas à la racine de votre groupe source, spécifiez le dossier qui la contient par rapport aux chemin d'accès racine. Par exemple, /public si la page d'accueil est dans un dossier nommé public.

  • Limite de mémoire – Volume maximum de mémoire qu'un script est autorisé à allouer. Par exemple, 512M.

  • Compression de sortie Zlib – Définissez sur On pour compresser les réponses.

  • Permettre de faire un fopen d'une URL – Définissez cette option sur Off pour empêcher les scripts de télécharger des fichiers à partir d'emplacements distants.

  • Afficher les erreurs – Définissez cette option sur On pour afficher les messages d'erreur internes à des fins de débogage.

  • Durée d'exécution maximum – La durée maximale en secondes pendant laquelle un script est autorisé à s'exécuter avant que l'environnement ne l'arrête.

Options du journal

La section Options du journal a deux paramètres :

  • Instance profile (Profil d'instance) – Spécifie le profil d'instance qui est autorisé à accéder au compartiment Amazon S3 associé à votre application.

  • Activer la rotation des fichiers journaux vers Amazon S3 : indique si les fichiers journaux des EC2 instances Amazon de votre application sont copiés dans le compartiment Amazon S3 associé à votre application.

Fichiers statiques

Pour améliorer les performances, la section des Fichiers statiques vous permet de configurer le serveur proxy pour proposer des fichiers statiques (HTML ou images, par exemple) à partir d'un ensemble de répertoires dans votre application web. Pour chaque répertoire, vous définissez le chemin virtuel sur le mappage de répertoires. Lorsque le serveur proxy reçoit une demande pour un fichier dans le chemin spécifié, il fournit le fichier directement au lieu d'acheminer la demande vers votre application.

Pour en savoir plus sur la configuration des fichiers statiques à l'aide des fichiers de configuration ou de la console Elastic Beanstalk, consultez Service de fichiers statiques.

Propriétés de l'environnement

La section Propriétés de l'environnement vous permet de définir les paramètres de configuration de l'environnement sur EC2 les instances Amazon qui exécutent votre application. Ces paramètres sont passés en tant que paires clé-valeur à l'application.

Votre code d'application peut accéder aux propriétés de l'environnement à l'aide de $_SERVER ou à la fonction get_cfg_var.

$endpoint = $_SERVER['API_ENDPOINT'];

Pour plus d’informations, consultez Variables d'environnement et autres paramètres du logiciel.

Espaces de noms pour la configuration

Vous pouvez utiliser un fichier de configuration pour définir des options de configuration et exécuter d'autres tâches de configuration d'instance pendant les déploiements. Les options de configuration peuvent être spécifiques à la plate-forme ou s'appliquer à toutes les plateformes du service Elastic Beanstalk dans son ensemble. Les options de configuration sont organisées en espaces de noms.

Les espaces de noms suivants configurent à la fois votre service proxy et les options spécifiques à PHP :

  • aws:elasticbeanstalk:environment:proxy:staticfiles— configurez le proxy d'environnement pour servir les fichiers statiques. Vous définissez les mappages des chemins virtuels vers les répertoires d'applications.

  • aws:elasticbeanstalk:environment:proxy— spécifiez le serveur proxy de l'environnement.

  • aws:elasticbeanstalk:container:php:phpini— configure les options spécifiques à PHP. Cet espace de noms inclut composer_options ce qui n'est pas disponible sur la console Elastic Beanstalk. Cette option définit les options personnalisées à utiliser lors de l'installation de dépendances à l'aide de Composer via la composer.phar install commande. Pour plus d'informations sur cette commande, y compris les options disponibles, consultez la section installation sur le site Web getcomposer.org.

L'exemple de fichier de configuration suivant spécifie une option de fichiers statiques qui mappe un répertoire nommé staticimages au chemin /images, d'accès et affiche les paramètres de chacune des options disponibles dans l'espace de noms aws:elasticbeanstalk:container:php:phpini :

Exemple .ebextensions/php-settings.config
option_settings: aws:elasticbeanstalk:environment:proxy: ProxyServer: apache aws:elasticbeanstalk:environment:proxy:staticfiles: /images: staticimages aws:elasticbeanstalk:container:php:phpini: document_root: /public memory_limit: 128M zlib.output_compression: "Off" allow_url_fopen: "On" display_errors: "Off" max_execution_time: 60 composer_options: vendor/package
Note

L'espace de noms aws:elasticbeanstalk:environment:proxy:staticfiles n'est pas défini sur les branches PHP de l'AMI Amazon Linux (précédant Amazon Linux 2).

Elastic Beanstalk fournit de nombreuses options de configuration pour personnaliser votre environnement. En plus des fichiers de configuration, vous pouvez également définir des options de configuration à l'aide de la console, de configurations enregistrées, de la CLI EB ou d' AWS CLI. Pour plus d’informations, consultez Options de configuration.

Installation des dépendances de votre application PHP Elastic Beanstalk

Cette rubrique décrit comment configurer votre application pour installer les autres packages PHP dont elle a besoin. Votre application peut avoir des dépendances sur d'autres packages PHP. Vous pouvez configurer votre application pour installer ces dépendances sur les instances Amazon Elastic Compute Cloud (Amazon EC2) de l'environnement. Vous pouvez également inclure les dépendances de votre application dans le bundle source et les déployer avec l'application. La section ci-après décrit chacune de ces méthodes.

Utilisation d'un fichier Composer pour installer des dépendances sur les instances

Utilisez un composer.json fichier à la racine de la source de votre projet pour utiliser Composer afin d'installer les packages requis par votre application sur les EC2 instances Amazon de votre environnement.

Exemple composer.json
{ "require": { "monolog/monolog": "1.0.*" } }

Lorsqu'un fichier composer.json est présent, Elastic Beanstalk exécute composer.phar install pour installer les dépendances. Vous pouvez ajouter des options à joindre à la commande en définissant l'option composer_options dans l'espace de noms aws:elasticbeanstalk:container:php:phpini.

Inclusion des dépendances dans la solution groupée source

Si votre application possède un grand nombre de dépendances, leur installation peut prendre beaucoup de temps. Il peut en résulter un nombre accru d'opérations de déploiement et de mise à l'échelle, car les dépendances sont installées sur chaque nouvelle instance.

Pour éviter d'accroître le temps de déploiement, utilisez Composer dans votre environnement de développement afin de résoudre les dépendances et de les installer dans le dossier vendor.

Pour inclure des dépendances dans le bundle source de votre application
  1. Exécutez la commande suivante :

    % composer install
  2. Incluez le dossier vendor généré dans la racine du bundle source de votre application.

Lorsque Elastic Beanstalk trouve un dossier vendor sur l'instance, il ignore le fichier composer.json (même s'il existe). Votre application utilise alors les dépendances issues du dossier vendor.

Mettre à jour Composer sur Elastic Beanstalk

Cette rubrique décrit comment configurer Elastic Beanstalk pour maintenir Composer à jour. Vous devrez peut-être mettre à jour Composer si un message d'erreur s'affiche lorsque vous essayez d'installer des packages avec un fichier Composer ou si vous ne parvenez pas à utiliser la dernière version de la plateforme. Entre les mises à jour de la plateforme, vous pouvez mettre à jour Composer dans les instances de votre environnement en utilisant les fichiers de configuration de votre .ebextensionsdossier.

Vous pouvez mettre à jour automatiquement Composer avec la configuration suivante.

commands: 01updateComposer: command: /usr/bin/composer.phar self-update 2.7.0

Le paramètre d'option suivant définit la variable d'COMPOSER_HOMEenvironnement, qui configure l'emplacement du cache Composer.

option_settings: - namespace: aws:elasticbeanstalk:application:environment option_name: COMPOSER_HOME value: /home/webapp/composer-home

Vous pouvez combiner les deux dans le même fichier de configuration de votre .ebextensions dossier.

Exemple .ebextensions/composer.config
commands: 01updateComposer: command: /usr/bin/composer.phar self-update 2.7.0 option_settings: - namespace: aws:elasticbeanstalk:application:environment option_name: COMPOSER_HOME value: /home/webapp/composer-home
Note

En raison des mises à jour apportées à l'installation de Composer dans la version AL2 023 de la plateforme du 22 février 2024 et dans la version du 28 février 2024, AL2 la mise à jour automatique de Composer peut échouer si elle COMPOSER_HOME est définie lors de l'exécution de la mise à jour automatique.

Les commandes combinées suivantes ne pourront pas être exécutées : export COMPOSER_HOME=/home/webapp/composer-home && /usr/bin/composer.phar self-update 2.7.0

Cependant, l'exemple précédent fonctionnera. Dans l'exemple précédent, le paramètre d'option pour ne COMPOSER_HOME sera pas transmis à l'01updateComposerexécution, et il ne sera pas défini lors de l'exécution de la commande de mise à jour automatique.

Important

Si vous n'indiquez pas le numéro de version dans la commande composer.phar self-update, Composer met à jour vers la dernière version disponible chaque fois que vous déployez votre code source et que de nouvelles instances sont provisionnées par Auto Scaling. Si une version de Composer est disponible qui est incompatible avec votre application, elle peut provoquer l'échec des opérations de dimensionnement et des déploiements.

Pour plus d'informations sur les plateformes PHP Elastic Beanstalk, ainsi que sur la version de Composer, consultez la section Versions des plateformes PHP du document Plateformes AWS Elastic Beanstalk .

Extension du fichier php.ini dans votre configuration Elastic Beanstalk

Utilisez un fichier de configuration avec un bloc files pour ajouter un fichier .ini à /etc/php.d/ sur les instances de votre environnement. Le fichier de configuration principal, php.ini, recherche des paramètres dans des fichiers dans ce dossier dans l'ordre alphabétique. De nombreuses extensions sont activées par défaut par les fichiers dans ce dossier.

Exemple .ebextensions/mongo.config
files: "/etc/php.d/99mongo.ini": mode: "000755" owner: root group: root content: | extension=mongo.so