Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Les 22 & 23 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. Node.js
  3. Mise en production
Extrait - Node.js Exploitez la puissance de JavaScript côté serveur
Extraits du livre
Node.js Exploitez la puissance de JavaScript côté serveur
1 avis
Revenir à la page d'achat du livre

Mise en production

Introduction

Ce chapitre est dédié aux outils aidant à l’utilisation de Node en environnement de production, c’est-à-dire avec de nouvelles contraintes (par exemple, avoir un processus lancé en permanence, superviser des applications ou encore lancer Node au démarrage des machines, utiliser un proxy inverse, etc.). Le but ici est de vous fournir des exemples concrets de solutions ; bien entendu, il en existe des centaines ! Comme vous le verrez au début de cette partie, Node peut être épaulé par des compagnons pour s’assurer qu’il tourne en permanence. Vous découvrirez aussi comment il s’intègre au sein de serveurs web existants, et enfin les possibilités de déploiement automatisé.

Forever

Forever est un outil en ligne de commande permettant de faire fonctionner un processus Node de manière continue (c’est-à-dire « pour toujours », d’où le nom forever en anglais).

L’installation est on ne peut plus simple :


$ npm install forever -g
 

Voici quelques cas d’utilisation courants.

Le premier consiste à démarrer une application Node « pour toujours ». Dans le cas où le processus s’arrêterait (pour cause d’erreur ou autre), Forever le relancera automatiquement. L’instruction est la suivante :


$ forever start index.js
 

On peut maintenant voir l’état du processus grâce à la commande suivante :


$ forever list  
info:    Forever processes running  
data:        uid  command             script   forever pid   logfile 
uptime  
data:    [0] 2kNS /usr/local/bin/node index.js 24769   24787 
/home/me/.forever/2kNS.log 0:0:0:5.49
 

Si plusieurs scripts sont lancés, la sortie de la commande forever list comporte logiquement plusieurs lignes.

Pour interagir avec un script lancé, on utilise soit son identifiant numérique soit son uid. Par exemple, pour redémarrer le script donné dans l’exemple précédemment :


$ forever restart 0
 

0 correspond...

Supervision

Superviser une nouvelle infrastructure Node est capital. Que ce soit pour vérifier les performances ou s’assurer que tout va bien. Node s’intégrant facilement dans une architecture existante, il n’est pas complexe à superviser. Des solutions comme Nagios et NPRE peuvent facilement donner beaucoup d’informations.

Cette partie s’adresse principalement aux devops connaissant un minimum Nagios. Cependant, les concepts restent identiques quels que soitent les outils, lorsqu’il s’agit de s’assurer que le processus Node tourne en permanence.

Le cas le plus courant est de s’assurer que les processus Node sont bien lancés. Voici un court exemple de configuration du service depuis un serveur Nagios :


define service {  
        hostgroup_name                nodejs-nrpe-servers  
        service_description           Node process  
        check_command                 check_nrpe!check_node_procs 
        use                           generic-service  
        notification_interval         0 ;  
}
 

Ici, le serveur Nagios interroge tous les hôtes distants...

Recettes

1. Reverse proxy

Le proxy inverse (reverse proxy) est un concept simple et fort utile. Au lieu qu’un client fasse une requête directement sur l’application Node, il existe un intermédiaire entre les deux. Cette façon de faire est courante parce que très puissante. En effet, l’utilisation d’un proxy inverse ouvre de nombreuses possibilités.

Tout d’abord, on peut intégrer des applications Node dans l’infrastructure existante (si l’on a déjà des serveurs web « classiques », comme Apache/Nginx ou autre). Ensuite, cela rend possible l’utilisation de cache au niveau de ce proxy afin d’accélérer les traitements et de réduire la charge. De surcroît, les proxies inverses peuvent être placés à différents endroits, afin de délivrer du contenu au plus près des clients par exemple, ou encore d’avoir de la répartition de charge. Enfin, cela permet aussi d’avoir autant d’applications Node que l’on souhaite sur la même machine (sur différents ports) et d’avoir un seul point unique pour les consulter : le serveur web qui écoute sur les ports 80 et 443.

Les exemples qui suivent partent du principe que l’on a un domaine mondomaine.tld et que l’application Node, un site web dynamique écoutant sur le port 9000, doit être accessible depuis ce nom de domaine.

a. Avec Apache

Tout d’abord, on vérifie que les modules mod_proxy et mod_proxy_http sont bien activés dans l’installation.

Puis on ajoute les entrées ProxyPreserveHost, ProxyPass et ProxyPassReverse dans la configuration de VirtualHost comme dans l’exemple suivant :


<VirtualHost *:80>  
    ServerAdmin monemail@mondomaine.tld  
    ServerName mondomaine.tld  
  
    # Demande à Apache de conserver l'en-tête HTTP Host intact.  
    ProxyPreserveHost On  
  
    <Proxy *>  
        Order deny,allow  
        Allow from all  
    </Proxy>  
  
    <Location />  
        # Associe le chemin courant (/) au proxy HTTP...