#!/bin/bash # Script interactif de migration vers MariaDB set -e # Arrêter en cas d'erreur # Couleurs RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color clear echo -e "${BLUE}" echo "╔══════════════════════════════════════════════════════════════╗" echo "║ ║" echo "║ 🚀 MIGRATION DJANGO → MARIADB ║" echo "║ ║" echo "║ Blog Duhaz - Migration Interactive ║" echo "║ ║" echo "╚══════════════════════════════════════════════════════════════╝" echo -e "${NC}" echo "" # Fonction pour afficher un message et attendre pause() { echo "" read -p "Appuyez sur Entrée pour continuer..." echo "" } # Fonction pour poser une question oui/non ask_yes_no() { while true; do read -p "$1 (o/n) " yn case $yn in [Oo]* ) return 0;; [Nn]* ) return 1;; * ) echo "Répondez par o (oui) ou n (non).";; esac done } # Étape 1: Vérifications préliminaires echo -e "${YELLOW}═══ Étape 1/7 : Vérifications préliminaires ═══${NC}" echo "" if [ ! -f "requirements.txt" ]; then echo -e "${RED}❌ Erreur: requirements.txt non trouvé${NC}" echo " Êtes-vous dans le bon répertoire?" exit 1 fi if [ ! -f ".env" ]; then echo -e "${RED}❌ Erreur: Fichier .env non trouvé${NC}" if [ -f ".env.example" ]; then echo -e "${YELLOW} 💡 Copiez .env.example vers .env et configurez-le${NC}" if ask_yes_no "Voulez-vous que je le fasse maintenant?"; then cp .env.example .env echo -e "${GREEN}✅ Fichier .env créé${NC}" echo -e "${YELLOW}⚠️ Éditez maintenant le fichier .env pour configurer MariaDB${NC}" pause else exit 1 fi else exit 1 fi fi echo -e "${GREEN}✅ Fichiers de configuration présents${NC}" pause # Étape 2: Vérification des dépendances Python echo -e "${YELLOW}═══ Étape 2/7 : Installation des dépendances Python ═══${NC}" echo "" if python3 -c "import MySQLdb" 2>/dev/null; then echo -e "${GREEN}✅ mysqlclient déjà installé${NC}" else echo -e "${YELLOW}⚠️ mysqlclient n'est pas installé${NC}" if ask_yes_no "Voulez-vous installer toutes les dépendances maintenant?"; then echo "Installation en cours..." pip3 install -r requirements.txt echo -e "${GREEN}✅ Dépendances installées${NC}" else echo -e "${RED}❌ mysqlclient est requis. Installation annulée.${NC}" exit 1 fi fi pause # Étape 3: Configuration du fichier .env echo -e "${YELLOW}═══ Étape 3/7 : Configuration du .env ═══${NC}" echo "" echo "Paramètres actuels:" echo "" grep "^DB_" .env | while read line; do key=$(echo $line | cut -d'=' -f1) value=$(echo $line | cut -d'=' -f2) if [ "$key" = "DB_PASSWORD" ]; then echo " $key=****" else echo " $key=$value" fi done echo "" DB_ENGINE=$(grep "^DB_ENGINE" .env | cut -d'=' -f2 || echo "sqlite3") if [ "$DB_ENGINE" != "mysql" ]; then echo -e "${RED}⚠️ DB_ENGINE n'est pas configuré sur 'mysql'${NC}" echo "" echo "Pour une connexion depuis votre Mac vers le RPI:" echo "1. Trouvez l'IP de votre RPI : hostname -I" echo "2. Configurez DB_HOST avec cette IP dans le .env" echo "" echo "Exemple de configuration dans .env:" echo " DB_ENGINE=mysql" echo " DB_NAME=duhaz_blog" echo " DB_USER=duhaz_user" echo " DB_PASSWORD=votre_mot_de_passe" echo " DB_HOST=192.168.1.100 # IP de votre RPI" echo " DB_PORT=3306" echo "" if ask_yes_no "Voulez-vous éditer le fichier .env maintenant?"; then ${EDITOR:-nano} .env echo -e "${GREEN}✅ Fichier .env modifié${NC}" else echo -e "${YELLOW}⚠️ Assurez-vous de le configurer avant de continuer${NC}" exit 1 fi else echo -e "${GREEN}✅ DB_ENGINE configuré sur mysql${NC}" fi pause # Étape 4: Test de connexion au serveur MariaDB echo -e "${YELLOW}═══ Étape 4/7 : Test de connexion MariaDB ═══${NC}" echo "" DB_HOST=$(grep "^DB_HOST" .env | cut -d'=' -f2) DB_PORT=$(grep "^DB_PORT" .env | cut -d'=' -f2) echo "Test de connexion vers $DB_HOST:$DB_PORT" echo "" if ask_yes_no "Voulez-vous lancer le test de connexion?"; then python3 scripts/test_mariadb_connection.py if [ $? -eq 0 ]; then echo -e "${GREEN}✅ Connexion réussie!${NC}" else echo -e "${RED}❌ Échec de connexion${NC}" echo "" echo "Vérifications à faire sur le Raspberry Pi:" echo "1. docker ps | grep mariadb" echo "2. docker logs mariadb" echo "3. docker port mariadb" echo "" echo "Depuis votre Mac:" echo "1. ping $DB_HOST" echo "2. telnet $DB_HOST $DB_PORT" echo "" exit 1 fi else echo -e "${YELLOW}⚠️ Test de connexion ignoré${NC}" if ! ask_yes_no "Voulez-vous continuer quand même?"; then exit 1 fi fi pause # Étape 5: Vérification de la base SQLite source echo -e "${YELLOW}═══ Étape 5/7 : Vérification de la base source ═══${NC}" echo "" if [ -f "db.sqlite3" ]; then SIZE=$(du -h db.sqlite3 | cut -f1) echo -e "${GREEN}✅ db.sqlite3 trouvé (taille: $SIZE)${NC}" echo "" # Compter les enregistrements echo "Statistiques de la base SQLite:" python3 -c " import sqlite3 conn = sqlite3.connect('db.sqlite3') cursor = conn.cursor()