Configurer AWS Beanstalk pour exécuter une application Laravel
Le déploiement d’une application Laravel sur la plateforme Linux 2 d’AWS Beanstalk nécessite quelques paramétrages supplémentaires.
Nous allons voir dans cet article comment les mettre en place.
En effet, bien que la documentation officielle soit très complète (https://docs.aws.amazon.com/fr_fr/elasticbeanstalk/latest/dg/php-laravel-tutorial.html), il manque quelques précisions au moment où j’écris cet article.
Contexte
Je ne reviendrai pas ici sur la création d’une application Laravel, la documentation et très complète en ligne.
De même, pour le déploiement dans Beanstalk, vous pouvez vous référer à la documentation officielle : https://docs.aws.amazon.com/fr_fr/elasticbeanstalk/latest/dg/php-laravel-tutorial.html
Pour rédiger cet article, j’ai utilisé la version 7 du framework Laravel.
Dans Beanstalk, j’ai utilisé la plateforme suivante :
Plateforme
: PHPBranche de plateforme
: PHP 7.3 running on 64bit Amazon Linux 2Version de plateforme
: 3.0.2
Il s’agit bien ici de la version 2 de la plateforme Linux. Celle-ci utilise Nginx, alors que la version 1 utilise Apache (cet article ne s’applique pas dans ce dernier cas).
Vous pourrez trouver les informations sur les plateformes PHP ici : https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.PHP
Problème
Si vous déployez votre application Laravel directement sur cette version 2 de la plateforme, les redirections ne seront pas possibles puisque Nginx n’est pas configuré pour les prendre en compte (contrairement à Apache, via les fichiers .htaccess
).
Le but est donc de configurer notre environnement pour permettre les redirections vers le fichier index.php
.
Pour cela, je me baserai sur :
- La documentation Laravel pour le déploiement dans Nginx : https://laravel.com/docs/7.x/deployment#nginx
- La documentation AWS pour étendre la plateforme : https://docs.aws.amazon.com/fr_fr/elasticbeanstalk/latest/dg/platforms-linux-extend.html (section Configuration du proxy inverse)
Solution
Je suppose que le paramétrage pour utiliser le répertoire /public
comme racine a été faite comme indiqué dans la documentation : https://docs.aws.amazon.com/fr_fr/elasticbeanstalk/latest/dg/php-laravel-tutorial.html#php-laravel-tutorial-configure
Le principe est d’ajouter à la configuration Nginx la redirection vers le fichier index.php
pour que le framework Laravel gère les différentes routes.
Pour cela, il faut créer le fichier .platform/nginx/conf.d/elasticbeanstalk/laravel.conf
à la racine de votre projet.
Le nom du fichier n’a pas d’importance, mais il faut respecter les règles suivantes :
- Le fichier doit être créé dans l’arborescence
.platform/nginx/conf.d/elasticbeanstalk/
- L’extension du fichier doit être
.conf
Ce fichier doit contenir :
Vous pouvez bien entendu ajouter les configurations supplémentaires que vous souhaitez, le but ici est de gérer les redirections.
Il ne vous reste plus qu’à déployer votre application dans Beanstalk.