Démarrage automatique de NODE.JS avec pm2
PM2 : gestionnaire de processus Il permet de gérer et à maintenir les apps Node.js et donc d'assurer le redémarrage de ces apps lors d'un reboot du système.Mosquitto , Zigbee2mqtt, Node-red ,Nagios ,....redémarrent automatiquement avec systemd ou cron , pour Node.js , il existe PM2 Mes apps node.js sont installées sur une VM proxmos hébergeant d"jà Mosquitto, il en sera de même pour pm2. PM2 n'est pas limité au runtime Node.js. ,il peut être utilisé pour gérer n'importe quel script/runtime de programmation :Python par exemplehttps://pm2.keymetrics.io/Node.js est bien sur déjà installé
Installation de PM2l’option g signifie que l’installation sera globale
Ce qui nous interesse en premier c’est un redémarrage au reboot du système, pour cela :
Comme indiqué dans la réponse de PM2 , copier le commande indiquée à l’invite de la console :
Réponse de PM2 :
Comme on peut le voir sur la copie d’écran, aucun script node.js ou autres (python,…) n’a été lancé, la sauvegarde ne peut être éffectuée :
lançons un script , il est alors possible de sauvegarder la liste des scripts en exécution :
Pour reconnaitre plus facilement les apps , il est possible de les nommer ave l'option --name <nom> L’application s'exécute maintenant sous PM2, si elle plante, PM2 la redémarrera. J'ai pris un mauvais exemple avec Zigbee2mqtt car ce script se lance avec "nmp start" sous le répertoire /opt/zigbee2mqtt Pour ce cas particulier il faut lancer le script par cette commande:
Ne pas oublier de faire après une modification des scripts en éxécution ; pm2 save
Commandes principales- Afficher la liste des scripts:
- afficher une liste formatée en JSON, pratique pour créer un tableau de bord perso
- Arréter un script pm2 stop <Id ou Nom>
- Pour arrêter et supprimer une application : pm2 delete <Id ou Nom>
Des options utiles
restart-delayRemplace dans un script python :while True : ... time.sleep(10)
Passer des argumentsToutes les options passées après --seront passées en argument à l'application :pm2 start app.js -- arg1 arg2
describe pm2 describe <nom application>permet de récupérer des informations sur une application
Mise à jour de PM2 & erreurs Mise à jour : Vous devrez d'abord exécuter la commande d'installation :npm install pm2@latest -gIl suffit ensuite de restaurer la liste des processus
Erreur de systemd:'Job for pm2-xxxxxx.service failed because the service did not take the steps required by its unit configuration.See "systemctl status pm2-michel.service" and "journalctl -xe" for details".
Exécuter la ligne ci dessous ou bien redémarrer:
Si mp2 ne fonctionne pas par exemple pour npm start (pour lancer /opt/zigbee2mqtt/index.js)Il suffit de créer un script sh :
Tableau de bordAvec monit vous pouvez surveiller la mémoire et le processeur depuis la console :