Files
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