Jouer avec AWS et ses services EC2, S3 …

Je teste depuis quelques temps les serveurs cloud Amazon, Google, Azure (et hum Gandi). J’ai été calmé par Azure qui facture très vite mais rembourse très lentement. Pour le moment je pars sur de l’AWS EC2 et S3 pour plusieurs raisons:

  • La documentation est vraiment bien faite
  • L’ergonomie est très bonne, on comprends ce qu’on fait
  • L’API NodeJS de S3 est top
  • Les micros instance sont gratuite pendant 1an
  • L’intégration DNS avec Gandi marche très bien

Ainsi j’ai commencé à migrer tout mes sites web WordPress et NodeJS. Par ou commencer ?

Etape 1 : Créer une instance EC2

Alors je m’inspire d’un bout de ce tutoriel très didactique.

Créer un compte Amazon.

Aller sur la page de Amazon EC2. Vous devrez indiquer votre carte bleu mais ne serez pas débité.

Démarrer une instace EC2

Connectez-vous sur la console Amazon pour créer une instance EC2. Surtout choisissez AVANT la LOCALISATION. J’ai choisi Ireland pour être dans la zone Euro.

Choisir une instance Amazon Linux AMI

Choisir le plus petit modèle sur lequel est indiqué Free Tier.

Choisir l’espace disque. Vous pouvez monter à 30Go gratuitement. Le coût est calculé en I/O sur les SSD.

Passer le tagging, puis sélectionner les ports. HTTP, HTTPS, … Il faut que je creuse le sujet pour comprendre comment activer l’envoi de mail

Puis lancer la création de l’instance. ATTENTION Le site fait apparaître une popup permettant de créer et télécharger une pair de clef pour se connecter à l’instance. Mettez là dans un endroit sécurisé.

Et voilà ! Vous pouvez lui donner un nom. Je ne sais pas comment ça se passe si l’on souhaite changer la configuration machine pour passer sur du payant plus performant ou sécurisé.

Etape 2 : Créer une IP Elastique

Vous pouvez gratuitement créer une adresse IP élastique que vous pourrez ensuite associer à votre instance. Mais à quoi ça sert ?

  • C’est une adresse IP plus « humaine »
  • Vous pouvez basculer l’IP d’une instance à l’autre lors de maintenance
  • Dans Gandi vous pourrez rajouter un record
    monsite 10800 IN A 01.02.03.04

Etape 3 : Se connecter avec Putty

Pour se connecter avec Putty (j’utilise Putty Portable) le tutoriel est ici.

  • Télécharger Putty (ou sa version Portable)
  • Télécharger et lancer Puttygen.exe
  • Charger votre clef .pem (forcer le filtre)
  • Sauvegarder la « Private Key » en .ppk

Puis dans Putty il suffit de renseigner le fichier .ppk

Pensez à enregistrer car c’est pénible à refaire.

Etape 4 : Installer un LAMP

Alors c’est super simple toute l’explication se trouve sur Amazon.
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html

Etant chez Orange j’ai une IP Dynamique donc je ne peux pas configurer PHPMyAdmin pour y avoir accès depuis pour desktop. Mais ce n’est pas grave.

Pour un n00b comme moi, j’apprécie les conseils de sécurité de ce tuto pour isoler l’utilisateur Apache.

Etape 5 : Installer un WordPress

Alors c’est super simple toute l’explication se trouve sur Amazon.
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/hosting-wordpress.html

Encore une fois de très bon conseils de sécurité. Ensuite je compléterais par:

  • Importer vos précédents Article tout de suite
  • Utiliser les plugins Akismet, Jetpack, CookieNotice, …
  • J’ai du augmenter l’upload dans /etc/php-*.ini
  • Acheter un template sur ThemeForest.

Etape 6 : Installer un NodeJS

Alors ça devient plus compliqué ! Je vous conseils de lire:

Faire un update des package

sudo yum update

Installer GCC++ and Make.

sudo yum install gcc-c++ make

Installer GIT

sudo yum install git

Installer NodeJS

Attention l’URL à changé ! le principe reste le même il faut le compiler.

git clone git://github.com/nodejs/node.git
cd node
git checkout v5.0.0
sudo ./configure
sudo make
sudo make install

Installer NPM

Déjà il faut faire une manipulation pour indiquer ou installer les modules.

sudo nano /etc/sudoers

Ajouter :/usr/local/bin au secure_path

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin

Puis le principe reste le même il faut le compiler. Attention l’URL à changé ! Je me suis placer à côté du répertoire node.

git clone https://github.com/npm/npm.git
cd npm
sudo make
sudo make install

Premier Serveur

Pour tester, créer un fichier package.json

{
  "name": "sample",
  "version": "0.0.1",
  "dependencies": {
    "express": "^4.12.3"
  }
}
npm install

Créer un fichier app.js

var express = require("express");
var app = express();


app.get("/",function(req,res){
  res.send("

Hello from EC2

« ); }); app.listen(80);

Et lancer, vous devriez voir la page dans votre navigateur.

sudo node app.js

Alors c’est là ou je me dis qu’il manque une explication pour cloisonner les droits. Ca m’embête de lancer Node en sudo. Si vous avez des bonnes pratiques ça m’instéresse !

Installer Forever

On change de tutoriel pour permettre à notre script d’être toujours opérationnel.

Une astuce pour faire de la redirection de port (je ne vois pas trop l’intérêt vu que Amazon permet d’ouvrir des ports)

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 8080

Télécharger Forever en global

sudo npm install forever -g

Script start.js

#!/bin/bash
 
# Invoke the Forever module (to START our Node.js server).
/usr/local/lib/node_modules/forever/bin/forever \
start \
-al forever.log \
-ao out.log \
-ae err.log \
app.js
chmod +x ./start.sh

Script stop.js

#!/bin/bash
 
# Invoke the Forever module (to STOP our Node.js server).
/usr/local/lib/node_modules/forever/bin/forever stop app.js
chmod +x ./stop.sh

Et voilà !

Etape 7 : Installer SARAH

Actuellement Je télécharge SARAH v4 depuis github.

git clone https://github.com/JpEncausse/SARAH-Server-NodeJS.git
cd SARAH-Server-NodeJS/server/app
sudo npm install
sudo ./start_server.sh

Note: je dois investiguer sur un bug sur RPi: les plugins SARAH perdent la varialle NODE_PATH et donc le chemin vers les modules communs !

Merci Johan: Ensuite pour les updates il suffit de faire un git pull

Etape 8 : SES : Simple Email Service

Le service est gratuit SES jusqu’à 62.000 emails/mois. Il suffit d’y associer un nom de domaine et une adresse email.

Depuis Juillet 2015, il est fortement conseillé d’utiliser IAM pour créer un utilisateur dont le rôle sera restreint à l’envoi de mail. Surtout mettez un nom cours sinon ça ne passe pas sous WordPress et notez bien les SMTP login/pass (en régénérant ça ne marchait pas)

WordPress

L’extension Easy WP SMTP permet d’utiliser le SMTP de Amazon SES. Il faut renseigner les identifiants et mots de passe correspondant sur le port 25 en TLS.

NodeJS

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.