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) :
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) :
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 😉 !)
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.
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.
Nous allons donc procéder automatiquement à la création d’un web server qui hébergera notre site web Drupal.
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é.
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.
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.
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.
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.
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).
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
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) :
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.
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é.
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.
- 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.
- 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).
Etape 2 – Publication de votre site web
Rendez-vous maintenant sur l’espace dédié à votre instance web dans votre Dashboard.
Cliquez sur le bouton Upload and Deploy.
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.
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.
- …
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.
Par défaut, le nom de la base de données était : AWSEBRDSDatabase.
Une fois que vous avez saisi les différents éléments demandés par Drupal, votre site est finalement prêt ! 😉
Pour le reste, c’est à vous de jouer ! 🙂