| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- #!/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()
|