Installer l'extension MongoDB pour PHP dans Amazon Web Service

Installer l'extension MongoDB pour PHP dans Amazon Web Service

L’installation d’une extension PHP dans Amazon Web Service Elastic Beanstalk n’est pas aussi simple qu’il y paraît, en particulier pour MongoDB.

La documentation à ce sujet n’est d’ailleurs pas à jour (au moment où j’écris cet article) : https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/php-configuration-phpini.html

Nous allons voir comment procéder.

Contexte

Je tiens à préciser que j’écris cet article alors que je découvre les services offerts par AWS (Amazon Web Service).

Il est possible que ce que je décrive ne convienne pas aux puristes.

Dans cet article, il s’agit plus d’un retour d’expérience d’un débutant qui souhaite tester le déploiement d’une application PHP dans AWS Elastic Beanstalk avec la possibilité de se connecter à un replicaset MongoDB.

Je ne m’attarderai pas sur l’utilisation d’AWS, la documentation officielle est très complète.

Version officielle

Dans la documentation en ligne, il est indiqué qu’un simple fichier de configuration suffit.

Pour cela, dans l’application, il faut créer le fichier .ebextensions/mongodb.config à la racine.

files:
  "/etc/php.d/99-mongodb.ini" :
    mode: "000644"
    owner: root
    group: root
    content: |
      extension=mongodb.so

Pour ma part, impossible de disposer de la connectique à MongoDB de cette façon.

J’ai fait l’essai avec un projet simple ne contenant qu’un fichier phpinfo.php, la catégorie MongoDB n’était pas affichée.

Celle que j’ai utilisée

Après plusieurs recherches, voici la solution que j’ai retenue (et qui fonctionne pour mon besoin).

Il faut toujours créer le fichier .ebextensions/mongodb.config à la racine du projet.

Mais celui-ci exécutera la commande permettant d’installer l’extension via PECL :

commands:
  install_mongodb_driver:
    test: "php -r \"exit(extension_loaded('mongodb') ? 1 : 0);\""
    command: pecl install mongodb-1.7.4

Le fichier décrit la commande install_mongodb_driver (vous pouvez choisir le nom qui vous convient).

Elle sera exécutée si le résultat de l’instruction test est 0 (code de sortie de la commande qu’elle indique).

La ligne command utilise la commande PECL pour installer l’extension (ici en version 1.7.4).

Il suffit d’adapter la version de l’extension à votre besoin.

Vous pouvez vous référer au référentiel officiel pour identifier la version qui correspond à votre projet : https://pecl.php.net/package/mongodb

Lorsque votre application est déployée, vous disposez de l’extension MongoDB.