**Modifications apportées** : 1. **backup-before-update.sh** : - APP_DIR: /var/www/formation-manager-itinova - BACKUP_DIR: /var/backups/formation-manager-itinova 2. **update-app.sh** : - APP_DIR: /var/www/formation-manager-itinova - SERVICE_NAME: formation-manager-itinova 3. **GUIDE_MISE_A_JOUR.md** : - Tous les chemins mis à jour vers formation-manager-itinova - Tous les noms de service corrigés 4. **README.md** : - Documentation mise à jour avec les bons chemins - Exemples corrigés 5. **Nouveau package créé** : - formation-manager-update-20251127_095935.tar.gz (2.6M) - Prêt pour déploiement sur le serveur VPS
Scripts de Déploiement - Formation Manager Itinova
📁 Contenu du répertoire
Ce répertoire contient tous les scripts nécessaires pour mettre à jour l'application sur votre serveur VPS.
Scripts disponibles
| Script | Description | Usage |
|---|---|---|
backup-before-update.sh |
Crée une sauvegarde complète avant mise à jour | sudo ./backup-before-update.sh |
update-app.sh |
Met à jour automatiquement l'application | sudo ./update-app.sh |
create-deployment-package.sh |
Crée un package de déploiement | ./create-deployment-package.sh |
Documentation
| Fichier | Description |
|---|---|
GUIDE_MISE_A_JOUR.md |
Guide complet de mise à jour avec instructions détaillées |
README.md |
Ce fichier |
🚀 Utilisation rapide
Pour mettre à jour l'application sur le serveur
# 1. Rendre les scripts exécutables (une seule fois)
chmod +x *.sh
# 2. Lancer la mise à jour automatique
sudo ./update-app.sh
Pour créer un package de déploiement
# Créer un package prêt à transférer
./create-deployment-package.sh
# Le package sera créé dans le répertoire parent
# Nom: formation-manager-update-YYYYMMDD_HHMMSS.tar.gz
📋 Workflow de mise à jour complet
1. Préparation (sur votre machine locale)
# Créer le package de déploiement
cd formation-manager-itinova/deployment-scripts
./create-deployment-package.sh
# Transférer sur le serveur
scp ../formation-manager-update-*.tar.gz user@serveur:/tmp/
2. Installation (sur le serveur)
# Se connecter au serveur
ssh user@serveur
# Extraire le package
cd /tmp
tar -xzf formation-manager-update-*.tar.gz
cd formation-manager-itinova
# Rendre les scripts exécutables
chmod +x deployment-scripts/*.sh
# Lancer la mise à jour
sudo ./deployment-scripts/update-app.sh
3. Vérification
# Vérifier le statut
sudo systemctl status formation-manager-itinova
# Voir les logs
sudo journalctl -u formation-manager-itinova -f
# Tester dans le navigateur
# Ouvrir: http://votre-domaine.com
🔧 Détails des scripts
backup-before-update.sh
Fonction: Crée une sauvegarde complète de l'application et de la base de données
Ce qu'il fait:
- Sauvegarde tous les fichiers de l'application dans une archive .tar.gz
- Sauvegarde le fichier .env
- Exporte la base de données MySQL en SQL compressé
- Crée un fichier d'information sur la sauvegarde
- Conserve les 10 dernières sauvegardes (supprime les plus anciennes)
Emplacement des sauvegardes: /var/backups/formation-manager-itinova/
Exemple d'utilisation:
sudo ./backup-before-update.sh
Sortie:
=== Sauvegarde avant mise à jour ===
Date: 2024-01-19 14:30:22
Répertoire application: /var/www/formation-manager-itinova
Répertoire sauvegarde: /var/backups/formation-manager-itinova
Création du répertoire de sauvegarde...
Sauvegarde des fichiers de l'application...
✓ Fichiers de l'application sauvegardés
...
=== Sauvegarde terminée avec succès ===
Emplacement: /var/backups/formation-manager-itinova/backup_20240119_143022
Taille: 45M
update-app.sh
Fonction: Met à jour automatiquement l'application sur le serveur
Ce qu'il fait:
- Crée une sauvegarde de sécurité
- Arrête le service
- Sauvegarde la configuration (.env)
- Copie les nouveaux fichiers
- Restaure la configuration
- Installe les dépendances (pnpm install)
- Applique les migrations de base de données (pnpm db:push)
- Construit l'application
- Configure les permissions
- Redémarre le service
- Vérifie le bon fonctionnement
Prérequis:
- Exécuter avec sudo/root
- L'application doit être installée dans
/var/www/formation-manager-itinova - Le service doit s'appeler
formation-manager-itinova
Exemple d'utilisation:
sudo ./update-app.sh
Sortie:
╔════════════════════════════════════════════════════════════╗
║ Mise à jour Formation Manager Itinova ║
╚════════════════════════════════════════════════════════════╝
Date: 2024-01-19 14:35:10
Répertoire: /var/www/formation-manager-itinova
Voulez-vous continuer avec la mise à jour ? [y/N]: y
▶ Étape 1/8: Création d'une sauvegarde de sécurité
────────────────────────────────────────────────────────────
...
╔════════════════════════════════════════════════════════════╗
║ Mise à jour terminée avec succès ! ║
╚════════════════════════════════════════════════════════════╝
create-deployment-package.sh
Fonction: Crée un package de déploiement prêt à transférer
Ce qu'il fait:
- Copie tous les fichiers nécessaires (sauf node_modules, .git, .env)
- Inclut les scripts de déploiement
- Crée un fichier README_DEPLOIEMENT.txt avec les instructions
- Crée une archive .tar.gz compressée
Exemple d'utilisation:
./create-deployment-package.sh
Sortie:
╔════════════════════════════════════════════════════════════╗
║ Création du package de déploiement ║
╚════════════════════════════════════════════════════════════╝
Nettoyage du répertoire temporaire...
Création du répertoire temporaire...
Copie des fichiers du projet...
✓ Fichiers copiés
Création du fichier README...
✓ README créé
Création de l'archive...
╔════════════════════════════════════════════════════════════╗
║ Package créé avec succès ! ║
╚════════════════════════════════════════════════════════════╝
Fichier: formation-manager-update-20240119_143522.tar.gz
Emplacement: /home/ubuntu/formation-manager-itinova/formation-manager-update-20240119_143522.tar.gz
Taille: 2.3M
Prochaines étapes:
1. Transférer le package sur le serveur:
scp formation-manager-update-20240119_143522.tar.gz user@serveur:/tmp/
2. Suivre les instructions dans README_DEPLOIEMENT.txt
🔄 Restauration d'une sauvegarde
Si vous devez restaurer une sauvegarde après une mise à jour problématique:
# 1. Lister les sauvegardes
ls -lh /var/backups/formation-manager-itinova/
# 2. Arrêter le service
sudo systemctl stop formation-manager-itinova
# 3. Restaurer les fichiers
cd /var/www/formation-manager-itinova
sudo rm -rf *
sudo tar -xzf /var/backups/formation-manager-itinova/backup_YYYYMMDD_HHMMSS/app_files.tar.gz -C .
# 4. Restaurer .env
sudo cp /var/backups/formation-manager-itinova/backup_YYYYMMDD_HHMMSS/.env.backup .env
# 5. Restaurer la base de données (si nécessaire)
gunzip -c /var/backups/formation-manager-itinova/backup_YYYYMMDD_HHMMSS/database.sql.gz | mysql -h HOST -u USER -p DATABASE
# 6. Redémarrer
sudo systemctl start formation-manager-itinova
📝 Configuration
Chemins par défaut
Les scripts utilisent ces chemins par défaut:
APP_DIR="/var/www/formation-manager-itinova" # Répertoire de l'application
BACKUP_DIR="/var/backups/formation-manager-itinova" # Répertoire des sauvegardes
SERVICE_NAME="formation-manager-itinova" # Nom du service systemd
Personnalisation
Pour modifier ces chemins, éditez les variables au début de chaque script:
# Ouvrir le script
nano update-app.sh
# Modifier les variables
APP_DIR="/votre/chemin/personnalisé"
BACKUP_DIR="/votre/chemin/sauvegardes"
SERVICE_NAME="votre-service"
⚠️ Notes importantes
Permissions
- Les scripts de mise à jour doivent être exécutés avec
sudo - Les scripts de création de package peuvent être exécutés en utilisateur normal
- Après mise à jour, les fichiers appartiennent à
www-data:www-data
Sauvegardes
- Les sauvegardes sont conservées dans
/var/backups/formation-manager-itinova/ - Seules les 10 dernières sauvegardes sont conservées
- Chaque sauvegarde inclut: fichiers + .env + base de données
- Pensez à sauvegarder régulièrement les sauvegardes importantes ailleurs
Base de données
- Les migrations sont appliquées automatiquement avec
pnpm db:push - La base de données est sauvegardée avant chaque mise à jour
- En cas de problème, restaurez la base depuis la sauvegarde
Temps d'arrêt
- Le service est arrêté pendant la mise à jour (5-10 minutes)
- Planifiez la mise à jour pendant une période de faible activité
- Prévenez les utilisateurs à l'avance
🆘 Dépannage
Le script ne s'exécute pas
# Vérifier les permissions
ls -l *.sh
# Rendre exécutable
chmod +x *.sh
Erreur "Permission denied"
# Exécuter avec sudo
sudo ./update-app.sh
Le service ne redémarre pas
# Voir les logs
sudo journalctl -u formation-manager-itinova -n 100
# Vérifier la configuration
sudo systemctl status formation-manager-itinova
# Vérifier les permissions
sudo chown -R www-data:www-data /var/www/formation-manager-itinova
Erreur de base de données
# Vérifier la connexion
mysql -h HOST -u USER -p -e "SELECT 1;"
# Vérifier le fichier .env
cat /var/www/formation-manager-itinova/.env | grep DATABASE_URL
📞 Support
Pour plus d'informations, consultez:
- Guide complet:
GUIDE_MISE_A_JOUR.md - Documentation de déploiement:
../deployment-package/
Version: 36474438
Dernière mise à jour: $(date +%Y-%m-%d)