#!/bin/bash # Script de mise à jour manuel pour le serveur VPS (sans Git) # Formation Manager Itinova # Version: dcb709b3 set -e # Arrêter en cas d'erreur echo "=========================================" echo "Mise à jour Formation Manager Itinova" echo "Mode manuel (sans Git)" echo "=========================================" echo "" # Couleurs pour les messages GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' # No Color # Vérifier que nous sommes dans le bon répertoire if [ ! -f "package.json" ]; then echo -e "${RED}Erreur: package.json non trouvé. Êtes-vous dans le bon répertoire ?${NC}" exit 1 fi echo -e "${YELLOW}1. Sauvegarde de la base de données...${NC}" # Créer un répertoire de backup s'il n'existe pas mkdir -p backups BACKUP_FILE="backups/db-backup-$(date +%Y%m%d-%H%M%S).sql" # Extraire les informations de connexion depuis DATABASE_URL if [ -z "$DATABASE_URL" ]; then echo -e "${RED}Erreur: DATABASE_URL n'est pas définie${NC}" exit 1 fi # Parser DATABASE_URL DB_USER=$(echo $DATABASE_URL | sed -n 's/.*:\/\/\([^:]*\):.*/\1/p') DB_PASS=$(echo $DATABASE_URL | sed -n 's/.*:\/\/[^:]*:\([^@]*\)@.*/\1/p') DB_HOST=$(echo $DATABASE_URL | sed -n 's/.*@\([^:]*\):.*/\1/p') DB_PORT=$(echo $DATABASE_URL | sed -n 's/.*:\([0-9]*\)\/.*/\1/p') DB_NAME=$(echo $DATABASE_URL | sed -n 's/.*\/\([^?]*\).*/\1/p') echo "Sauvegarde de la base de données $DB_NAME..." mysqldump -h "$DB_HOST" -P "$DB_PORT" -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" > "$BACKUP_FILE" echo -e "${GREEN}✓ Sauvegarde créée: $BACKUP_FILE${NC}" echo "" echo -e "${YELLOW}2. Arrêt du serveur...${NC}" pm2 stop formation-manager || echo "Le serveur n'était pas démarré" echo -e "${GREEN}✓ Serveur arrêté${NC}" echo "" echo -e "${YELLOW}3. Les fichiers ont été transférés via SFTP${NC}" echo "Assurez-vous d'avoir transféré tous les fichiers modifiés avant de continuer." read -p "Appuyez sur Entrée pour continuer..." echo "" echo -e "${YELLOW}4. Installation des dépendances...${NC}" pnpm install echo -e "${GREEN}✓ Dépendances installées${NC}" echo "" echo -e "${YELLOW}5. Application des migrations de base de données...${NC}" pnpm db:push echo -e "${GREEN}✓ Migrations appliquées${NC}" echo "" echo -e "${YELLOW}6. Compilation du projet...${NC}" pnpm build echo -e "${GREEN}✓ Projet compilé${NC}" echo "" echo -e "${YELLOW}7. Redémarrage du serveur...${NC}" pm2 restart formation-manager || pm2 start npm --name "formation-manager" -- start echo -e "${GREEN}✓ Serveur redémarré${NC}" echo "" echo -e "${YELLOW}8. Vérification du statut...${NC}" pm2 status formation-manager echo "" echo -e "${GREEN}=========================================${NC}" echo -e "${GREEN}Mise à jour terminée avec succès !${NC}" echo -e "${GREEN}=========================================${NC}" echo "" echo "Sauvegarde de la base de données: $BACKUP_FILE" echo "Pour consulter les logs: pm2 logs formation-manager" echo "Pour arrêter le serveur: pm2 stop formation-manager" echo ""