Files
formation-manager-itinova/deployment-scripts/GUIDE_MISE_A_JOUR.md
Manus Sandbox 2ae8592480 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
2025-11-27 07:46:29 -05:00

299 lines
6.5 KiB
Markdown

# 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