Créer votre site web sur Amazon AWS via Elastic Beanstalk et RDS

Amazon-AWS

Aujourd’hui, je vous propose de regarder ensemble comment déployer un site web ou CMS ou une application web de type PHP sur le cloud d’Amazon Web Services. Mais avant cela, un petit tour d’horizon des différents (et nombreux) services proposés par Amazon AWS car si vous avez déjà comparé un peu les différents fournisseurs de cloud aujourd’hui (Google Cloud Platform, Microsoft Azure, …), vous aurez peut-être remarqué que chez Amazon chaque service dispose d’un p’tit nom personnalisé ! 🙂

Tour d’horizon

Par défaut, lorsque vous arrivez sur le portail d’administration, vous avez un visuel sur l’ensemble des services proposés ainsi que vos Resources Groups (disponibles sur la partie située en haut à droite) :

liste_services_amazon_aws

Je ne vais pas rentrer dans le détail de chaque service. Mais si nous voulions faire un parallèle entre les services Amazon AWS et les noms donnés aux mêmes services sur Azure, on pourrait faire le tableau suivant (pour les services les plus courants) :

translation_services_cloud-1

Etape 1 – Création de votre hébergement

Pour créer et héberger notre site web chez Amazon AWS, nous allons utiliser les 2 services suivants :

  • Elastic Beanstalk, qui va nous permettre d’héberger notre site (nous verrons en détails un peu plus tard les différents éléments de configuration auxquels nous avons accès),
  • RDS, qui va nous permettre de choisir le type de base de données que nous souhaitons utiliser et la manière de la configurer (pour ceux qui comme moi ont l’habitude du monde Microsoft : oui, rien à voir avec Remote Desktop Services 😉 !)

image_0

Pour démarrer, cliquez donc sur le service Elastic Beanstalk pour commencer la création de notre espace d’hébergement.

NB : J’ai réalisé pour cet article un maximum de captures d’écran pour que les explications soient visuelles. Cela étant, les interfaces des services de cloud peuvent évoluer assez rapidement ou certains cas peuvent légèrement différer en fonction de votre paramétrage. Donc si vous avez l’impression que j’ai manqué une capture, c’est que j’aurai à priori utiliser les options par défaut – dans le cas contraire et si nécessaire, n’hésitez pas à poser la question dans les commentaires.

image_1

image_2

Choisissez le nom de votre nouvelle web application ainsi qu’une courte description. Pour l’exemple d’aujourd’hui, je vous propose d’essayer de monter un site PHP qui s’appuiera sur le CMS Drupal.

image_3

Nous allons donc procéder automatiquement à la création d’un web server qui hébergera notre site web Drupal.

image_4

A cette étape-ci, vous avez la possibilité de choisir le type d’environnement nécessaire à votre application web. Dans mon cas, il s’agit d’un Drupal, on est donc sur du PHP. Et je choisi, pour ce premier test, de créer 1 unique instance classique.

Mais pour des sites à fort trafic, vous pourriez dès à présent mettre en place de l’auto-scaling afin qu’Amazon adapte les ressources mises à disposition pour votre site en fonction du trafic généré.

image_5

A présent, vous pouvez choisir ce que vous souhaitez déployer sur votre site web. Pour l’exemple, je vous propose de le faire dans un second temps un peu plus tard.

J’ai donc laissé Sample Application. De cette façon, lorsque le serveur web aura été provisionné, nous aurons automatiquement une page par défaut Amazon.

image_6

Rien de particulier ici ; vous devez simplement choisir un nom d’URL pour votre site. Notez qu’il s’agit d’un nom généré par défaut avec une URL Amazon mais qu’il vous sera possible d’y associer un nom personnalisé ultérieurement.

image_7

Cette étape vous permet de demander le provisionnement d’une instance de base de données RDS (dont nous pourrons choisir la configuration quelques étapes plus loin). Tout à fait intéressant dans notre cas puisque nous aurons besoin d’une base de données pour notre Drupal.

image_8

Dans cette section, vous avez la possibilité de choisir le type d’instance sur laquelle sera hébergée votre Drupal. Dans mon cas, j’ai choisi une t2.nano qui est parmi les moins chères des instances proposées par Amazon (vue qu’il s’agit d’un test). Pour le reste, vous pouvez utiliser les options par défaut et choisir une key pair qui vous permettra de vous connecter si nécessaire.

image_9

image_10

A cette étape, vous avez la possibilité de définir des tags qui vous permettent d’ordonner et ranger vos différentes instances et projets Amazon au sein de différents Resources Groups (j’y reviendrai dans un prochain article).

image_11

Nous en arrivons à présent sur le choix et le paramétrage de notre base de données. A vous d’adapter votre choix en fonction de votre projet.

Dans mon cas, j’ai choisi :

  • Moteur de base de données : MySQL
  • Version : 5.6.27 (plutôt récente – mais sans aller sur du early adopter)
  • Type d’instance : db.t1.micro (là encore quelque-chose de pas trop cher pour notre test – à adapter pour votre besoin)
  • Taille de la base de données : 5 Gb
  • + Login / password

image_12

Dans cette (presque) dernière capture, vous aurez le rappel de l’environnement que vous vous préparez à générer. Cliquez sur Launch pour terminer le paramétrage et démarrer le provisionnement ! 🙂

Vous arrivez alors sur la page suivante (si ce n’est pas le cas, il vous suffit de re-cliquez sur le service Elastic Beanstalk et de choisir le nom de l’objet que vous venez de générer) :

image_13

Votre environnement est en cours de provisionnement. Vous allez recevoir plusieurs notifications concernant l’évolution et le statut de votre environnement. L’URL de votre site web est disponible dans la partie supérieure de la fenêtre et vous retrouvez les différents détails techniques de votre instance sur la droite.

image_14

Après quelques instants, votre environnement est prêt et disponible. Connectez-vous sur votre URL Amazon pour vérifier la page par défaut d’Amazon qui confirme que votre environnement est déployé.

image_14

Avant d’aller plus loin et de déployer notre site, je vous propose de faire un tour rapide des différentes options de votre instance. Par défaut, un monitoring / supervision basique par email a automatiquement été mis en place vers l’adresse de messagerie que vous avez renseigné précédemment.

A cela s’ajoute plusieurs options qui sont disponible dans le menu latéral gauche et qui vous propose les options suivantes :

  • Logs, vous permet de voir et télécharger les logs de votre environnement.

logs

  • Health
  • Monitoring, vous permet d’avoir un premier niveau de suivi de votre environnement tels que la charge CPU, l’utilisation de la bande passante, etc.

monitoring

  • Alarms, la possibilité de définir des alarmes sur des seuils particuliers.
  • Managed Updates,
  • Events.

Votre environnement web est créé. Il nous reste à publier (autre chose que la page par défaut générée par Amazon).

default_page_amazon

Etape 2 – Publication de votre site web

Rendez-vous maintenant sur l’espace dédié à votre instance web dans votre Dashboard.

image_15

Cliquez sur le bouton Upload and Deploy.

image_16

Et là, c’est super simple. Il vous suffit d’indiquer le chemin vers le fichier ZIP que vous souhaitez déployer sur votre espace web. Cela veut dire que dans le cas de Drupal, le fichier est souvent au format .tar.gz. Vous devez donc le décompresser puis le re-compresser au format ZIP (en faisant également attention à la hiérarchie des sous-dossiers).

Une fois le déploiement terminé, rafraîchissez la page de votre site et observez le changement.

image_17

Notre site Drupal est bien accessible et nous invite à procéder à la configuration et l’association à votre base de données.

Etape 3 – Configuration

Notre espace web est prêt. Une fois dans le dashboard, si vous cliquez sur le lien Configuration, vous remarquerez que c’est là que l’on retrouve tous les éléments de paramétrage et de configuration de votre instance :

  • Scaling, vous permet de configurer votre instance : est-ce qu’il y a du load-balancing et plusieurs instances disponibles en permanence (où une seule et unique instance sur une localisation précise).
  • Instances, adapter le sizing de votre instance en fonction de l’évolution de votre site web. Commencez sur une micro ou nano et évoluez en fonction de vos développements et de votre business.
  • Notifications, pour configurer l’envoie des notifications de supervision.
  • Software Configuration, paramétrages pour configurer PHP.
  • Updates and Deployments, choisir comment sont déployées les mises à jour correctives sur votre environnement.

image_18

Etape 4 – Connexion à la base de données

Toujours sur cette même page Configuration, vous verrez tout en bas la mise à disposition de notre instance MySQL. C’est là que vous allez retrouver toutes les informations pour vous y connecter. A partir de là, il n’y a plus qu’à démarrer l’installation de votre Drupal et au moment de spécifier l’identifiant, hostname et port vers la base SQL de fournir les informations Amazon RDS.

image_19

Par défaut, le nom de la base de données était : AWSEBRDSDatabase.

image_20

Une fois que vous avez saisi les différents éléments demandés par Drupal, votre site est finalement prêt ! 😉

image_21

Pour le reste, c’est à vous de jouer ! 🙂