Comment installer des modules PECL 7 sur des environnements Elastic Beanstalk fonctionnant sur PHP avec des piles Amazon Linux 1 ?

Dernière mise à jour : 08/07/2020

Je veux installer Redis, Memcached ou d'autres modules pour PECL 7 sur un environnement AWS Elastic Beanstalk fonctionnant sur PHP 7.3 à l'aide de piles Amazon Linux 1.

Courte description

Pour installer les modules PECL 7, vous devez :

  1. Installer toutes les dépendances.
  2. Créer un fichier de configuration Linux (.ebextensions) pour installer et exécuter les modules PECL 7.

Important : les extensions PHP suivantes sont déjà incluses dans la version de la plateforme PHP sur Amazon Linux 2 :

  • php-pecl-redis (pour la communication avec le stockage de clés-valeurs Redis)
  • php-pecl-memcached (pour le démon de mise en cache Memcached)

Remarque : vous pouvez installer des extensions PHP PECL sur n'importe quel environnement PHP prenant en charge PEAR. PECL est installé par défaut sur la pile PHP Elastic Beanstalk et est fourni par le RPM php-pear. Pour plus d'informations, consultez redis sur le site Web de PECL.

Solution

Installer l'extension Redis

1.    Dans le répertoire .ebextensions à la racine du groupe source de votre application, créez un fichier .ebextension basé sur l'exemple suivant :

commands:
  01_install_redis:
    command:  /usr/bin/yes 'no'| /usr/bin/pecl7 install redis
    test: '! /usr/bin/pecl7 info redis'
  02_rmfromphpini:
    command: /bin/sed -i -e '/extension="redis.so"/d' /etc/php.ini
  03_createconf:
    command: /bin/echo 'extension="redis.so"' > /etc/php-7.3.d/41-redis.ini
    test: /usr/bin/pecl7 info redis

L'extension .ebextension effectue les opérations suivantes :

Installe l'extension Redis (01_install_redis)
Supprime l'entrée créée par la commande pecl7 sur le fichier /etc/php.ini pour charger l'extension (02_rmfromphpini)
Crée un fichier de configuration qui charge le module Redis (03_createconf), ce qui nécessite le chargement du module JSON (installé par défaut) avant le module Redis

2.    Déployez la nouvelle version de votre application dans votre environnement Elastic Beanstalk.

3.    Connectez-vous à votre instance à l'aide de SSH, puis exécutez la commande suivante :

php -m | egrep '(redis)'

Vous recevez la sortie suivante :

$ php -m | egrep '(redis)'
redis

Installer l'extension Memcached

1.    Dans le répertoire .ebextensions à la racine du groupe source de votre application, créez un fichier .ebextension basé sur l'exemple suivant :

packages:
  yum:
    libmemcached-devel: []

L'extension .ebextension précédente installe libmemcached-devel, ce qui est une condition préalable à l'installation de l'extension Memcached.

2.    Dans le répertoire .ebextensions à la racine du groupe source de votre application, créez un fichier .ebextension basé sur l'exemple suivant :

commands:
  01_install_memcached:
    command:  /usr/bin/yes 'no'| /usr/bin/pecl7 install memcached
    test: '! /usr/bin/pecl7 info memcached'
  02_rmfromphpini:
    command: /bin/sed -i -e '/extension="memcached.so"/d' /etc/php.ini
  03_createconf:
    command: /bin/echo 'extension="memcached.so"' > /etc/php-7.3.d/41-memcached.ini
    test: '/usr/bin/pecl7 info memcached'

L'extension .ebextension effectue les opérations suivantes :

Installe l'extension Memcached (01_install_memcached)
Supprime l'entrée créée par la commande pecl7 dans le fichier /etc/php.ini pour charger l'extension (02_rmfromphpini)
Crée un fichier de configuration qui charge l'extension Memcached (03_createconf)

3.    Déployez la nouvelle version de votre application dans votre environnement Elastic Beanstalk.

4.    Connectez-vous à votre instance à l'aide de SSH, puis exécutez la commande suivante :

php -m | egrep '(memcached)'

Vous recevez la sortie suivante :

$ php -m | egrep '(memcached)'
memcached

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?