#!/bin/bash # Script de déploiement de la nouvelle architecture CLEO # Version: 2.0.1 # Date: 2025-09-11 set -e # Arrêter en cas d'erreur # Couleurs pour l'affichage RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color echo -e "${GREEN}================================================${NC}" echo -e "${GREEN} Déploiement CLEO - Nouvelle Architecture ${NC}" echo -e "${GREEN}================================================${NC}" echo "" # Vérifier qu'on est dans le bon répertoire if [ ! -f "index.php" ] || [ ! -d "config" ]; then echo -e "${RED}Erreur: Ce script doit être exécuté depuis la racine du projet CLEO${NC}" exit 1 fi # Fonction pour demander confirmation confirm() { read -p "$1 [y/N] " -n 1 -r echo if [[ ! $REPLY =~ ^[Yy]$ ]]; then return 1 fi return 0 } # 1. Vérification du fichier .env echo -e "${YELLOW}1. Vérification de la configuration...${NC}" if [ ! -f ".env" ]; then echo -e "${RED} Le fichier .env n'existe pas!${NC}" echo " Copie de .env.example vers .env..." cp .env.example .env echo -e "${YELLOW} IMPORTANT: Veuillez éditer le fichier .env avec vos paramètres${NC}" exit 1 fi echo -e "${GREEN} ✓ Fichier .env trouvé${NC}" # 2. Backup des anciens fichiers echo -e "${YELLOW}2. Sauvegarde des fichiers actuels...${NC}" BACKUP_DIR="backup_$(date +%Y%m%d_%H%M%S)" mkdir -p "$BACKUP_DIR" # Sauvegarder les fichiers critiques if [ -f "config/conf.php" ]; then cp config/conf.php "$BACKUP_DIR/conf.php.bak" echo " - config/conf.php sauvegardé" fi if [ -f "pub/res/d6/d6_tools.php" ]; then cp pub/res/d6/d6_tools.php "$BACKUP_DIR/d6_tools.php.bak" echo " - pub/res/d6/d6_tools.php sauvegardé" fi echo -e "${GREEN} ✓ Sauvegarde effectuée dans $BACKUP_DIR${NC}" # 3. Vérification de la connexion à la base de données echo -e "${YELLOW}3. Test de connexion à la base de données...${NC}" # Lire les paramètres depuis .env source .env # Tester la connexion MySQL mysql -h"$DB_HOST" -u"$DB_USERNAME" -p"$DB_PASSWORD" -e "SELECT 1" >/dev/null 2>&1 if [ $? -eq 0 ]; then echo -e "${GREEN} ✓ Connexion à MariaDB réussie${NC}" else echo -e "${RED} ✗ Impossible de se connecter à MariaDB${NC}" echo " Vérifiez les paramètres dans .env" exit 1 fi # 4. Exécution du script de migration SQL echo -e "${YELLOW}4. Migration de la base de données...${NC}" if confirm " Voulez-vous exécuter le script de migration SQL?"; then echo " Exécution de migrate_to_cleo.sql..." mysql -h"$DB_HOST" -u"$DB_USERNAME" -p"$DB_PASSWORD" < migration/migrate_to_cleo.sql if [ $? -eq 0 ]; then echo -e "${GREEN} ✓ Migration SQL effectuée${NC}" else echo -e "${RED} ✗ Erreur lors de la migration SQL${NC}" exit 1 fi else echo " Migration SQL ignorée" fi # 5. Activation des nouveaux fichiers echo -e "${YELLOW}5. Activation de la nouvelle architecture...${NC}" # Remplacer conf.php if [ -f "config/conf_new.php" ]; then mv config/conf.php config/conf_old.php 2>/dev/null || true cp config/conf_new.php config/conf.php echo -e "${GREEN} ✓ config/conf.php mis à jour${NC}" fi # Remplacer d6_tools.php if [ -f "pub/res/d6/d6_tools_new.php" ]; then mv pub/res/d6/d6_tools.php pub/res/d6/d6_tools_old.php 2>/dev/null || true cp pub/res/d6/d6_tools_new.php pub/res/d6/d6_tools.php echo -e "${GREEN} ✓ d6_tools.php mis à jour${NC}" fi # 6. Vérification des permissions echo -e "${YELLOW}6. Vérification des permissions...${NC}" chmod 644 config/conf.php chmod 644 pub/res/d6/d6_tools.php chmod 600 .env echo -e "${GREEN} ✓ Permissions mises à jour${NC}" # 7. Création du répertoire de logs si nécessaire echo -e "${YELLOW}7. Création du répertoire de logs...${NC}" mkdir -p log chmod 755 log echo -e "${GREEN} ✓ Répertoire log créé${NC}" # 8. Test de l'application echo -e "${YELLOW}8. Test de connexion à la base CLEO...${NC}" php -r " require_once 'config/Database.php'; try { \$db = Database::getInstance(); echo ' ✓ Connexion PDO réussie' . PHP_EOL; \$result = \$db->fetchOne('SELECT COUNT(*) as nb FROM users'); echo ' ✓ ' . \$result['nb'] . ' utilisateurs trouvés' . PHP_EOL; } catch (Exception \$e) { echo ' ✗ Erreur: ' . \$e->getMessage() . PHP_EOL; exit(1); } " if [ $? -eq 0 ]; then echo -e "${GREEN} ✓ Tests réussis${NC}" else echo -e "${RED} ✗ Tests échoués${NC}" echo " Utilisez ./migration/rollback.sh pour revenir en arrière" exit 1 fi echo "" echo -e "${GREEN}================================================${NC}" echo -e "${GREEN} Déploiement terminé avec succès! ${NC}" echo -e "${GREEN}================================================${NC}" echo "" echo "Prochaines étapes:" echo "1. Testez l'application dans votre navigateur" echo "2. Vérifiez les logs dans le répertoire /log" echo "3. En cas de problème, utilisez ./migration/rollback.sh" echo "" echo "Configuration actuelle:" echo " - Base de données: $DB_DATABASE sur $DB_HOST" echo " - Environnement: $APP_ENV" echo " - Debug: $APP_DEBUG" echo ""