Déployer Node.JS sur une instance EC2 Linux Amazon AWS

 AWS (Amazon Web Services) est l'hébergeur le plus utilisé par les startups grâce à sa "scalabilité" et ses coûts.

La première année, Amazon vous offre une instance sans débourser le moindre sous.
Vous aurez besoin de votre carte bleue.
Je vous invite à suivre la vidéo (32min) pour savoir comment créer une application Node.JS sur AWS. Et pour celles et ceux qui préfèrent l'écrit, j'ai ajouté les instructions écrites et les sources à la suite.

Création d'une instance EC2

  1. Aller sur ce lien et créer un compte
  • Préparer votre carte bleue
  • Préparer votre téléphone pour la confirmation par SMS
  • Les 2 seront vérifiés. Attention, si vous dépassez le quota, votre carte bleue sera débitée. A 85% d'utilisation de votre quota, chaque mois, vous serez prévenu.e et vous pourrez couper votre instance avant qu'il ne soit trop tard.
  • Une fois connecté, changer la localisation de votre compte. Par défaut les instances seront crées dans l'Ohio (Etats-Unis). Il est préférable de créer votre instance prêt de chez vous ou proche de votre clients.
  • Dans le menu "Services" en haut à droite, choisir la catégorie "EC2"
  • Cliquer sur "Launch instances" en orange
  • La liste des images d'instances apparaît. Tout d'abord cochez "Free tier only" sur la colonne de gauche pour être sûr.e de ne pas prendre une instance payante !
  • Choisissez l'image "Amazon Linux 2 AMI". Vous pouvez choisir une autre distribution/image, mais la suite est basée sur cette image.
  • Dans l'étape 2 : "Choose an instance", ne touchez plus rien et valider avec "Review and Launch"
    • Si vous voulez plus de détails sur les autres parties, regardez la vidéo où j'explique les possibilités de paramétrages dont on a pas besoin pour ce que l'on veut faire
  • Cliquer sur "Launch"
  • Un popup va apparaitre. Faites très attention ici, sinon vous risquez de devoir créer une nouvelle instance. Dans ce popup, choisissez : "Create a new key pair" et dans le formulaire de saisie, mettez le nom de votre application puis cliquer sur "Download key pair". Enregistrez votre clé en dehors de votre dossier de code. Si vous perdez cette clé, vous perdez l'accès à votre serveur.
  • Ouvrez votre terminal (Mac) ou Invite de commandes (Windows) et placer vous ("cd") dans le dossier où vous avez téléchargé votre clé. Puis effectuer les commandes suivantes
    • Mac/Linux : sudo chmod 600 <nom_clé>.pem
    • Windows : chmod 600 <nom_clé>.pem
  • Votre clé est prête pour ouvrir l'accès à votre serveur. La commande pour vous connecter est dans l'interface. Pour la trouver, cliquer sur "Services" > "EC2". Cliquer sur la ligne où se trouve votre instance. Puis cliquer sur le bouton "Connect" au dessus du tableau des instances. Un popup s'ouvrira, puis cliquer sur "SSH Client". Et là vous trouverez votre commande de connexion. Tapez cette commande dans votre terminal, dans le dossier où se trouve votre clé. Elle ressemble à ça :
    • ssh -i "<nom_clé>.pem" ec2-user@<public-ip-server>.<instance_location>.compute.amazonaws.com

    Installer Node.JS sur EC2

    1. Vous êtes maintenant connecté.e à un serveur linux vide. Il va falloir tout installer.
    • On va installer le strict minimum mais vous pourriez installer Apache ou NGINX, un serveur de base de données (MariaDB, MongoDB, etc...), des outils de monitoring de serveur, etc...
    • sudo yum update -y
      • Mise à jour votre repository yum 
    • curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
      • Installation de la version 0.37.2 de NVM (allez sur la documentation officielle de NVM pour avoir la dernière version)
      • Copier/coller la commande affichée dans la console après l'installation pour installer NVM sur votre système
    • nvm install 15
      • Pour installer la version 15 de Node
    • sudo iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
    • sudo iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT
    • sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
      • Ces 3 commandes ouvrent les ports 80 puis 8080 du serveur et redirige le port 8080 vers le port 80. Le port 8080 sera celui où résidera l'application Node.JS, le port 80 est le port par défaut utiliser par les navigateur. C'est le port du protocole HTTP. Pour le HTTPS, c'est le port 443.
    • vim index.js
      • Tapez "A" pour pouvoir écrire dans le fichier et coller le code de cette page en vous assurant de changer le port 3000 par 8080. Puis faire "Echap" et les caractères ":wq" puis Entrée pour enregistrer (w - write) et quitter (q - quit) le fichier.
    • node index.js
    • Aller sur l'URL de votre serveur et vous devriez voir un "Hello world".
      • Si ça ne fonctionne pas, mettez un commentaire sur la vidéo, dans ce post ou envoyez moi un email
    • Enfin, installer PM2 pour créer un daemon de votre serveur
      • npm i -g pm2
      • pm2 index.js --name mon_app

      Partie 2 : Installer une application React/Node via Github sur AWS

      Pour avoir accès à la partie 2 :

      • avec la vidéo (1h17)
        • Déployer Node.JS et React sur le même serveur
        • Utiliser Github pour le déploiement
      • et le code final

      Vous pouvez créer un compte de membre gratuit.

      Sources : 

      Laisser un commentaire