CHANGEMENTS MAJEURS: - Fusion des 3 bases de données (uof_frontal, uof_linet, logs) en une seule base 'cleo' - Migration vers PDO avec pattern Singleton et requêtes préparées - Configuration externalisée via variables d'environnement (.env) - Séparation application (dva-front) et base de données (maria3) SÉCURITÉ: - Suppression des credentials en dur dans le code - Implémentation de la classe Database avec gestion d'erreurs sécurisée - Protection contre les injections SQL via requêtes préparées INFRASTRUCTURE: - Container dva-front : MariaDB supprimé, application PHP uniquement - Container maria3 : Base de données centralisée MariaDB 11.4 - Script de déploiement optimisé (deploy-cleo-fast.sh) CORRECTIONS: - Ajout des tables manquantes (z_sessions, z_stats, marches_listes) - Compatibilité PDO (fetch_assoc → fetch(PDO::FETCH_ASSOC)) - Suppression des commentaires debug dans les réponses AJAX - Permissions fichiers (.env 644, logs 777 avec owner nobody) DOCUMENTATION: - Mise à jour README.md avec architecture actuelle - Migration README.md marqué comme complété - TODO.md avec état d'avancement et prochaines étapes (PROD IN4) 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
163 lines
5.3 KiB
Bash
Executable File
163 lines
5.3 KiB
Bash
Executable File
#!/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 "" |