Héberger votre site WordPress sur AWS Elastic Beanstalk

Dans un précédent article, je vous avais présenté comment héberger votre site web WordPress sur le cloud de Microsoft Azure. Je vous propose de voir aujourd’hui comment faire la même chose mais cette fois-ci sur le cloud d’Amazon AWS grâce au service appelé AWS Elastic Beanstalk.

Le principe de ce service est de vous permettre d’héberger votre application web en mode PaaS c’est-à-dire vous n’aurez pas besoin de vous occuper de la gestion des serveurs ou des outils utilisés pour faire fonctionner votre site (Linux, Apache, MySQL, etc.).

Etape 0 – Préparer votre archive WordPress

Avant de commencer et de créer votre application sur AWS, il vous faut préparer une archive zip de votre site WordPress. Il peut s’agir de l’archive saine d’une nouvelle installation de WordPress ou bien vous pouvez récupérer l’installation existante de votre site. Ce qui est important lorsque vous créez cette archive et de ne pas avoir plusieurs niveau dans l’arborescence de dossiers (tous vos fichiers et sous-dossiers doivent se trouver à la racine du ZIP).

Etape 1 – Création de votre application web

Une fois que votre archive est prête, vous pouvez maintenant créer une nouvelle application. Chargez votre archive ZIP comme première version de votre web application. AWS est capable de gérer les versions de votre application – dans notre cas, il s’agit de la première version, je l’ai donc appelée v0.

Définissez également le nom de votre application ainsi que le type d’environnement à créer. Si vous utilisez un CMS du type WordPress, Drupal, phpBB vous aurez besoin besoin de PHP.

Etape 2 – Configuration de votre application web

Une fois que vous avez créé votre web application, vous pouvez maintenant procéder à la configuration de cette dernière. Et vous allez voir qu’il y a de nombreuses possibilités de paramétrage.

Voyons un peu les éléments de configuration que vous pouvez modifier (on va imaginer que vous souhaitez faire une custom configuration afin de voir le plus de réglages possibles) :

  • Software : configuration des logs et rotation c’est-à-dire archivage de ces dernières. Vous pourriez choisir d’archiver vos logs sur un bucket AWS S3. Mais vous devez garder en tête que chaque option derrière un menu déroulant ou une case à cocher peut entraîner automatiquement des coûts additionnels facturés par Amazon AWS. Pour ce test, j’ai choisi de ne pas utiliser cette option.
  • Instances : dans cette catégorie, vous allez pouvoir choisir l’instance EC2 – c’est-à-dire la machine virtuelle qui hébergera votre site web. Dans mon cas, j’ai choisi d’utiliser une instance de type t2.micro (1 vCPU et 1 Go de RAM). L’avantage de cette instance est qu’elle entre dans le programme free-tiers d’AWS et sera donc gratuite pendant 12 mois.

En termes de stockage, j’ai choisi de provisionner 8 Go de SSD ce qui sera largement suffisant pour une installation basique de WordPress avec quelques années de stockage en termes de contenu (sauf si vous publiez des vidéos ou des choses plus lourdes).

  • Capacity : vous pouvez maintenant choisir le capacity planning que vous souhaitez associer à votre application web. Cela correspond notamment au nombre de serveurs que vous souhaitez mettre à disposition de votre application. Bien entendu, vous devrez payer pour toutes les machines virtuelles qui seront consommées par votre application web. Si vous en assignez plusieurs, vous aurez également besoin d’un Load Balancer ainsi qu’une configuration réseau particulière. Bien entendu, tous ces composants vous seront également facturés par Amazon. Dans le cadre de notre test, j’ai choisi de rester sur une instance unique.

  • Load Balancer : si vous utilisez 1 instance unique. Rien à configurer ici.
  • Rolling updates and deployments : Deployment policy : All at once / Rolling update type : Disabled.

  • Security : dans la partie Security, vous pouvez configurer ou créer une nouvelle clé SSH qui sera automatiquement mise en place sur l’ensemble de vos instances EC2. Je vous en parle dans cet article. A priori, si vous avez choisi d’utiliser Elastic Beanstalk c’est que vous ne souhaitez pas administrer votre machine virtuelle EC2, vous ne devriez donc pas avoir besoin de vous y connecter.

  • Managed updates : cette section est particulièrement intéressante puisque c’est ici que vous allez activer et configurer les “managed updates“. Cela signifie que c’est Amazon qui s’occupera et gérera le déploiement des mises à jour sur votre application web. Cela signifie que c’est AWS qui installera les patchs, correctifs ou réalisera les mises à jour. Dans mon cas, j’ai choisi d’appliquer les mises à jour tous les lundi à 00h32.

Je passe sur la configuration réseau qui vous permet d’assigner une adresse IP publique à votre application web ou bien des tags qui vous permettent de classer et ordonner vos ressources sur AWS.

Etape 3 – Création d’une base de données associée

Il nous reste maintenant à provisionner notre base de données MySQL pour notre WordPress et là encore l’objectif pour nous est de continuer à faire du PaaS. Dans la section data-tiers, nous allons donc pouvoir provisionner notre base de données. Vous avez le choix entre MySQL, MariaDB, Aurora.

Dans mon cas, j’ai simplement choisi MySQL. J’utilise la dernière version possible de produit. Il vous reste à choisir la taille de l’instance de votre base de données. Dans mon cas, j’ai choisi db.t2.small ce qui me permet de disposer de 1 vCPU et de 2 Go de RAM pour ma base de données MySQL.

Choisissez ensuite l’espace disque disponible – dans mon cas, 5 Go – ainsi que des credentials pour vous y connecter.

L’option Retention permet de définir ce qui doit être fait de la base de données si vous décidiez de supprimer l’instance EC2 associée. Dans mon cas, un snapshot sera effectué et les données ne seront donc pas supprimées comme l’instance EC2.

L’availability vous permet de définir éventuellement de la haute disponibilité associée à votre base de données MySQL et si cette dernière doit être répliquée au sein de plusieurs zones AWS.

Etape 4 – Interconnexion de votre base de données et de votre application web

Il nous reste maintenant à interconnecter notre application web et sa base de données pour ce faire vous devez aller dans les options de votre base MySQL en cliquant sur le lien dans la section data-tiers.

Une fois que vous y êtes vous allez retrouver toutes les options de votre base de données MySQL. Vous avez besoin d’une nom de base de données, d’un login, d’un mot de passe ainsi que de l’adresse pour se connecter à la base de données MySQL.

Par défaut, vous allez retrouver toutes les informations sur la page ci-dessus :

  • DB Name pour le nom de votre base de données (ebdb) ;
  • Username pour le login pour se connecter à votre base ;
  • Endpoint correspond au serveur à saisir pour que votre site wordpress se connecter à la base de données MySQL.

Une fois toutes ces informations insérées sur votre page d’installation votre site WordPress pourra s’installer.

Important : dans le champs Database Host vous devez insérer la totalité de ce que vous aviez en face de EndPoint. N’oubliez donc pas de conserver les :3306 à la fin – sinon, cela ne fonctionnera pas. 😉

Une fois que tout est bon, il ne vous reste plus qu’à effectuer une sauvegarde de l’état de votre Web Application.

Cela vous permet de sauvegarder l’état des fichiers que vous avez modifié sur votre installation WordPress. Si vous ne le faîtes pas, lors d’un re-déploiement ou d’un plantage, votre site reprendra son état de déploiement en version “v0” que nous avons créé au tout début. Cela signifie que la modification du fichier wp-config.php n’aura pas été enregistré. 🙂

Voilà, vous disposez d’un site WordPress en mode PaaS hébergé sur le cloud AWS ! 🙂

PartagezShare on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInEmail this to someone