Checkpoint: Ajout des scripts de mise à jour pour le serveur VPS :
1. **backup-before-update.sh** : Script de sauvegarde automatique - Sauvegarde complète des fichiers de l'application - Export de la base de données MySQL - Sauvegarde du fichier .env - Conservation des 10 dernières sauvegardes 2. **update-app.sh** : Script de mise à jour automatique - Création d'une sauvegarde de sécurité - Arrêt/redémarrage du service - Copie des nouveaux fichiers - Installation des dépendances - Application des migrations de base de données - Vérification du bon fonctionnement 3. **create-deployment-package.sh** : Script de création de package - Crée une archive .tar.gz prête à transférer - Inclut tous les fichiers nécessaires - Exclut node_modules, .git, .env 4. **Documentation complète** : - GUIDE_MISE_A_JOUR.md : Guide détaillé avec procédures de mise à jour et rollback - README.md : Documentation des scripts avec exemples d'utilisation 5. **Package de déploiement créé** : - formation-manager-update-20251127_074417.tar.gz (2.6M) - Prêt à être transféré sur le serveur VPS
This commit is contained in:
298
deployment-scripts/GUIDE_MISE_A_JOUR.md
Normal file
298
deployment-scripts/GUIDE_MISE_A_JOUR.md
Normal file
@@ -0,0 +1,298 @@
|
||||
# Guide de Mise à Jour - Formation Manager Itinova
|
||||
|
||||
## 📋 Vue d'ensemble
|
||||
|
||||
Ce guide explique comment mettre à jour l'application Formation Manager Itinova sur votre serveur VPS.
|
||||
|
||||
## ⚠️ Avant de commencer
|
||||
|
||||
### Prérequis
|
||||
|
||||
- Accès SSH au serveur VPS
|
||||
- Droits sudo/root
|
||||
- L'application doit être déjà installée et fonctionnelle
|
||||
- Connexion à la base de données MySQL/TiDB
|
||||
|
||||
### Informations importantes
|
||||
|
||||
- **Temps d'arrêt estimé**: 5-10 minutes
|
||||
- **Sauvegarde automatique**: Oui (10 dernières sauvegardes conservées)
|
||||
- **Rollback possible**: Oui (via les sauvegardes)
|
||||
|
||||
## 🚀 Méthode 1: Mise à jour automatique (Recommandée)
|
||||
|
||||
### Étape 1: Télécharger les fichiers de mise à jour
|
||||
|
||||
Téléchargez le package de mise à jour depuis Manus et transférez-le sur votre serveur:
|
||||
|
||||
```bash
|
||||
# Sur votre machine locale
|
||||
scp formation-manager-update.tar.gz user@votre-serveur:/tmp/
|
||||
|
||||
# Ou utilisez SFTP/WinSCP pour transférer le fichier
|
||||
```
|
||||
|
||||
### Étape 2: Extraire le package
|
||||
|
||||
```bash
|
||||
# Se connecter au serveur
|
||||
ssh user@votre-serveur
|
||||
|
||||
# Extraire le package
|
||||
cd /tmp
|
||||
tar -xzf formation-manager-update.tar.gz
|
||||
cd formation-manager-itinova
|
||||
```
|
||||
|
||||
### Étape 3: Rendre les scripts exécutables
|
||||
|
||||
```bash
|
||||
chmod +x deployment-scripts/*.sh
|
||||
```
|
||||
|
||||
### Étape 4: Lancer la mise à jour
|
||||
|
||||
```bash
|
||||
sudo ./deployment-scripts/update-app.sh
|
||||
```
|
||||
|
||||
Le script va automatiquement:
|
||||
1. ✅ Créer une sauvegarde complète
|
||||
2. ✅ Arrêter le service
|
||||
3. ✅ Sauvegarder la configuration (.env)
|
||||
4. ✅ Copier les nouveaux fichiers
|
||||
5. ✅ Restaurer la configuration
|
||||
6. ✅ Installer les dépendances
|
||||
7. ✅ Appliquer les migrations de base de données
|
||||
8. ✅ Construire l'application
|
||||
9. ✅ Redémarrer le service
|
||||
|
||||
### Étape 5: Vérifier le bon fonctionnement
|
||||
|
||||
```bash
|
||||
# Vérifier le statut du service
|
||||
sudo systemctl status formation-manager
|
||||
|
||||
# Voir les logs en temps réel
|
||||
sudo journalctl -u formation-manager -f
|
||||
|
||||
# Tester l'application dans le navigateur
|
||||
# Ouvrir: http://votre-domaine.com
|
||||
```
|
||||
|
||||
## 🔧 Méthode 2: Mise à jour manuelle
|
||||
|
||||
Si vous préférez contrôler chaque étape:
|
||||
|
||||
### 1. Créer une sauvegarde
|
||||
|
||||
```bash
|
||||
sudo ./deployment-scripts/backup-before-update.sh
|
||||
```
|
||||
|
||||
### 2. Arrêter le service
|
||||
|
||||
```bash
|
||||
sudo systemctl stop formation-manager
|
||||
```
|
||||
|
||||
### 3. Sauvegarder la configuration
|
||||
|
||||
```bash
|
||||
sudo cp /var/www/formation-manager/.env /tmp/.env.backup
|
||||
```
|
||||
|
||||
### 4. Copier les nouveaux fichiers
|
||||
|
||||
```bash
|
||||
cd /var/www/formation-manager
|
||||
sudo find . -mindepth 1 -maxdepth 1 ! -name '.env' ! -name 'node_modules' -exec rm -rf {} +
|
||||
sudo cp -r /tmp/formation-manager-itinova/* .
|
||||
```
|
||||
|
||||
### 5. Restaurer la configuration
|
||||
|
||||
```bash
|
||||
sudo cp /tmp/.env.backup /var/www/formation-manager/.env
|
||||
```
|
||||
|
||||
### 6. Installer les dépendances
|
||||
|
||||
```bash
|
||||
cd /var/www/formation-manager
|
||||
sudo pnpm install --prod
|
||||
```
|
||||
|
||||
### 7. Appliquer les migrations
|
||||
|
||||
```bash
|
||||
sudo pnpm db:push
|
||||
```
|
||||
|
||||
### 8. Redémarrer le service
|
||||
|
||||
```bash
|
||||
sudo systemctl start formation-manager
|
||||
sudo systemctl status formation-manager
|
||||
```
|
||||
|
||||
## 🔄 Restauration d'une sauvegarde (Rollback)
|
||||
|
||||
Si la mise à jour pose problème, vous pouvez restaurer une sauvegarde:
|
||||
|
||||
### 1. Lister les sauvegardes disponibles
|
||||
|
||||
```bash
|
||||
ls -lh /var/backups/formation-manager/
|
||||
```
|
||||
|
||||
### 2. Choisir une sauvegarde
|
||||
|
||||
```bash
|
||||
# Exemple: backup_20240119_143022
|
||||
BACKUP_DIR="/var/backups/formation-manager/backup_20240119_143022"
|
||||
```
|
||||
|
||||
### 3. Arrêter le service
|
||||
|
||||
```bash
|
||||
sudo systemctl stop formation-manager
|
||||
```
|
||||
|
||||
### 4. Restaurer les fichiers
|
||||
|
||||
```bash
|
||||
cd /var/www/formation-manager
|
||||
sudo rm -rf *
|
||||
sudo tar -xzf $BACKUP_DIR/app_files.tar.gz -C .
|
||||
```
|
||||
|
||||
### 5. Restaurer la configuration
|
||||
|
||||
```bash
|
||||
sudo cp $BACKUP_DIR/.env.backup /var/www/formation-manager/.env
|
||||
```
|
||||
|
||||
### 6. Restaurer la base de données (optionnel)
|
||||
|
||||
```bash
|
||||
# Extraire le dump SQL
|
||||
gunzip -c $BACKUP_DIR/database.sql.gz > /tmp/restore.sql
|
||||
|
||||
# Restaurer dans MySQL
|
||||
mysql -h HOST -u USER -p DATABASE < /tmp/restore.sql
|
||||
|
||||
# Nettoyer
|
||||
rm /tmp/restore.sql
|
||||
```
|
||||
|
||||
### 7. Redémarrer le service
|
||||
|
||||
```bash
|
||||
sudo systemctl start formation-manager
|
||||
sudo systemctl status formation-manager
|
||||
```
|
||||
|
||||
## 📝 Nouveautés de cette version
|
||||
|
||||
### Corrections de bugs
|
||||
- ✅ **Décalage horaire**: Les heures s'affichent maintenant correctement dans le formulaire d'édition des séquences (9h00 reste 9h00)
|
||||
- ✅ **Menu navigation**: Ajout du menu latéral sur la page Import Excel
|
||||
|
||||
### Améliorations
|
||||
- ✅ **Réorganisation**: Menu "Import Excel" déplacé dans la section Configuration pour une meilleure organisation
|
||||
|
||||
### Migrations de base de données
|
||||
Aucune migration majeure dans cette version. Le script `pnpm db:push` synchronisera automatiquement le schéma.
|
||||
|
||||
## 🆘 Résolution de problèmes
|
||||
|
||||
### Le service ne démarre pas
|
||||
|
||||
```bash
|
||||
# Voir les logs d'erreur
|
||||
sudo journalctl -u formation-manager -n 100 --no-pager
|
||||
|
||||
# Vérifier les permissions
|
||||
sudo chown -R www-data:www-data /var/www/formation-manager
|
||||
sudo chmod -R 755 /var/www/formation-manager
|
||||
sudo chmod 600 /var/www/formation-manager/.env
|
||||
```
|
||||
|
||||
### Erreur de connexion à la base de données
|
||||
|
||||
```bash
|
||||
# Vérifier le fichier .env
|
||||
sudo cat /var/www/formation-manager/.env | grep DATABASE_URL
|
||||
|
||||
# Tester la connexion MySQL
|
||||
mysql -h HOST -u USER -p -e "SELECT 1;"
|
||||
```
|
||||
|
||||
### Port déjà utilisé
|
||||
|
||||
```bash
|
||||
# Voir quel processus utilise le port 3000
|
||||
sudo lsof -i :3000
|
||||
|
||||
# Tuer le processus si nécessaire
|
||||
sudo kill -9 PID
|
||||
```
|
||||
|
||||
### Problème de permissions
|
||||
|
||||
```bash
|
||||
# Réinitialiser les permissions
|
||||
cd /var/www/formation-manager
|
||||
sudo chown -R www-data:www-data .
|
||||
sudo chmod -R 755 .
|
||||
sudo chmod 600 .env
|
||||
```
|
||||
|
||||
## 📞 Support
|
||||
|
||||
En cas de problème:
|
||||
|
||||
1. **Vérifier les logs**: `sudo journalctl -u formation-manager -f`
|
||||
2. **Consulter la documentation**: Voir les guides dans `/var/www/formation-manager/deployment-package/`
|
||||
3. **Restaurer une sauvegarde**: Suivre la procédure de rollback ci-dessus
|
||||
|
||||
## ✅ Checklist post-mise à jour
|
||||
|
||||
- [ ] Le service est démarré: `sudo systemctl status formation-manager`
|
||||
- [ ] L'application est accessible dans le navigateur
|
||||
- [ ] La connexion fonctionne (test avec un utilisateur admin)
|
||||
- [ ] Les séquences s'affichent correctement
|
||||
- [ ] Le formulaire d'édition affiche les bonnes heures
|
||||
- [ ] Le menu Import Excel est dans la section Configuration
|
||||
- [ ] Les emails de confirmation fonctionnent (test d'inscription)
|
||||
|
||||
## 📊 Commandes utiles
|
||||
|
||||
```bash
|
||||
# Voir les logs en temps réel
|
||||
sudo journalctl -u formation-manager -f
|
||||
|
||||
# Redémarrer le service
|
||||
sudo systemctl restart formation-manager
|
||||
|
||||
# Voir le statut
|
||||
sudo systemctl status formation-manager
|
||||
|
||||
# Voir les dernières erreurs
|
||||
sudo journalctl -u formation-manager -p err -n 50
|
||||
|
||||
# Espace disque
|
||||
df -h
|
||||
|
||||
# Utilisation mémoire
|
||||
free -h
|
||||
|
||||
# Processus Node.js
|
||||
ps aux | grep node
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**Date de création**: $(date +%Y-%m-%d)
|
||||
**Version**: 36474438
|
||||
Reference in New Issue
Block a user