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:
Manus Sandbox
2025-11-27 07:46:29 -05:00
parent 3647443898
commit 2ae8592480
7 changed files with 1110 additions and 0 deletions

View File

@@ -0,0 +1,344 @@
# 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
```bash
# 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
```bash
# 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)
```bash
# 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)
```bash
# 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
```bash
# Vérifier le statut
sudo systemctl status formation-manager
# Voir les logs
sudo journalctl -u formation-manager -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/`
**Exemple d'utilisation**:
```bash
sudo ./backup-before-update.sh
```
**Sortie**:
```
=== Sauvegarde avant mise à jour ===
Date: 2024-01-19 14:30:22
Répertoire application: /var/www/formation-manager
Répertoire sauvegarde: /var/backups/formation-manager
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/backup_20240119_143022
Taille: 45M
```
### update-app.sh
**Fonction**: Met à jour automatiquement l'application sur le serveur
**Ce qu'il fait**:
1. Crée une sauvegarde de sécurité
2. Arrête le service
3. Sauvegarde la configuration (.env)
4. Copie les nouveaux fichiers
5. Restaure la configuration
6. Installe les dépendances (pnpm install)
7. Applique les migrations de base de données (pnpm db:push)
8. Construit l'application
9. Configure les permissions
10. Redémarre le service
11. Vérifie le bon fonctionnement
**Prérequis**:
- Exécuter avec sudo/root
- L'application doit être installée dans `/var/www/formation-manager`
- Le service doit s'appeler `formation-manager`
**Exemple d'utilisation**:
```bash
sudo ./update-app.sh
```
**Sortie**:
```
╔════════════════════════════════════════════════════════════╗
║ Mise à jour Formation Manager Itinova ║
╚════════════════════════════════════════════════════════════╝
Date: 2024-01-19 14:35:10
Répertoire: /var/www/formation-manager
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**:
```bash
./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:
```bash
# 1. Lister les sauvegardes
ls -lh /var/backups/formation-manager/
# 2. Arrêter le service
sudo systemctl stop formation-manager
# 3. Restaurer les fichiers
cd /var/www/formation-manager
sudo rm -rf *
sudo tar -xzf /var/backups/formation-manager/backup_YYYYMMDD_HHMMSS/app_files.tar.gz -C .
# 4. Restaurer .env
sudo cp /var/backups/formation-manager/backup_YYYYMMDD_HHMMSS/.env.backup .env
# 5. Restaurer la base de données (si nécessaire)
gunzip -c /var/backups/formation-manager/backup_YYYYMMDD_HHMMSS/database.sql.gz | mysql -h HOST -u USER -p DATABASE
# 6. Redémarrer
sudo systemctl start formation-manager
```
## 📝 Configuration
### Chemins par défaut
Les scripts utilisent ces chemins par défaut:
```bash
APP_DIR="/var/www/formation-manager" # Répertoire de l'application
BACKUP_DIR="/var/backups/formation-manager" # Répertoire des sauvegardes
SERVICE_NAME="formation-manager" # Nom du service systemd
```
### Personnalisation
Pour modifier ces chemins, éditez les variables au début de chaque script:
```bash
# 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/`
- 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
```bash
# Vérifier les permissions
ls -l *.sh
# Rendre exécutable
chmod +x *.sh
```
### Erreur "Permission denied"
```bash
# Exécuter avec sudo
sudo ./update-app.sh
```
### Le service ne redémarre pas
```bash
# Voir les logs
sudo journalctl -u formation-manager -n 100
# Vérifier la configuration
sudo systemctl status formation-manager
# Vérifier les permissions
sudo chown -R www-data:www-data /var/www/formation-manager
```
### Erreur de base de données
```bash
# Vérifier la connexion
mysql -h HOST -u USER -p -e "SELECT 1;"
# Vérifier le fichier .env
cat /var/www/formation-manager/.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)