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

Dernière mise à jour : 19-03-2021

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

Brève 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 magasin clé-valeur 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)'

File d'attente :

$ 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)'

File d'attente :

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

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


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