Files
formation-manager-itinova/deployment-scripts/GUIDE_MISE_A_JOUR.md
Manus Sandbox c0446e5ba8 Checkpoint: Correction du bug "drizzle-kit: not found" lors de la mise à jour :
**Problème identifié** :
Le script `update-app.sh` utilisait `pnpm install --prod` qui n'installe que les dépendances de production, excluant les devDependencies comme `drizzle-kit` nécessaire pour les migrations.

**Solution appliquée** :
1. **update-app.sh** : Changé `pnpm install --prod` en `pnpm install` pour installer toutes les dépendances (production + développement)
2. **GUIDE_MISE_A_JOUR.md** : Mise à jour de la documentation pour refléter ce changement

**Justification** :
`drizzle-kit` est nécessaire pour exécuter `pnpm db:push` qui applique les migrations de base de données. Sans les devDependencies, la commande échoue.

**Nouveau package créé** :
- formation-manager-update-20251127_114306.tar.gz (2.6M)
- Prêt pour déploiement avec la correction
2025-11-27 11:44:55 -05:00

6.8 KiB

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:

# 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

# 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

chmod +x deployment-scripts/*.sh

Étape 4: Lancer la mise à jour

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

# Vérifier le statut du service
sudo systemctl status formation-manager-itinova

# Voir les logs en temps réel
sudo journalctl -u formation-manager-itinova -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

sudo ./deployment-scripts/backup-before-update.sh

2. Arrêter le service

sudo systemctl stop formation-manager-itinova

3. Sauvegarder la configuration

sudo cp /var/www/formation-manager-itinova/.env /tmp/.env.backup

4. Copier les nouveaux fichiers

cd /var/www/formation-manager-itinova
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

sudo cp /tmp/.env.backup /var/www/formation-manager-itinova/.env

6. Installer les dépendances

cd /var/www/formation-manager-itinova
sudo pnpm install

7. Appliquer les migrations

sudo pnpm db:push

8. Redémarrer le service

sudo systemctl start formation-manager-itinova
sudo systemctl status formation-manager-itinova

🔄 Restauration d'une sauvegarde (Rollback)

Si la mise à jour pose problème, vous pouvez restaurer une sauvegarde:

1. Lister les sauvegardes disponibles

ls -lh /var/backups/formation-manager-itinova/

2. Choisir une sauvegarde

# Exemple: backup_20240119_143022
BACKUP_DIR="/var/backups/formation-manager-itinova/backup_20240119_143022"

3. Arrêter le service

sudo systemctl stop formation-manager-itinova

4. Restaurer les fichiers

cd /var/www/formation-manager-itinova
sudo rm -rf *
sudo tar -xzf $BACKUP_DIR/app_files.tar.gz -C .

5. Restaurer la configuration

sudo cp $BACKUP_DIR/.env.backup /var/www/formation-manager-itinova/.env

6. Restaurer la base de données (optionnel)

# 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

sudo systemctl start formation-manager-itinova
sudo systemctl status formation-manager-itinova

📝 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

# Voir les logs d'erreur
sudo journalctl -u formation-manager-itinova -n 100 --no-pager

# Vérifier les permissions
sudo chown -R www-data:www-data /var/www/formation-manager-itinova
sudo chmod -R 755 /var/www/formation-manager-itinova
sudo chmod 600 /var/www/formation-manager-itinova/.env

Erreur de connexion à la base de données

# Vérifier le fichier .env
sudo cat /var/www/formation-manager-itinova/.env | grep DATABASE_URL

# Tester la connexion MySQL
mysql -h HOST -u USER -p -e "SELECT 1;"

Port déjà utilisé

# 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

# Réinitialiser les permissions
cd /var/www/formation-manager-itinova
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-itinova -f
  2. Consulter la documentation: Voir les guides dans /var/www/formation-manager-itinova/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-itinova
  • 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

# Voir les logs en temps réel
sudo journalctl -u formation-manager-itinova -f

# Redémarrer le service
sudo systemctl restart formation-manager-itinova

# Voir le statut
sudo systemctl status formation-manager-itinova

# Voir les dernières erreurs
sudo journalctl -u formation-manager-itinova -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