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:
151
deployment-scripts/create-deployment-package.sh
Executable file
151
deployment-scripts/create-deployment-package.sh
Executable file
@@ -0,0 +1,151 @@
|
||||
#!/bin/bash
|
||||
|
||||
###############################################################################
|
||||
# Script de création du package de déploiement
|
||||
# Formation Manager Itinova
|
||||
#
|
||||
# Ce script crée une archive complète prête à être transférée sur le serveur
|
||||
###############################################################################
|
||||
|
||||
set -e # Arrêter en cas d'erreur
|
||||
|
||||
# Couleurs pour les messages
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Configuration
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
PACKAGE_NAME="formation-manager-update-$(date +%Y%m%d_%H%M%S).tar.gz"
|
||||
TEMP_DIR="/tmp/formation-manager-package"
|
||||
|
||||
echo -e "${BLUE}╔════════════════════════════════════════════════════════════╗${NC}"
|
||||
echo -e "${BLUE}║ Création du package de déploiement ║${NC}"
|
||||
echo -e "${BLUE}╚════════════════════════════════════════════════════════════╝${NC}"
|
||||
echo ""
|
||||
|
||||
# Nettoyer le répertoire temporaire s'il existe
|
||||
if [ -d "$TEMP_DIR" ]; then
|
||||
echo -e "${YELLOW}Nettoyage du répertoire temporaire...${NC}"
|
||||
rm -rf "$TEMP_DIR"
|
||||
fi
|
||||
|
||||
# Créer le répertoire temporaire
|
||||
echo -e "${YELLOW}Création du répertoire temporaire...${NC}"
|
||||
mkdir -p "$TEMP_DIR"
|
||||
|
||||
# Copier les fichiers du projet
|
||||
echo -e "${YELLOW}Copie des fichiers du projet...${NC}"
|
||||
cd "$PROJECT_DIR"
|
||||
|
||||
# Copier tous les fichiers sauf les exclusions
|
||||
cp -r . "$TEMP_DIR/"
|
||||
|
||||
# Supprimer les répertoires/fichiers à exclure
|
||||
cd "$TEMP_DIR"
|
||||
rm -rf node_modules .git .env .env.local dist build .next coverage .vscode .idea
|
||||
find . -name '*.log' -delete
|
||||
find . -name '.DS_Store' -delete
|
||||
cd "$PROJECT_DIR"
|
||||
|
||||
echo -e "${GREEN}✓ Fichiers copiés${NC}"
|
||||
|
||||
# Créer un fichier README pour le package
|
||||
echo -e "${YELLOW}Création du fichier README...${NC}"
|
||||
cat > "$TEMP_DIR/README_DEPLOIEMENT.txt" << 'EOF'
|
||||
╔════════════════════════════════════════════════════════════╗
|
||||
║ Package de Mise à Jour - Formation Manager Itinova ║
|
||||
╚════════════════════════════════════════════════════════════╝
|
||||
|
||||
CONTENU DU PACKAGE
|
||||
==================
|
||||
|
||||
1. deployment-scripts/
|
||||
- update-app.sh: Script de mise à jour automatique
|
||||
- backup-before-update.sh: Script de sauvegarde
|
||||
- GUIDE_MISE_A_JOUR.md: Guide complet de mise à jour
|
||||
|
||||
2. Fichiers de l'application
|
||||
- Tous les fichiers source nécessaires
|
||||
- Configuration package.json
|
||||
- Schéma de base de données
|
||||
|
||||
INSTALLATION RAPIDE
|
||||
===================
|
||||
|
||||
1. Transférer ce package sur le serveur:
|
||||
scp formation-manager-update-*.tar.gz user@serveur:/tmp/
|
||||
|
||||
2. Se connecter au serveur:
|
||||
ssh user@serveur
|
||||
|
||||
3. Extraire le package:
|
||||
cd /tmp
|
||||
tar -xzf formation-manager-update-*.tar.gz
|
||||
cd formation-manager-itinova
|
||||
|
||||
4. Rendre les scripts exécutables:
|
||||
chmod +x deployment-scripts/*.sh
|
||||
|
||||
5. Lancer la mise à jour:
|
||||
sudo ./deployment-scripts/update-app.sh
|
||||
|
||||
IMPORTANT
|
||||
=========
|
||||
|
||||
- Le script créera automatiquement une sauvegarde avant la mise à jour
|
||||
- Le service sera arrêté pendant 5-10 minutes
|
||||
- La configuration (.env) sera préservée
|
||||
- Les migrations de base de données seront appliquées automatiquement
|
||||
|
||||
DOCUMENTATION
|
||||
=============
|
||||
|
||||
Consultez le guide complet dans:
|
||||
deployment-scripts/GUIDE_MISE_A_JOUR.md
|
||||
|
||||
SUPPORT
|
||||
=======
|
||||
|
||||
En cas de problème:
|
||||
1. Vérifier les logs: sudo journalctl -u formation-manager -f
|
||||
2. Consulter le guide de dépannage dans GUIDE_MISE_A_JOUR.md
|
||||
3. Restaurer une sauvegarde si nécessaire
|
||||
|
||||
Version: 36474438
|
||||
Date: $(date)
|
||||
EOF
|
||||
|
||||
echo -e "${GREEN}✓ README créé${NC}"
|
||||
|
||||
# Créer l'archive
|
||||
echo -e "${YELLOW}Création de l'archive...${NC}"
|
||||
cd /tmp
|
||||
tar -czf "$PACKAGE_NAME" formation-manager-package/
|
||||
|
||||
# Déplacer l'archive dans le répertoire du projet
|
||||
mv "$PACKAGE_NAME" "$PROJECT_DIR/"
|
||||
|
||||
# Nettoyer
|
||||
rm -rf "$TEMP_DIR"
|
||||
|
||||
# Calculer la taille
|
||||
PACKAGE_SIZE=$(du -sh "$PROJECT_DIR/$PACKAGE_NAME" | cut -f1)
|
||||
|
||||
echo ""
|
||||
echo -e "${BLUE}╔════════════════════════════════════════════════════════════╗${NC}"
|
||||
echo -e "${BLUE}║ ${GREEN}Package créé avec succès !${BLUE} ║${NC}"
|
||||
echo -e "${BLUE}╚════════════════════════════════════════════════════════════╝${NC}"
|
||||
echo ""
|
||||
echo -e "${GREEN}Fichier:${NC} $PACKAGE_NAME"
|
||||
echo -e "${GREEN}Emplacement:${NC} $PROJECT_DIR/$PACKAGE_NAME"
|
||||
echo -e "${GREEN}Taille:${NC} $PACKAGE_SIZE"
|
||||
echo ""
|
||||
echo -e "${YELLOW}Prochaines étapes:${NC}"
|
||||
echo "1. Transférer le package sur le serveur:"
|
||||
echo " ${BLUE}scp $PACKAGE_NAME user@serveur:/tmp/${NC}"
|
||||
echo ""
|
||||
echo "2. Suivre les instructions dans README_DEPLOIEMENT.txt"
|
||||
echo ""
|
||||
Reference in New Issue
Block a user