Déploiement
Déploiement • Chapitre 11 : Configuration du serveur et mise en production

Exécution d'une API en arrière-plan

Quand vous fermez votre fenêtre de terminal SSH, Linux envoie un signal SIGHUP qui tue immédiatement votre commande node server.js. Découvrez pourquoi et comment transformer votre script en un service d'arrière-plan permanent.

🛑
Signal SIGHUP

Envoyé par le shell Linux pour fermer tous les processus fils attachés à la session SSH.

👻
Daemon Linux

Processus d'arrière-plan détaché de tout terminal interactif tournant en boucle continue.

🛠️
Commandes nohup / &

Solutions historiques permettant d'ignorer le signal de raccrochage (Hangup).

⚙️
Services systemd

Le gestionnaire de services natif de Linux garantissant l'exécution au démarrage de l'OS.

background-processes.sh
# 1. Problème classique : exécuter Node au premier plan
$ node server.js
[Server] Listening on port 3000...
# 🚨 Dès que vous quittez SSH ou fermez votre PC portable : LE SERVEUR CRASHE !

# 2. Méthode historique : nohup avec redirection des flux et esperluette (&)
$ nohup node server.js > /var/log/app.log 2>&1 &
[1] 14820 # PID du processus créé en arrière-plan

# 3. Vérifier que le processus tourne toujours indépendamment de la console
$ ps aux | grep "node server.js"
ubuntu   14820  0.4  1.8 128456  38420 ?  S  14:30  0:02 node server.js

# 4. Problème persistant : si le code lève une exception non gérée, il meurt sans redémarrer !
# => C'est pourquoi nous utilisons PM2 ou systemd dans la leçon suivante.

Guide Approfondi & Architecture Système

1. Pourquoi les Processus Meurent-ils à la Déconnexion SSH ?

Dans l'architecture Unix :

Chaque session SSH ouverte crée un terminal virtuel (TTY/PTS). Tous les programmes que vous lancez (npm start, node server.js) sont des processus enfants de ce terminal.

Lorsque vous fermez le terminal, Linux considère que l'utilisateur est parti : il envoie le signal SIGHUP (Signal 1 - Hang Up) à tous les processus rattachés. Par défaut, Node.js intercepte ce signal et s'arrête immédiatement !

2. Les Limites de nohup face à la Production Réelle

Bien que nohup détache le processus du terminal :
  • Si le serveur subit une fuite de mémoire ou une erreur non capturée, il meurt définitivement.
  • Si le serveur VPS redémarre (mise à jour du noyau Linux, coupure électrique), le script ne redémarre pas.
  • Il est impossible de monitorer la consommation CPU ou de faire du rechargement sans coupure.

Tableau Comparatif : Méthodes d'Exécution en Arrière-Plan

MéthodePersiste à la fermeture SSH ?Redémarre au Crash ?Redémarre au Reboot Serveur ?
node server.js (Normal)❌ Non (Meurt immédiatement)❌ Non❌ Non
nohup node server.js &✅ Oui❌ Non (Reste mort)❌ Non
tmux / screen✅ Oui (Session virtuelle)❌ Non❌ Non
PM2 / systemd✅ Oui (Daemon natif)✅ Oui (Auto-restart en < 1s)✅ Oui (Démarrage automatique au boot)