Section courante

A propos

Section administrative du site

Architecture de Site Web industrielle

Les services AWS d'Amazon offre la possibilité de virtualiser entièrement une infrastructure d'une entreprise. Cette avancé technologie fait en sorte que tous les possibilités réseaux peuvent être schématisé et configuré dans les services d'AWS sans aucune intervention manuel (par un humain) par AWS. Cette approche offre l'avantage d'avoir rapidement tous les composantes qu'on a besoin et qu'on peut avoir l'équipement désiré à toute heure du jour ou de la nuit lorsque le besoin se fait vraiment sentir. De façon concrète, vous n'avez pas besoin d'attendre qu'une demande pour une Switch soit installé par un technicien informatique le lendemain pour pouvoir utiliser leur service par exemple. Les services sont tous automatisés ! Mais automatisé est un grand mot, ainsi, du côté AWS, c'est automatisé, mais du côté client des services AWS, ce n'est pas tout automatisé, il faudra ainsi remplir de nombreux formulaires d'informations sur la manière qu'on souhaite monter notre infrastructure de entreprises ou de notre organisation.


Au préalable, prenez notes qu'il faut que toutes vos composantes devraient être assemblé dans le même centre de données pour que l'opération puisse fonctionner correctement.

Une architecture Web avec des besoins industrielles devrait donc comprendre, est construit et selon l'ordre suivante :

Création d'un Security Group

Pour aller dans le Security Group, vous devez d'abord choisir la région, soit dans notre exemple Canada Central (ca-central-1) dans la barre noir du haut du site du compte AWS. Ensuite, vous aller dans la section EC2 (lequel correspondent aux instances de VM). Vous cliquez dans la colonne de gauche sur l'option «Security Group». Ensuite, vous cliquez sur le bouton Create Security Group. Dans notre exemple, nous avons choisis la création des 4 groupes de sécurités suivants :

Nom Description
sg_elb_nomduprojet Ce nom permet d'indiquer le groupe de sécurité pour l'équilibreur de charger (Load Balancer).
sg_nomduprojet_public Ce nom permet d'indiquer le groupe de sécurité pour les accès publiques.
sg_nomduprojet_rds Ce nom permet d'indiquer le groupe de sécurité pour les accès frontale à la base de données RDS.
sg_nomduprojet_devops Ce nom permet d'indiquer le groupe de sécurité pour les accès des DevOps.

sg_elb_nomduprojet

Ce groupe de sécurité permet une communication totale aux navigateurs Web, ainsi dans ce groupe de sécurité, le port HTTP (port 80) et HTTPS (port 443) doivent être autorisé. Vous commencez par cocher dans la liste le groupe «sg_elb_nomduprojet» dans la liste. Ensuite, vous cliquez sur les options «Action > Edit inbound rules». Enfin, vous indiquez les valeurs de l'onglet «Inbound» suivante :

Type Protocol Port Range Source Description
HTTP TCP 80 0.0.0.0/0 HTTP par IPv4
HTTP TCP 80 ::/0 HTTP par IPv6
HTTPS TCP 443 0.0.0.0/0 HTTP par IPv4
HTTPS TCP 443 ::/0 HTTP par IPv6

sg_nomduprojet_public

Ce groupe de sécurité permet de gérer les communications par le protocole SSH entre les services SSH et entre le réseau du bureau de l'entreprise. De plus, il doit contenir les communications spécifiques entre les serveurs EC2, ainsi que l'équilibreur de charger (Load Balancer). Vous commencez par cocher dans la liste le groupe «sg_nomduprojet_public» dans la liste. Ensuite, vous cliquez sur les options «Action > Edit inbound rules». Enfin, vous indiquez les valeurs de l'onglet «Inbound» suivante :

Type Protocol Port Range Source Description
HTTP TCP 80 sg_elb_nomduprojet Équilibreur de charger
HTTP TCP 80 sg_nomduprojet_public EC2 du nomduprojet
SSH TCP 22 77.77.77.77/32 IP donnant accès au bureau

sg_nomduprojet_rds

Ce groupe de sécurité permet de gérer les bases de données RDS de type Aurora DB à partir d'instance EC2. Vous commencez par cocher dans la liste le groupe «sg_elb_nomduprojet_rds» dans la liste. Ensuite, vous cliquez sur les options «Action > Edit inbound rules». Enfin, vous indiquez les valeurs de l'onglet «Inbound» suivante :

Type Protocol Port Range Source Description
MySQL/Aurora TCP 3306 sg_nomduprojet_public Accès à MySQL

sg_nomduprojet_devops

Ce groupe de sécurité permet aux employés de communiquer avec les serveurs à partir de la maison ou d'un emplacement de voyage. Les valeurs contenus dans ce tableau varieront donc continuellement. Vous commencez par cocher dans la liste le groupe «sg_nomduprojet_devops» dans la liste. Ensuite, vous cliquez sur les options «Action > Edit inbound rules». Enfin, vous indiquez les valeurs de l'onglet «Inbound» suivante :

Type Protocol Port Range Source Description
All traffic All All 88.88.88.88/32 IP donnant accès à la maison

Création d'un Target Group (du Load Balancer)

Pour aller dans le Target Group, vous devez d'abord choisir la région, soit dans notre exemple Canada Central (ca-central-1) dans la barre noir du haut du site du compte AWS. Ensuite, vous aller dans la section EC2 (lequel correspondent aux instances de VM). Vous cliquez dans la colonne de gauche sur l'option «Target Groups». Enfin, vous cliquez sur le bouton Create target group entrer les valeurs suivantes dans les champs de formulaire :

Champ Description
Target group name tg-nomduprojet
Target type (*) Instance
Protocol HTTP
Port 80
VPC vpc_nomduprojet
Protocol HTTP
Path /
Port (*) traffic port
Unhealthy threshold 2
Timeout 5
Interval 30
Success codes 200-499

Création d'un certificat HTTPS (Certificate Manager)

Pour aller dans le Target Group, vous devez d'abord choisir la région, soit dans notre exemple Canada Central (ca-central-1) dans la barre noir du haut du site du compte AWS. Ensuite, vous aller dans la section «Certificate Manager». Puis, vous cliquez sur le menu de gauche «Certificate Manager». Vous cliquez sur le bouton Request a certificate.

Step 1: Add domain names

Lors de la première étape des champs de formulaires, ajouter le nom du domaine de votre site Web avec un «*» : «*.monsite.com». Ensuite vous cliquez sur le bouton Next.

Step 2: Select validation method

Lors de la deuxième étape des champs de formulaires, choisissez l'option : «(*)DNS validation».

Step 3: Review

Lors de la troisième étape des champs de formulaires, vous cliquez sur le bouton Confirm and request.

Step 4: Validation

Il affiche une validation en progression. Vous cliquez sur le bouton Continue. Par la suite, vous cliquez sur la liste des noms de domaines de «Certificate Manager». Vous ouvrez l'arbre du nom de domaine et vous cliquez sur le lien : «Export DNS configuration to a file».

Création d'un Load Balancer

Pour aller dans le Target Group, vous devez d'abord choisir la région, soit dans notre exemple Canada Central (ca-central-1) dans la barre noir du haut du site du compte AWS. Ensuite, vous aller dans la section EC2 (lequel correspondent aux instances de VM). Vous cliquez dans la colonne de gauche sur l'option «Load Balancers». Enfin, vous cliquez sur le bouton Create Load Balancer. Finalement, vous choisissez «HTTP/HTTPS» et vous cliquez sur le bouton Create :

Step 1: Configure Load Balancer

Lors de la première étape des champs de formulaires, vous entrez les informations suivantes :

Champ Description
Name elb-nomduprojet
Schema (*) internet-facing
IP address type ipv4
Listeners
HTTP 80
HTTPS 443
Availability Zones
VPC vpc_nomduprojet
Availability Zone Subnet ID
ca-central-1a sb_nomduprojet_private_a
ca-central-1a sb_nomduprojet_public_a

Step 2: Configure Security Settings

Lors de la deuxième étape des champs de formulaires, vous entrez les informations suivantes :

Champ Description
Certificate type (*) Choose a certificate from ACM (recommended)
Certificate name *.monsite.com
Security policy ELBSecurityPolicy-2016-08

Step 3: Configure Security Groups

Lors de la troisième étape des champs de formulaires, vous sélectionnez «(*) Select an existing security group» et vous entrez les informations suivantes :

Champ Description
sg-xxxxxxxxxx sg_nomduprojet_public
sg-xxxxxxxxxx sg_elb_nomduprojet

Step 4: Configure Routing

Lors de la quatrième étape des champs de formulaires, vous entrez les informations suivantes :

Champ Description
Target group Existing target group
Name tg-nomduprojet

Step 5: Register Targets

Lors de la cinquième étape des champs de formulaires, on ne peut pas rajouter immédiatement les instances dans l'équilibreur de charge (Load Balancer), on doit donc uniquement cliquer sur le bouton Next: Review et passer à l'étape suivante.

Step 6 : Review

Lors de la sixième étape des champs de formulaires, vous cliquez sur le bouton Create. Ensuite, vous cliquez sur le bouton Close.

Création d'un Amazon CloudFront

Pour aller dans le Amazon CloudFront, vous devez écrire le mot «CloudFront» dans le menu de AWS. Vous cliquez sur le bouton Créer une distribution en français ou Create Distribution en anglais. Deux sections s'affichent, vous cliquez sur le bouton Mise en route ou Get Started de la section Web, soit le premier des 2 boutons.

La deuxième étape s'affiche, vous entrez les valeurs suivantes dans les champs de formulaire :

Champ Description
Nom du domaine d'origine
Origin Domain Name
elb-nomduprojet-* (Vous sélectionnez le champ commençant par cette valeur, car il rajoute un nom de domaine)
Chemin d'origine
Origin Path
Vous laissez le champ vide
ID d'origine
Origin ID
ELB-elb-nomduprojet (se champ est remplit automatiquement)
En-têtes personnalisés d'origine
Origin Custom Headers
Header Name - Value
  Vous laissez se champ vide
Paramètres de comportement du cache par défaut / Default Cache Behavior Settings
Modèle de chemin
Path Pattern
Default (*)
Stratégie de protocole d'utilisateur
Viewer Protocol Policy
HTTP et HTTPS
HTTP and HTTPS
Méthodes HTTP autorisées
Allowed HTTP Methods
GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
Configuration du chiffrement au niveau du champ
Field-level Encryption Config
Vous laissez se champ vide
Méthodes HTTP mises en cache
Cached HTTP Methods
GET, HEAD (en cache par défaut)
GET, HEAD (Cached by default)
Réacheminer les en-têtes
Cache Based on Selected Request Headers
Whitelist
Mise en cache d'un objet
Object Caching
(*) Customize
Origin SSL Protocols TLSv1.2
TLSv1.1
TLSv1
Origin Protocol Policy Match Viewer
Origin Response Timeout 30
Origin Keep-alive Timeout 5
HTTP Port 80
HTTPS Port 443
Whitelist Headers Host
Origin
Durée de vie minimale
Minimum TTL
0
Durée de vie maximale
Maximum TTL
86400
Durée de vie par défaut
Default TTL
300
Réacheminer les cookies
Forward Cookies
Liste blanche
Whitelist
Placer les cookies dans la liste blanche
Whitelist Cookies
Pour un projet comme WordPress, vous devriez avoir les valeurs suivantes :

comment_author_*
comment_author_email_*
comment_author_url_*
wordpress_logged_in_*
wordpress_test_cookie
wp-setting-*
Réacheminement et mise en cache des chaînes de requête
Query String Forwarding and Caching
Forward all, cache based on all
Smooth Streaming (*) No
Restreindre l'accès des utilisateurs (Utiliser des URL signées ou des Cookies signées)
Restrict Viewer Access (Use Signed URLs or Signed Cookies)
(*) No
Compresser automatiquement les objets
Compress Objects Automatically
(*) Yes
Associations de fonction Lambda
Lambda Function Associations
Vous laissez ses champs vides
Paramètres de distribution / Distribution Settings
Catégorie de tarifs
Price Class
Utiliser uniquement États-Unis, Canada et Europe
Use Only U.S., Canada and Europe
AWS WAF Web ACL Aucun
None
Autres noms de domaine (CNAME)
Alternate Domain Names (CNAMEs)
Vous entrez la liste des noms de domaines de votre site :
www.monsite.com
monsite.com
Certificat SSL
SSL Certificate
Vous sélectionnez «Certificat SSL personnalisé (exemple.com) :» «(*) Custom SSL Certificate». Si le certificat n'est pas encore disponible, vous n'avez qu'à sélectionner le Default et revenir le modifier 20 minutes plus tard. Vous devez choisir le bon certificat SSL en fonction de votre nom de site Web et vous n'avez pas besoin de cliquez sur le bouton Demander ou importer un certificat avec ACM ou Request or Import a Certificate with ACM
Version minimale du protocole SSL
Security Policy
(*) TLSv1.1_2016 (recommanded)
Versions HTTP prises en charge
Supported HTTP Versions
(*) HTTP/2, HTTP/1.1, HTTP/1.0
Objet racine par défaut
Default Root Object
Vous laissez se champ vide
Journalisation
Logging
(*) Désactiver
(*) Off
Compartiment pour les journaux
Bucket for Logs
Vous laissez se champ vide
Préfixe de journal
Log Prefix
Vous laissez se champ vide
Journalisation des cookies
Cookie Logging
(*) On
Activer IPv6
Enable IPv6
Vous activez cette option
Commentaire
Comment
Vous laissez se champ vide
État de la distribution
Distribution State
(*) Enabled

Ensuite, vous cliquez sur le bouton Créer une distribution ou Create Distribution en anglais.

Configuration Route 53

Tout d'abord, vous devez avoir déjà votre nom de domaine pointant vers les enregistrements NS (NameServer) d'Amazon pour le nom de domaine que vous souhaitez héberger chez AWS. Ensuite, vous devez tout d'abord écrire le mot «Route 53» dans le menu de AWS et sélectionner Route 53. Cliquez ensuite sur le nom de domaine que vous souhaitez utiliser.

Création d'une entrée www

Vous commencez par créer une entrée «www» allant pointer vers votre site Web. Pour se faire, vous cliquez sur le bouton Create Record Set et vous entrez les informations suivantes dans le formulaire de champs :

Champ Description
Name www
Type A - IPv4 Address
Alias Choisir dans la liste de CloudFront le nom de votre site venant d'être créer dans la liste «Cloud Front distributions».

Ensuite, vous cliquez sur le bouton Create.

Création d'une entrée vide

Pour l'entrée sans le «www» ou vide, vous effectuez le même principe. Vous cliquez sur le bouton Create Record Set et vous entrez les informations suivantes dans le formulaire de champs :

Champ Description
Name Vous laissez se champ vide
Type A - IPv4 Address
Alias Choisir dans la liste de CloudFront le nom de votre site venant d'être créer dans la liste «Cloud Front distributions».

Ensuite, vous cliquez sur le bouton Create.

Création d'un enregistrement MX

Si votre site Web à besoin d'avoir un système d'envoi de courriel pour les mots de passe oublié par exemple, vous devrez donc créer un enregistrement MX (Mail eXchange) pointant vers le service SES d'AWS. Pour se faire, vous devez cliquez sur le bouton Create Record Set et vous entrez les informations suivantes dans le formulaire de champs :

Champ Description
Name www
Type MX - Mail exchange
Alias No
TTL (Seconds) 300
Value 10 inbound-smtp.us-east-1.amazonaws.com

Ensuite, vous cliquez sur le bouton Create.

Création d'une instance RDS

Pour aller dans le RDS, vous devez écrire le mot «rds» dans le menu de AWS. Vous cliquez dans la colonne de gauche sur «Databases». Vous cliquez ensuite sur le bouton Create database.

Step 1 : Select engine

Dans l'étape «Step 1 : Select engine», vous sélectionnez «Amazon Aurora» et vous sélectionnez la compatibilité MySQL 5.7. Puis vous cliquez sur le bouton Next.

Step 2 : Specify DB details

Dans l'étape «Step 2 : Specify DB details», vous entrez les informations suivantes dans le formulaire de champs :

Champ Description
DB engine Aurora - compatible with MySQL 5.7.12
Capacity type Provisioned
DB engine version Aurora (MySQL)-5.7.12
DB instance class db.r4.large - 2 vCPU, 15.25 GiB RAM (le type d'instance que vous choisissez ici dépendra énormément de vos tests de charge que vous avez au préalable effectuer).
Multi AZ No
Settings
DB instance identifier nomduprojet-rds
Master username root
Master password Vous devriez utiliser un mot de passe désiré ou utiliser l'utilitaire comme pwgen en ligne de commande pour en générer un.
Confirm password Vous répétez le même mot de passe que celui que vous avez écrit dans le champ Master password

Vous cliquez sur le bouton Next.

Step 3 : Configure advanced settings

Lors de la troisième étape des champs de formulaires, vous entrez les informations suivantes dans les champs du formulaires :

Champ Description
Virtual Private Cloud (VPC) vpc_nomduprojet
Subnet group Default
Public accessibility No
No preference No
VPC security groups sg_nomduprojet_rds (Vous deviez supprimer le "Default" s'il existe)
Database options
DB cluster identifier Vous laissez se champ libre
Database name nomduprojet
Port 3306
DB parameter group default.aurora-mysql5.7
DB cluster parameter group default.aurora-mysql5.7
Option group Vous ne modifiez pas se champ
IAM DB authentication No
Encryption
Encryption Enable encryption
Master key aws/rds
Failover
Priority No preference
Backup
Backup retention period 1 day
Monitoring
Enhanced monitoring Enable enhanced monitoring
Monitoring Role Default Default
Granularity 60 seconds
Log exports
Select the log types to publish to Amazon CloudWatch Logs [ ] Audit log
[ ] Error log
[ ] General log
[ ] Slow query log
Maintenance
Auto minor version upgrade Enable auto minor version upgrade
Maintenance window No preference
Deletion protection
  [√] Enable deletion protection

Vous cliquez sur le bouton Create Database. Ensuite vous cliquez sur le bouton View DB Instances details.

Récupération des informations de connexions

Vous cliquez sur la liste des bases de données de RDS. Vous ouvrez l'arbre, cliquez sur le noeud enfant. Vous allez ensuite, dans l'onglet «Connectivity» et vous collez le lien de ligne après Endpoint. Vous aurez par exemple «nomduprojet-rds.variable.ca-central-1.rds.amazonaws.com».

Création d'une instance EC2

Pour aller dans le Security Group, vous devez d'abord choisir la région, soit dans notre exemple Canada Central (ca-central-1) dans la barre noir du haut du site du compte AWS. Ensuite, vous aller dans la section EC2 (lequel correspondent aux instances de VM). Vous cliquez dans la colonne de gauches «Instances». Enfin, vous cliquez sur le bouton Launch Instance.

Étapes 1 - Choisir le type d'AMI / Step 1 - Choose AMI

Si la machine désirez est un Linux, vous devriez entrez les informations dans les champs du formulaire :

Champ Description
AMI Amazon Linux AMI 2018.03.0 (HVM)

Ensuite, vous cliquez sur le bouton Select.

Étapes 2 - Choisir le type d'instance / Step 2 - Choose Instance Type

Lorsque vous choisissez un type d'instance, vous devez au préalable tenir compte des tests de volumétrie ou des tests de charge. Dans notre exemple, nous choisissons une instance assez grosse, mais il n'est pas certains que celle-ci conviennent à tous. Il est a noter que plus vous demandez une grande instance plus le prix se révèle élevé et si vous ne prenez pas une instance assez grosse, votre site risque de tomber car il aura trop de charge. De nombreux personnes préféreront mettre une instance plus grande que le besoin réel et descendront pour une instance plus petite s'ils voient que le besoin était exagéré. On entre donc les informations suivants dans les champs de formulaires :

Champ Description
Instance Type m5.large

Ensuite, vous cliquez sur le bouton Next: Configure Instance Details.

Step 3 - Configure Instance Details

Lors de la troisième étape des champs de formulaires, vous entrez les informations suivantes dans les champs du formulaires :

Champ Description
Number of instances 1
Purchasing option Vous ne devriez pas cocher cette option
Network vpc_nomduprojet
Subnet sb_public_a
Auto-assign Public IP Enable
Placement group Vous ne devriez pas cocher cette option
Capacity Reservation Open
IAM role EC2-nomduprojet
CPU options Vous ne devriez pas cocher cette option
Shutdown behavior Stop
Stop - Hibernate behavior [ ] Enable hibernation as an additional stop behavior
Enable termination protection [√] Protect against accidental termination
Monitoring [√] Enable CloudWatch detailed monitoring
EBS-optimized instance [ ] Launch as EBS-optimized instance
Tenancy Shared - Run a shared hardware instance

On laisse le «Network interfaces» et «Advanced Details» inchangé. Enfin, vous cliquez sur le bouton Next: Add Storage.

Step 4: Add Storage

Dans la quatrième étape, on choisit la taille des volumes de disque dur. Vous pouvez augmenter par la suite la taille des volumes. Si vous n'êtes pas certains de la taille que vous devez choisir, sachez que AWS vous charge selon la taille du volume utilisé, ainsi, il ne charge pas pour l'espace disque de libre sur le volume. Ainsi, il peut être judicieux d'indiquer une taille trop importante pour le besoin réel.

Volume Type Device Snapshot Size (GiB) Volume Type IOPS Throughput Delete on Terminaison Encrypted
EBS /dev/sdb   10 General propose SSD (gp2) 100 / 3000 N/A [ ] ne pas cocher  

Vous cliquez sur le bouton Next: Add Tags

Step 5: Add Tags

Dans la cinquième étape, vous devez ajouter des balises d'identification. Vous devez sur le bouton Add tag 2 fois pour ajouter vos balises :

Clef Valeur Instances Volumes
Projet ec2-nomduprojet [√] [√]
Name ec2-nomduprojet-starterkit [√] [√]

Step 6: Configure Security Group

Dans la sixième étape, vous choisissez les groupes de sécurités précédemment créer. Pour se faire, vous cliquez sur le bouton radio «Select an existing security group» et vous sélectionner les groupes de sécurité suivants :

Groupe de sécurité / Security Group
sg_nomduprojet_public
sg_elb_nomduprojet

Ensuite, vous cliquez sur le bouton Review and Launch.

Lancement de l'instance EC2

Il affiche un sommaire de tous les informations de l'instance EC2 allant être créé. Vous cliquez tous simplement sur le bouton Launch. Ensuite, une fenêtre surgissante apparaît avec le message suivant «Select an existing key pair or create a new key pair». Si vous avez déjà une clef pour d'autres instances, vous sélectionnez «Choose an existing key pair» et vous sélectionnez la clef de vos autres instances. Si vous n'avez pas de clef, alors, vous lui demandez dans créer une et vous sauvegarder précieusement cette clef à deux endroits différents sur votre poste de travail et sur une dossier partagé protégé et accessible par un nombre restreint d'utilisateur. De plus, il ne faut pas oublier que si vous ne sauvegarder pas la clef, vous ne serez pas en mesure de communiquer avec l'instance EC2, lequel ne sera pas très pratique, car vous devez effectuer de nombreux traitement de mise en oeuvre. Une fois cette étape de passer, vous cliquez sur le bouton Launch Instances et ensuite sur le bouton View Instances. Vous allez voir dans liste de la colonne «Status Checks» le message «Initializing», c'est votre instance que vous venez de créer.

Préparation de l'instance

Une fois votre instance EC2 démarrer, vos cochez votre instance dans la liste et vous cliquez sur le bouton Connect. Vous collez les informations de connexion et vous vous connectez en SSH sur l'instance EC2. Lorsque vous accès au prompt de Linux sur votre instance EC2, vous êtes en mesure commencer votre mise en oeuvre de l'instance EC2 ! Commencer par créer un volume physique à l'aide d'une commande comme ceci (voir les commandes lvm) :

sudo vgcreate vgdata /dev/sdb

Par la suite, vous créez un volume logique dans le volume physique avec la commande suivante :

sudo lvcreate -l +100%FREE -n lvwww vgdata

On peut formater le disque à l'aide d'une commande comme celle-ci :

sudo mkfs.ext4 /dev/mapper/vgdata-lvwww

On créer un dossier et on monte le volume dessus avec les commandes suivantes :

sudo mkdir -p /var/www/html
sudo mount --types=ext4 /dev/mapper/vgdata-lvwww /var/www/html

Le volume est accessible, mais lorsque vous allez redémarrer l'instance, il ne sera plus accessible. Pour qu'il soit à nouveau disponibles après un démarrage à froid, vous devez éditer le fichier contenant les volumes à montés à l'aide d'une commande comme ceci :

sudo vi /etc/fstab

Et vous collez la ligne suivante à fin du fichier texte :

/dev/mapper/vgdata-lvwww /var/www/html ext4 defaults,noatime 1 1

Une fois sauvegarder, vous redémarrer l'instance avec une commande ceci :

sudo reboot

Une fois, le volume en place, et que l'instance EC2 a redémarrer avec succès, vous pouvez installer les plus applications de survit comme avec une commande comme celle-ci :

sudo yum install mc rsync mlocate nmap iftop iotop htop -y

Vous pouvez installer une gestionnaire de version comme Git à l'aide de la commande suivante :

sudo yum install git -y

Vous pouvez installer un serveur Web comme Apache 2.4 à l'aide de la commande suivante :

sudo yum install httpd24 -y

Vous pouvez installer un client de base de données MySQL à l'aide de la commande suivante :

sudo yum install mysql57.x86_64 -y

Vous pouvez installer le langage de programmation comme PHP 7.1 à l'aide de la commande suivante :

sudo yum install php71 -y

Vous pouvez installer les extensions MySQL et MBString du PHP 7.1 à l'aide de la commande suivante :

sudo yum install php71-mysqlnd php71-mbstring.x86_64 -y

Enfin, on peut installer AWS CodeDeploy à l'aide des commandes suivantes :

sudo yum install ruby wget -y
wget https://aws-codedeploy-ca-central-1.s3.amazonaws.com/latest/install
chmod +x ./install
sudo ./install auto

A partir de maintenant, tous les utilitaires et les services devrait installer. Il est maintenant temps de bâtir les fondations pour le projet lui-même. On commence donc par créer un dossier adéquat :

sudo mkdir /var/www/html/nomduprojet
sudo chown -R ec2-user:apache /var/www/html/*

Vous créer une configuration pour le projet Apache :

sudo vi /etc/httpd/conf.d/nomduprojet.conf

Vous collez dans se fichier le contenu suivant avec quelques ajustements (voir httpd.conf) :

<VirtualHost *:80>
ServerName www.nomduprojet.com
ServerAlias nomduprojet.com

DocumentRoot "/var/www/html/nomduprojet"

<Directory /var/www/html/nomduprojet>
AllowOverride All
</Directory>

Header set Access-Control-Allow-Origin "*"
RemoteIPHeader X-Forwarded-For

<IfModule mod_setenvif.c>
SetEnvIf X-Forwarded-Proto "^https$" HTTPS
</IfModule>

LogLevel warn
LogFormat "%{Host}i %a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D" combined1
ErrorLog /var/log/httpd/error.log
CustomLog /var/log/httpd/access.log combined1

</VirtualHost>

Vous démarrez ensuite les services que vous avez besoin à l'aide des commandes suivantes :

sudo chkconfig httpd on
sudo service httpd start
sudo service codedeploy-agent start

Se connecter a la base de données RDS avec root

Pour que l'application soit en mesure d'utiliser la base de données, vous commencez donc par tenter de communiquer avec votre service RDS de base de données avec une commande comme ceci (le lien a été précédemment copier dans le presse-papier). Vous aurez donc une formulation ressemblant à ceci :

mysql -u root -p -h nomduprojet-rds-cluster.cluster-variable-central-1.rds.amazonaws.com

Une fois connectez à la base de données, un prompt «mysql>» apparaît, vous pouvez exécuter la commande SQL suivante pour créer un utilisateur spécifique à l'instance EC2 :

CREATE USER 'nomutilisateur'@'%' IDENTIFIED BY '*** mettre le mot de passe ***';

Ensuite, exécuter la commande SQL suivante pour lui donner des accès à la base de données (nomduprojet = Base de données, nomutilisateur = Utilisateur de la base de données) :

GRANT ALL PRIVILEGES ON nomduprojet.* TO 'nomutilisateur'@'%';

Ensuite, pouvez effectuer les opérations dans la base de données si nécessaires, en sélectionnant la base de données :

use nomduprojet;

Et vous entrez vos SOURCE, UPDATE, SELECT,... et tous autres instructions nécessaires à vos projets. Une fois vos opérations terminés, vous pouvez quitter le prompt de MySQL de la façon suivante :

quit;

Vérification de l'instance

Vous vérifiez que l'instance fonctionne correctement en ajoutant l'instance dans le Target Group.

Instantané (Snapshop) de l'instance EC2

Si tout fonctionne normalement, vous pouvez faire maintenant un instantané de l'instance EC2 de la façon suivante :

Création d'un Launch Configuration

Vous devez allez dans EC2 et cliquez dans la colonne de gauche sur «Launch Configuration». Ensuite, vous cliquez sur le bouton Create Launch Configuration.

Step 1 : Choose AMI

Une fenêtre va s'ouvrir et dans la colonne de gauche, vous cliquez sur «My AMIs». Vous cliquez sur le bouton Select correspondant à votre «ami-nomduprojet-starterkit».

Step 2 : Choose Instance Type

Dans une situation normal, vous choisissez les paramètres suivants :

Champ Description
Instance Type m5.large

Step 3. Configure details

Champ Description
Name cl-nomduprojet
Purchasing option  
IAM role EC2-Labs
Monitoring [√] Enable CloudWatch detailed monitoring
EBS-optimized instance [   ] Ne pas cocher cette case
Advanced Details
Kernel ID Use default
RAM Disk ID Use default
User data Ne rien écrire
IP Address Type (*) Assign a public IP address to every instance.

Ensuite, vous cliquez sur le bouton Next: Add Storage.

Step 4. Add Storage

Vous cochez les 2 volumes avec la mention «Delete on terminaison», puis vous cliquez sur le bouton Next: Configure Security Group.

Step 5. Configure Security Group

Vous sélectionnez l'option «(*) Select an existing security group» et vous choisissez les groupes de sécurité suivant :

Champ Description
sg-xxxxxxxxxx sg_nomduprojet_public
sg-xxxxxxxxxx sg_elb_nomduprojet
sg-xxxxxxxxxx sg_nomduprojet_rds
sg-xxxxxxxx default VPC security group
sg-xxxxxxxx sg_nomduprojet_DevOps

Après, vous cliquez sur le bouton Review.

Step 6. Review

Vous cliquez sur le bouton Create Launch Configuration. Une fenêtre apparaît «Select an existing key pair or create a new key pair». Vous sélectionnez «Choose an existing key pair» et vous sélectionnez la clef de vos autres instances et vous cochez la case. Enfin, vous cliquez sur le bouton Launch Instances.

Création d'un Auto Scaling Group

Vous cliquez sur le bouton Create an Auto Scaling Group using this launch configuration. Note : Si vous avez cliqué par erreur à l'extérieur, vous pouvez cliquez sur le bouton Create Auto Scaling group dans l'«Auto Scaling Group», ensuite vous cliquez sur «Launch Configuration» et vous sélectionnez votre «Launch Configuration» que vous venez de créer.

Step 1 : Configure Auto Scaling group details

Champ Description
Group name nomduprojet
Launch Configuration cl-nomduprojet
Group size Start With : 1 Instances
Network vpc_nomduprojet
Subnet sb_nomduprojet_public_a
Advanced Details
Load Balancing [√] Receive traffic from one or more load balancers
Classic Load Balancers Laisser se champ vide
Target Groups tg-nomduprojet
Health Check Type (*) EC2
Health Check Grace Period 300
Monitoring [√] Enable CloudWatch detailed monitoring
Instance Protection Laisser se champ vide
Service-Linked Role Ce champ est rempli automatiquement

Cliquez sur le bouton Next: Configure scaling policies.

Step 2. Configure scaling policies

Vous sélectionnez «Use scaling policies to adjust the capacity of this group». Ensuite, vous sélectionnez «Scale between [ 1 ] and [ 3 ] instances. These will be the minimum and maximum size of your group.». Enfin, vous rentrez les valeurs de champs suivants :

Champ Description
Name sgs_nomduprojet
Metric type Average CPU Utilization
Target value 96
Instances need 300
Disable scale-in [   ] ne pas cocher cette casse

Et vous cliquez sur le bouton Next: Configure Notifications.

Step 3. Configure Notifications

Vous cliquez sur le bouton Add notification et vous choisissez le groupe par défaut :

Champ Description
Send a notification to sns_as_nomduprojet
Whenever instances [√] launch
[√] terminate
[√] fail to launch
[√] fail to terminate

Vous cliquez sur le bouton Next: Configure Tags.

Step 4. Configure Tags

Vous créez la clef suivante :

Clef (Key) Valeur (Value) Tag News Instasnces
Name nomduprojet [√]
Projet ec2-nomduprojet [√]

Vous cliquez sur le bouton Review.

Step 5. Review

Cliquez sur le bouton Create Auto Scaling Group. Vous cliquez sur le bouton Close. Si l'opération a bien fonctionner, une instance EC2 sera créé et visible dans «EC2 Dashboard». Dans le Target Group du «Load Balancer», vous cocher le Target Group que vous venez de créer, et aller dans l'onglet «Targets», et vous devriez voir votre instances dans «Registered targets».

Création d'un dépôt dans le compte de GitHub ou AWS CodeCommit pour le code source du projet

S'il s'agit de GitHub, vous allez sur GitHub et vous cliquez sur le bouton New pour créer votre dépôt. Si vous utilisez AWS CodeCommit, vous allez dans AWS CodeCommit et vous créez votre dépôt.

Create a new repository dans GitHub

Champ Description
Owner Indiquer votre nom d'entreprise, exemple : Gladir.com
Repository name nomduprojet
Description une description du projet
(*) Private

Vous cliquez sur le bouton Create repository.

Ajustement des options de sécurités de GitHub

Dans le dépôt nouvellement créé de GitHub, vous effectuez les étapes suivantes :

Commiter le code du projet dans GitHub

Vous ajoutez le code du projet dans le dépôt de GitHub approprié. Avec TortoiseGit :

Créer un fichier a la racine du projet dans votre GitHub ou AWS CodeCommit nommé «appspec.yml» :

version: 0.0
os: linux
files:
- source: /
  destination: /var/www/html/nomduprojet
hooks:
  BeforeInstall:
    - location: scripts/BeforeInstall.sh
      timeout: 300
      runas: root
  AfterInstall:
    - location: scripts/AfterInstall.sh
      timeout: 300
      runas: root
permissions:
- object: /var/www/html/nomduprojet/
  pattern: "*"
  owner: ec2-user
  group: apache
  mode: 664
  type:
  - file
- object: /var/www/html/nomduprojet/
  pattern: "*"
  owner: ec2-user
  group: apache
  mode: 775
  type:
  - directory

ATTENTION ! Le fichier «appspec.yml» doit être présent dans la racine du projet GitHub ou AWS CodeCommit et ne jamais être supprimer car sinon le déploiement ne marchera pas.

Cliquez sur le bouton Commit & Push.

Création AWS CodeDeploy / AWS CodePipeline

AWS CodeDeploy

Dans le menu AWS, aller dans «CodeDeploy». Dans la colonne de gauche, vous cliquez sur «Deploy». Ensuite, dans le noeud de Deploy, vous cliquez sur «Applications». Enfin, vous cliquez sur le bouton Create Application.

Step 1 : Create application

Champ Description
Application name app-nomduprojet
Compute platform EC2/On-premises

Vous cliquez sur le bouton Create Application.

Step 2 : Create de deployment group

Une fois l'application créer, vous êtes automatiquement amener dans la page «CodeDeploy > Deploy > Applications > Application». Vous cliquez sur le bouton Create deployment group.

Champ Description
Enter a deployment group name dg-nomduprojet
Choose a service role EC2-nomduprojet
Choose how to deploy your application (*) Blue-Green
Specify the Amazon EC2 Auto Scaling groups or Amazon EC2 instances where the current application revision is deployed. (*) Automatically copy Amazon EC2 Auto Scaling group
Choose the Amazon EC2 Auto Scaling group where the current application revision is deployed. nomduprojet
Traffic rerouting Reroute traffic immediately
Choose whether instances in the original environment are terminated after the deployment is succeeds, and how long to wait before termination. Terminate the original instances in the deployment group
  Days 0 Hours 0 Minutes 0
Deployment configuration CodeDeployDefault.AllAtOnce
Select a load balancer to manage incoming traffic during the deployment process. The load balancer blocks traffic from each instance while it's being deployed to and allows traffic to it again after the deployment succeeds. (*) Application Load Balancer or Network Load Balancer
Choose a load balancer tg-nomduprojet

Vous cliquez sur le bouton Create deployment group.

AWS Code Pipeline

Dans le menu «AWS», vous allez dans «CodePipeline». Vous cliquez sur «Pipelines» dans la colonne de gauche. Vous cliquez sur le bouton «Create CodePipeline».

Step 1 : Choose pipeline settings

Champ Description
Pipeline name pl-nomduprojet
Service role (*) New service role
Role name ...-pl-PRD-nomduprojet (se champ est construit automatiquement à partir du champ Pipeline name)
Type your service role name [√] Allow AWS CodePipeline to create a service role so it can be used with this new pipeline
Artifact store Default location

Step 2 : Add source stage

Champ Description
Source provider GitHub si vous avez choisis GitHub plus haut
Connect to GitHub Cliquez sur le bouton Connect to GitHub allant apparaître. Ensuite sur la fenêtre allant apparaître, cliquez sur le bouton Authorise aws-codesuite
Repository monentreprise/nomduprojet
Branch master
Change detection options AWS CodePipeline

Cliquez sur le bouton Next.

Step 3 : Add build stage

Champ Description
(Build - optional) Build provider on laisse se champ vide

Vous cliquez sur le bouton Skip Build Stage et ensuite vous cliquez sur le bouton Skip.

Step 4 : Add deploy stage

Champ Description
Deploy provider AWS CodeDeploy
Application name app-nomduprojet
Deployment group dg-nomduprojet

Vous cliquez sur le bouton Next.

Step 5 : Review

Vous cliquez sur le bouton Create Pipeline. Après cette étape, une instance EC2 sera créé. Le code sera deployé sur l'instance une fois créé.

Supprimer l'ancien Autoscalling

Aller dans EC2, dans Autoscalling Group. Vous cochez dans la liste nomduprojet. Ensuite, vous cliquez sur le bouton Action et choisir l'option «Delete».

Création d'un adresse d'envoi dans SES

Vous aller dans "AWS". Vous recherchez «SES» et choisissez «Simple Email Service».

Choisir la région

Note : Cette étape est optionnel, nous n'avons pas besoins de créer un nouvel utilisateur pour chaque site. Le service n'est pas disponible au Canada, il faut donc choisir «US East (N. Virgina)».

Choisir le SMTP

Note : Cette étape est optionnel, nous n'avons pas besoins de créer un nouvel utilisateur pour chaque site. Vous cliquez sur «SMTP Settings» dans la colonne de gauche. Vous cliquez sur le bouton Create My SMTP Crendentials.

Choisir un utilisateur IAM

Note : Cette étape est optionnel, nous n'avons pas besoins de créer un nouvel utilisateur pour chaque site.

Champ Description
IAM User Name: smtp_nomduprojet

Vous cliquez sur le bouton Create.

Télécharger la clef

Note : Cette étape est optionnel, nous n'avons pas besoins de créer un nouvel utilisateur pour chaque site. Ensuite, on peut télécharger les informations d'authentification en téléchargeant le fichier avec le bouton Download Credentials.

Ajout du nom de domaine

Vous allez dans "AWS". Vous rechercher «SES» et choisissez «Simple Email Service». Vous cliquez sur «Domains» dans la liste de la colonne de gauche. Vous cliquez sur le bouton Verifiy Domain Name.

Champ Description
Domain www.monsite.com
Generate DKIM Settings [√] Cocher la case

Vous cliquez sur le bouton Verify This Domain. Vous cliquez sur le bouton Use Route 53. Cliquez sur le bouton Create Route 53.

Ajout du nom de domaine sans "www"

Vous allez dans "AWS", vous recherchez «SES» et choisissez «Simple Email Service». Cliquez sur «Domains» dans la liste de la colonne de gauche. Cliquez sur le bouton Verifiy Domain Name.

Champ Description
Domain monsite.com
Generate DKIM Settings [√] Cocher la case

Vous cliquez sur le bouton Verify This Domain. Vous cliquez sur le bouton Use Route 53. Cliquez sur le bouton Create Route 53.



Dernière mise à jour : Dimanche, le 16 février 2019