331 lines
5.7 KiB
Markdown
331 lines
5.7 KiB
Markdown
# Configuration PM2 pour Runlock.re
|
|
|
|
Ce guide explique comment configurer PM2 pour que votre application se relance automatiquement après un crash ou un redémarrage du serveur.
|
|
|
|
## 📋 Prérequis
|
|
|
|
- Node.js installé sur le serveur
|
|
- Application qui fonctionne avec `npm run dev`
|
|
- Accès SSH au serveur
|
|
|
|
---
|
|
|
|
## 🚀 Étape 1 : Installer PM2 globalement
|
|
|
|
```bash
|
|
sudo npm install -g pm2
|
|
```
|
|
|
|
Vérifier l'installation :
|
|
```bash
|
|
pm2 --version
|
|
```
|
|
|
|
---
|
|
|
|
## 🔨 Étape 2 : Builder l'application pour la production
|
|
|
|
D'abord, arrêtez votre application en cours (`Ctrl+C` si elle tourne avec `npm run dev`).
|
|
|
|
Puis build l'application :
|
|
|
|
```bash
|
|
npm run build
|
|
```
|
|
|
|
---
|
|
|
|
## 🎯 Étape 3 : Configurer PM2 avec ecosystem.config.js
|
|
|
|
Le fichier `ecosystem.config.js` est déjà créé dans votre projet.
|
|
|
|
**Important** : Si vous êtes dans un environnement de production, assurez-vous que :
|
|
|
|
1. Le fichier `.env.local` existe avec vos variables d'environnement
|
|
2. Le port 3000 est disponible (ou changez-le dans `ecosystem.config.js`)
|
|
|
|
---
|
|
|
|
## ▶️ Étape 4 : Démarrer l'application avec PM2
|
|
|
|
```bash
|
|
pm2 start ecosystem.config.js
|
|
```
|
|
|
|
Vous devriez voir quelque chose comme :
|
|
```
|
|
[PM2] Starting ecosystem.config.js
|
|
[PM2] Process launched
|
|
┌─────────┬────────┬─────────┬─────────┬─────────┐
|
|
│ App name│ id │ mode │ pid │ status │
|
|
├─────────┼────────┼─────────┼─────────┼─────────┤
|
|
│ runlock │ 0 │ cluster │ 12345 │ online │
|
|
└─────────┴────────┴─────────┴─────────┴─────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## 🔄 Étape 5 : Sauvegarder la configuration PM2
|
|
|
|
Pour que PM2 redémarre l'application au boot du serveur :
|
|
|
|
```bash
|
|
pm2 save
|
|
pm2 startup
|
|
```
|
|
|
|
La commande `pm2 startup` affichera une commande à exécuter avec `sudo`. Copiez et exécutez cette commande.
|
|
|
|
Exemple :
|
|
```bash
|
|
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u votre-utilisateur --hp /home/votre-utilisateur
|
|
```
|
|
|
|
---
|
|
|
|
## ✅ Étape 6 : Vérifier que tout fonctionne
|
|
|
|
### Vérifier le statut
|
|
|
|
```bash
|
|
pm2 status
|
|
```
|
|
|
|
### Voir les logs
|
|
|
|
```bash
|
|
pm2 logs runlock
|
|
```
|
|
|
|
### Voir les logs en temps réel
|
|
|
|
```bash
|
|
pm2 logs runlock --lines 50
|
|
```
|
|
|
|
---
|
|
|
|
## 🛠️ Commandes PM2 utiles
|
|
|
|
```bash
|
|
# Voir le statut
|
|
pm2 status
|
|
|
|
# Voir les logs
|
|
pm2 logs runlock
|
|
|
|
# Voir les 50 dernières lignes
|
|
pm2 logs runlock --lines 50
|
|
|
|
# Redémarrer l'application
|
|
pm2 restart runlock
|
|
|
|
# Arrêter l'application
|
|
pm2 stop runlock
|
|
|
|
# Supprimer l'application de PM2
|
|
pm2 delete runlock
|
|
|
|
# Monitoring en temps réel
|
|
pm2 monit
|
|
|
|
# Redémarrer toutes les applications
|
|
pm2 restart all
|
|
|
|
# Voir les informations détaillées
|
|
pm2 show runlock
|
|
|
|
# Vider les logs
|
|
pm2 flush
|
|
|
|
# Recharger sans downtime (recommandé pour les mises à jour)
|
|
pm2 reload runlock
|
|
```
|
|
|
|
---
|
|
|
|
## 🔄 Mise à jour de l'application
|
|
|
|
Quand vous mettez à jour votre application :
|
|
|
|
```bash
|
|
# 1. Aller dans le dossier du projet
|
|
cd /chemin/vers/runlock-v2
|
|
|
|
# 2. Récupérer les dernières modifications (si Git)
|
|
git pull
|
|
|
|
# 3. Installer les nouvelles dépendances
|
|
npm install
|
|
|
|
# 4. Rebuild l'application
|
|
npm run build
|
|
|
|
# 5. Recharger PM2 (reload = zéro downtime)
|
|
pm2 reload runlock
|
|
|
|
# Ou redémarrer complètement
|
|
pm2 restart runlock
|
|
```
|
|
|
|
---
|
|
|
|
## 🔍 Dépannage
|
|
|
|
### L'application ne démarre pas
|
|
|
|
1. Vérifiez les logs :
|
|
```bash
|
|
pm2 logs runlock --lines 100
|
|
```
|
|
|
|
2. Vérifiez que le port 3000 est libre :
|
|
```bash
|
|
sudo netstat -tulpn | grep 3000
|
|
```
|
|
|
|
3. Vérifiez que `.env.local` existe :
|
|
```bash
|
|
ls -la .env.local
|
|
```
|
|
|
|
### L'application ne redémarre pas au boot
|
|
|
|
1. Vérifiez que `pm2 startup` a été exécuté :
|
|
```bash
|
|
pm2 startup
|
|
```
|
|
|
|
2. Vérifiez que PM2 est sauvegardé :
|
|
```bash
|
|
pm2 save
|
|
```
|
|
|
|
### L'application crash en boucle
|
|
|
|
1. Vérifiez les logs pour voir l'erreur :
|
|
```bash
|
|
pm2 logs runlock --err
|
|
```
|
|
|
|
2. Vérifiez la mémoire disponible :
|
|
```bash
|
|
free -h
|
|
```
|
|
|
|
3. Réduisez `max_memory_restart` dans `ecosystem.config.js` si nécessaire
|
|
|
|
---
|
|
|
|
## 🔐 Sécurité
|
|
|
|
### Changer le port (si nécessaire)
|
|
|
|
Si le port 3000 est déjà utilisé, modifiez `ecosystem.config.js` :
|
|
|
|
```javascript
|
|
env: {
|
|
NODE_ENV: 'production',
|
|
PORT: 3001 // Changez le port ici
|
|
}
|
|
```
|
|
|
|
Puis redémarrez :
|
|
```bash
|
|
pm2 restart runlock
|
|
```
|
|
|
|
### Limiter les logs
|
|
|
|
Pour éviter que les logs prennent trop de place :
|
|
|
|
```bash
|
|
pm2 install pm2-logrotate
|
|
pm2 set pm2-logrotate:max_size 10M
|
|
pm2 set pm2-logrotate:retain 7
|
|
```
|
|
|
|
---
|
|
|
|
## 📊 Monitoring
|
|
|
|
### Dashboard PM2 Plus (optionnel)
|
|
|
|
PM2 offre un dashboard en ligne gratuit :
|
|
|
|
```bash
|
|
pm2 link [secret_key] [public_key]
|
|
```
|
|
|
|
Les clés sont disponibles sur [pm2.io](https://pm2.io)
|
|
|
|
### Monitoring local
|
|
|
|
```bash
|
|
pm2 monit
|
|
```
|
|
|
|
Cette commande affiche :
|
|
- Utilisation CPU
|
|
- Utilisation mémoire
|
|
- Logs en temps réel
|
|
|
|
---
|
|
|
|
## ✅ Test final
|
|
|
|
Pour tester que tout fonctionne :
|
|
|
|
1. **Test de redémarrage manuel** :
|
|
```bash
|
|
pm2 restart runlock
|
|
```
|
|
|
|
2. **Test de crash** :
|
|
```bash
|
|
# Tuer le processus manuellement (ne faites pas ça en production !)
|
|
pm2 delete runlock
|
|
pm2 start ecosystem.config.js
|
|
# PM2 devrait le relancer automatiquement
|
|
```
|
|
|
|
3. **Test au boot** :
|
|
```bash
|
|
# Redémarrer le serveur
|
|
sudo reboot
|
|
# Après le redémarrage, vérifiez
|
|
pm2 status
|
|
# L'application devrait être "online"
|
|
```
|
|
|
|
---
|
|
|
|
## 📝 Résumé rapide
|
|
|
|
Pour démarrer rapidement :
|
|
|
|
```bash
|
|
# 1. Installer PM2
|
|
sudo npm install -g pm2
|
|
|
|
# 2. Builder l'app
|
|
npm run build
|
|
|
|
# 3. Démarrer avec PM2
|
|
pm2 start ecosystem.config.js
|
|
|
|
# 4. Sauvegarder pour le boot
|
|
pm2 save
|
|
pm2 startup
|
|
# (Suivez les instructions affichées)
|
|
|
|
# 5. Vérifier
|
|
pm2 status
|
|
pm2 logs runlock
|
|
```
|
|
|
|
---
|
|
|
|
**Dernière mise à jour** : 2025
|
|
|