Notas de Luis

¡Esta es una revisión vieja del documento!


Tabla de Contenidos

PLAN DE MIGRACIÓN FARAMIR+GANDALF a GIMLI

Faramir → Gimli

INFORMACIÓN GENERAL

Servidores Involucrados

  • Origen: faramir y gimli (a eliminar)
  • Destino: gimli (permanece)

Datos a Migrar

  • Dokuwiki: ~1.2 GB (archivos de texto)
  • WordPress: ~450 MB (incluye PDFs e imágenes)
  • Base de Datos: MariaDB 10.11.14
  • PHP: 8.4.24

Dominios

  • pruebaewelinapmu.my.to (WordPress)
  • dokuwiki (sin dominio específico)

Notas Importantes

  • ✅ gimli ya es reverse proxy y gestiona certificados SSL
  • ✅ check_sites y scripts comunes ya existen en gimli
  • ✅ El dominio ya apunta a gimli (DNS configurado)
  • ✅ Ambos servidores tienen la misma versión de Ubuntu
  • ⚠️ TODO: Nginx (no Apache)

FASE 0: PREPARACIÓN Y BACKUP

0.1 Verificar Espacio en Gimli

# En gimli
df -h /var/www
df -h /tmp
df -h /home
 
# Espacio requerido: mínimo 3GB libres (datos + backups)

0.2 Verificar Versiones y Compatibilidad

# En faramir
lsb_release -a
php --version
mariadb --version
nginx -v
 
# En gimli
lsb_release -a
php --version
mariadb --version
nginx -v

0.3 Crear Directorios en Gimli

# En gimli
sudo mkdir -p /var/www/dokuwiki
sudo mkdir -p /var/www/pruebaewelinapmu
sudo chown -R www-data:www-data /var/www/dokuwiki /var/www/pruebaewelinapmu
sudo mkdir -p /tmp/migracion_backup

0.4 Backup Completo en Faramir

# En faramir - Crear directorio de backup
mkdir -p ~/backup_migracion
cd ~/backup_migracion
 
# 1. Backup de MariaDB
sudo mysqldump --all-databases --single-transaction --routines --triggers > all_databases.sql
gzip all_databases.sql
 
# 2. Backup de Dokuwiki
sudo tar -czf dokuwiki_backup.tar.gz -C /var/www dokuwiki
 
# 3. Backup de WordPress
sudo tar -czf wordpress_backup.tar.gz -C /var/www pruebaewelinapmu
 
# 4. Backup de configuración Nginx
sudo tar -czf nginx_config_backup.tar.gz -C /etc nginx
 
# 5. Backup de crontabs
crontab -l > crontab_usuario.txt
sudo crontab -l > crontab_root.txt
 
# 6. Backup de listas de paquetes
dpkg -l | grep '^ii' | awk '{print $2}' > paquetes_instalados.txt
dpkg --get-selections > paquetes_selecciones.txt
apt-mark showmanual > paquetes_manuales.txt
 
# 7. Verificar backups
ls -lh
tar -tzf dokuwiki_backup.tar.gz | head -20
tar -tzf wordpress_backup.tar.gz | head -20
zcat all_databases.sql.gz | head -50
 
# 8. Copiar backups a gimli
scp *.tar.gz *.txt ubuntu@gimli:/tmp/migracion_backup/

0.5 Verificar Backups en Gimli

# En gimli
cd /tmp/migracion_backup
ls -lh
md5sum *.tar.gz *.txt  # Guardar checksums para verificar integridad

FASE 1: SINCRONIZACIÓN DE PAQUETES UBUNTU

1.1 Verificar Repositorios Adicionales

# En faramir - Listar repositorios adicionales
ls -la /etc/apt/sources.list.d/
 
# Copiar archivos de repositorios a gimli
scp /etc/apt/sources.list.d/* ubuntu@gimli:/tmp/migracion_backup/repos/
# En gimli - Copiar repositorios adicionales
sudo cp /tmp/migracion_backup/repos/* /etc/apt/sources.list.d/ 2>/dev/null
sudo apt update

1.2 Sincronizar Paquetes (Método Principal)

# En gimli
cd /tmp/migracion_backup
 
# Método 1: Usando selecciones de paquetes (RECOMENDADO)
sudo dpkg --set-selections < paquetes_selecciones.txt
sudo apt-get dselect-upgrade -y
 
# Si falla, método alternativo:
sudo apt install -y $(cat paquetes_instalados.txt) 2>&1 | tee instalacion_paquetes.log
 
# Verificar paquetes fallidos
grep "Unable to locate package" instalacion_paquetes.log
grep "dependency problems" instalacion_paquetes.log

1.3 Verificar Paquetes Críticos

# En gimli - Verificar paquetes web esenciales
for pkg in nginx php8.4-fpm php8.4-mysql php8.4-xml php8.4-gd \
  php8.4-mbstring php8.4-curl php8.4-zip php8.4-intl mariadb-server \
  mariadb-client certbot python3-certbot-nginx rsync git curl wget unzip \
  zip tar htop vim nano tree ncdu fail2ban ufw composer wp-cli mycli; do
    if ! dpkg -l | grep -q "^ii.*$pkg"; then
        echo "❌ FALTA: $pkg - Instalando..."
        sudo apt install -y $pkg
    else
        echo "✅ OK: $pkg"
    fi
done

1.4 Instalar Extensiones PHP Adicionales

# En gimli - Extensiones comunes para WordPress
sudo apt install -y php8.4-imagick php8.4-soap php8.4-bcmath
sudo systemctl restart php8.4-fpm

1.5 Verificar Servicios

# En gimli
sudo systemctl status nginx
sudo systemctl status php8.4-fpm
sudo systemctl status mariadb
sudo systemctl status fail2ban

FASE 2: CONFIGURACIÓN DE NGINX

2.1 Copiar Configuración de Nginx

# En gimli
cd /tmp/migracion_backup
 
# Copiar sites-available completos
sudo cp -r nginx/sites-available/* /etc/nginx/sites-available/
 
# Copiar otras configuraciones si existen
sudo cp -r nginx/conf.d/* /etc/nginx/conf.d/ 2>/dev/null
 
# Verificar archivos copiados
ls -la /etc/nginx/sites-available/

2.2 Configurar Sitios para Certificados SSL Existentes

# En gimli - Editar configuraciones según sea necesario
# Configuración ejemplo para pruebaewelinapmu.my.to
sudo nano /etc/nginx/sites-available/pruebaewelinapmu
 
# Asegurar que usa los certificados de gimli
# La configuración debe tener:
# ssl_certificate /etc/letsencrypt/live/pruebaewelinapmu.my.to/fullchain.pem;
# ssl_certificate_key /etc/letsencrypt/live/pruebaewelinapmu.my.to/privkey.pem;

2.3 Activar Sitios y Recargar Nginx

# En gimli
sudo ln -s /etc/nginx/sites-available/dokuwiki /etc/nginx/sites-enabled/ 2>/dev/null
sudo ln -s /etc/nginx/sites-available/pruebaewelinapmu /etc/nginx/sites-enabled/ 2>/dev/null
 
# Prueba de configuración
sudo nginx -t
 
# Si todo ok, recargar
sudo systemctl reload nginx

2.4 Verificar Certificados SSL

# En gimli - Listar certificados existentes
sudo ls -la /etc/letsencrypt/live/
 
# Verificar que pruebaewelinapmu.my.to tiene certificado
sudo certbot certificates | grep pruebaewelinapmu
 
# Si no tiene certificado, obtenerlo
sudo certbot --nginx -d pruebaewelinapmu.my.to -d www.pruebaewelinapmu.my.to

FASE 3: MIGRACIÓN DE BASE DE DATOS

3.1 Preparar MariaDB en Gimli

# En gimli - Asegurar que MariaDB está funcionando
sudo systemctl start mariadb
sudo systemctl enable mariadb
 
# Configurar seguridad básica (si no está hecha)
sudo mysql_secure_installation

3.2 Restaurar Base de Datos

# En gimli
cd /tmp/migracion_backup
 
# Descomprimir backup
sudo gunzip all_databases.sql.gz
 
# Restaurar
sudo mysql < all_databases.sql
 
# Verificar bases de datos restauradas
sudo mysql -e "SHOW DATABASES;"
sudo mysql -e "SELECT User, Host FROM mysql.user;"

3.3 Identificar Base de Datos de WordPress

# En gimli - Identificar nombre de la BD de WordPress
grep -i "DB_NAME" /var/www/pruebaewelinapmu/wp-config.php 2>/dev/null || \
ssh ubuntu@faramir "grep -i 'DB_NAME' /var/www/pruebaewelinapmu/wp-config.php"

3.4 Crear Usuario para WordPress (si es necesario)

# En gimli - Obtener credenciales de faramir
ssh ubuntu@faramir "grep -E 'DB_NAME|DB_USER|DB_PASSWORD|DB_HOST' /var/www/pruebaewelinapmu/wp-config.php"
 
# Crear usuario en gimli (si no existe)
sudo mysql -e "CREATE USER IF NOT EXISTS 'wordpress_user'@'localhost' IDENTIFIED BY 'contraseña_segura';"
sudo mysql -e "GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wordpress_user'@'localhost';"
sudo mysql -e "FLUSH PRIVILEGES;"

FASE 4: MIGRACIÓN DE ARCHIVOS

4.1 Migrar Dokuwiki

# En gimli
cd /tmp/migracion_backup
 
# Extraer Dokuwiki
sudo tar -xzf dokuwiki_backup.tar.gz -C /var/www/
 
# Verificar
ls -la /var/www/dokuwiki

4.2 Migrar Archivos de WordPress (Manteniendo Núcleo Limpio)

# En gimli - Extraer solo wp-content y archivos necesarios
cd /tmp/migracion_backup
 
# Extraer el contenido
sudo tar -xzf wordpress_backup.tar.gz -C /var/www/
 
# Opción 1: Si queremos mantener wp-content solo
sudo mv /var/www/pruebaewelinapmu/wp-content /tmp/wp-content_tmp
sudo rm -rf /var/www/pruebaewelinapmu
sudo mkdir -p /var/www/pruebaewelinapmu
sudo mv /tmp/wp-content_tmp /var/www/pruebaewelinapmu/wp-content
 
# Opción 2: Copiar todo (menos archivos del core)
cd /var/www/pruebaewelinapmu
sudo rm -rf wp-admin wp-includes *.php
sudo tar -xzf /tmp/migracion_backup/wordpress_backup.tar.gz --strip-components=1 -C /var/www/pruebaewelinapmu

4.3 Copiar wp-config.php

# En gimli - Copiar wp-config.php de faramir
scp ubuntu@faramir:/var/www/pruebaewelinapmu/wp-config.php /tmp/
sudo cp /tmp/wp-config.php /var/www/pruebaewelinapmu/
 
# Editar wp-config.php con las credenciales correctas
sudo nano /var/www/pruebaewelinapmu/wp-config.php
# Asegurar DB_HOST, DB_NAME, DB_USER, DB_PASSWORD

4.4 Copiar .htaccess (si existe)

# En gimli
scp ubuntu@faramir:/var/www/pruebaewelinapmu/.htaccess /tmp/ 2>/dev/null
sudo cp /tmp/.htaccess /var/www/pruebaewelinapmu/ 2>/dev/null

FASE 5: INSTALACIÓN Y CONFIGURACIÓN DE WORDPRESS

5.1 Instalar WP-CLI (si no está instalado)

# En gimli
sudo curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
sudo chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
wp --version

5.2 Descargar WordPress Última Versión (Núcleo Limpio)

# En gimli
cd /var/www/pruebaewelinapmu
 
# Asegurar permisos
sudo chown -R www-data:www-data /var/www/pruebaewelinapmu
 
# Descargar WordPress limpio (si no está)
sudo -u www-data wp core download --locale=es_ES --force --skip-content
 
# Verificar archivos del core
sudo -u www-data wp core verify-checksums

5.3 Configurar WordPress

# En gimli
cd /var/www/pruebaewelinapmu
 
# Verificar wp-config.php
sudo -u www-data wp config edit
 
# Si no existe wp-config.php, crearlo
sudo -u www-data wp config create \
  --dbname=wordpress_db \
  --dbuser=wordpress_user \
  --dbpass='contraseña' \
  --dbhost=localhost \
  --locale=es_ES
 
# Añadir configuraciones adicionales
sudo -u www-data wp config set WP_DEBUG false --raw
sudo -u www-data wp config set WP_DEBUG_LOG false --raw
sudo -u www-data wp config set WP_DEBUG_DISPLAY false --raw
sudo -u www-data wp config set WP_MEMORY_LIMIT 256M
sudo -u www-data wp config set WP_MAX_MEMORY_LIMIT 512M

5.4 Ajustar Permisos de WordPress

# En gimli
sudo find /var/www/pruebaewelinapmu -type d -exec chmod 755 {} \;
sudo find /var/www/pruebaewelinapmu -type f -exec chmod 644 {} \;
sudo chmod 600 /var/www/pruebaewelinapmu/wp-config.php
sudo chown -R www-data:www-data /var/www/pruebaewelinapmu

FASE 6: MIGRACIÓN DE PLUGINS Y TEMAS

6.1 Migrar Plugins

# Opción A: Copiar archivos directamente
rsync -avz --progress ubuntu@faramir:/var/www/pruebaewelinapmu/wp-content/plugins/ /var/www/pruebaewelinapmu/wp-content/plugins/
 
# Opción B: Usar WP-CLI con lista de plugins
# En faramir - Obtener lista de plugins activos
ssh ubuntu@faramir "cd /var/www/pruebaewelinapmu && wp plugin list --status=active --field=name" > /tmp/plugins.txt
 
# En gimli - Instalar plugins
cd /var/www/pruebaewelinapmu
while read plugin; do
    sudo -u www-data wp plugin install $plugin --activate
done < /tmp/plugins.txt
 
# Verificar plugins instalados
sudo -u www-data wp plugin list

6.2 Migrar Temas

# Opción A: Copiar archivos directamente
rsync -avz --progress ubuntu@faramir:/var/www/pruebaewelinapmu/wp-content/themes/ /var/www/pruebaewelinapmu/wp-content/themes/
 
# Opción B: Usar WP-CLI
# En faramir - Obtener lista de temas activos
ssh ubuntu@faramir "cd /var/www/pruebaewelinapmu && wp theme list --status=active --field=name" > /tmp/themes.txt
 
# En gimli - Instalar temas
cd /var/www/pruebaewelinapmu
while read theme; do
    sudo -u www-data wp theme install $theme --activate
done < /tmp/themes.txt
 
# Verificar temas instalados
sudo -u www-data wp theme list

6.3 Migrar Uploads (archivos multimedia)

# En gimli - Sincronización inicial
rsync -avz --progress ubuntu@faramir:/var/www/pruebaewelinapmu/wp-content/uploads/ /var/www/pruebaewelinapmu/wp-content/uploads/
 
# Verificar tamaño y cantidad
du -sh /var/www/pruebaewelinapmu/wp-content/uploads/
find /var/www/pruebaewelinapmu/wp-content/uploads/ -type f | wc -l

6.4 Migrar Otros Directorios de wp-content

# En gimli - Migrar lenguajes y otros
rsync -avz --progress ubuntu@faramir:/var/www/pruebaewelinapmu/wp-content/languages/ /var/www/pruebaewelinapmu/wp-content/languages/ 2>/dev/null
 
# Verificar estructura completa
ls -la /var/www/pruebaewelinapmu/wp-content/

6.5 Actualizar URLs en Base de Datos

# En gimli - Actualizar URLs después de la migración
cd /var/www/pruebaewelinapmu
 
# Buscar y reemplazar URLs del sitio
OLD_URL=$(ssh ubuntu@faramir "grep 'WP_HOME' /var/www/pruebaewelinapmu/wp-config.php | cut -d\\' -f4" || echo "http://faramir")
NEW_URL="https://pruebaewelinapmu.my.to"
 
sudo -u www-data wp search-replace "$OLD_URL" "$NEW_URL"
 
# Si hay URLs con http/https mixtos
sudo -u www-data wp search-replace "http://pruebaewelinapmu" "https://pruebaewelinapmu"
 
# Verificar
sudo -u www-data wp option get siteurl
sudo -u www-data wp option get home

FASE 7: CONFIGURACIÓN DE CRON JOBS

7.1 Configurar Crontab de Usuario (ubuntu)

# En gimli
crontab -e
 
# ============================================
# CRONTAB DE USUARIO UBUNTU EN GIMLI
# ============================================
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/home/ubuntu/bin
 
# ========== DE GANDALF (MANTENIDAS) ==========
# Hourly
12  * * * * check_sites
 
# Daily
15 09 * * * check_sites Diario
30 00 * * * copias/backup
40 10 1 * * report_fail2ban >/dev/null
@daily sudo apto update 2>/dev/null >/dev/null
@daily check_reboot
 
# Reboot
@reboot notify "I've just rebooted"
 
# ========== DE FARAMIR (MIGRADAS) ==========
# Permisos Dokuwiki (diario)
01 00 * * * sudo find /var/www/dokuwiki -type d -exec chmod 775 {} \;
02 00 * * * sudo find /var/www/dokuwiki -type f -exec chmod 664 {} \;
 
# Backups Dokuwiki y datos
08 00 * * * copias/backup
09 00 * * * copias/backup_data
 
# Propietario Dokuwiki
08 01 * * * sudo chown www-data:www-data -R /var/www/dokuwiki

7.2 Configurar Crontab de Root

# En gimli
sudo crontab -e
 
# ============================================
# CRONTAB DE ROOT EN GIMLI
# ============================================
 
# ========== DE FARAMIR (MIGRADAS) ==========
# Permisos WordPress (cada 15 minutos)
*/15 * * * * find /var/www/pruebaewelinapmu -type d -exec chmod g+rwx {} \;
*/15 * * * * find /var/www/pruebaewelinapmu -type f -exec chmod g+rw {} \;

7.3 Verificar Scripts y Permisos

# En gimli - Verificar que los scripts existen
ls -la /home/ubuntu/bin/
which check_sites
which check_reboot
which notify
which copias/backup 2>/dev/null
 
# Probar ejecución manual
/home/ubuntu/bin/check_sites
/home/ubuntu/bin/check_reboot

7.4 Testear Crons

# En gimli - Verificar que los crons se ejecutarán correctamente
# Forzar ejecución manual de tareas programadas
sudo run-parts /etc/cron.daily 2>&1 | head -20

FASE 8: VERIFICACIÓN Y PRUEBAS

8.1 Verificar Servicios y Puertos

# En gimli
sudo systemctl status nginx
sudo systemctl status php8.4-fpm
sudo systemctl status mariadb
sudo systemctl status fail2ban
 
# Verificar puertos
sudo netstat -tlnp | grep -E ':(80|443|3306)'

8.2 Probar Dokuwiki

# En gimli - Verificar archivos
ls -la /var/www/dokuwiki/
sudo -u www-data ls -la /var/www/dokuwiki/data/
 
# Probar acceso vía curl
curl -I http://localhost/dokuwiki
curl -I https://pruebaewelinapmu.my.to  # Si dokuwiki tiene dominio
 
# Navegar a la URL de Dokuwiki en el navegador
# Verificar:
# - Página de inicio
# - Crear/editar página
# - Archivos multimedia

8.3 Probar WordPress

# En gimli - Verificar archivos
ls -la /var/www/pruebaewelinapmu/
sudo -u www-data wp core verify-checksums
 
# Probar frontend
curl -I https://pruebaewelinapmu.my.to
curl -I https://pruebaewelinapmu.my.to/wp-admin
 
# Verificar plugins cargados
sudo -u www-data wp plugin list
 
# Verificar temas
sudo -u www-data wp theme list
 
# Probar en navegador:
# - Frontend: https://pruebaewelinapmu.my.to
# - Admin: https://pruebaewelinapmu.my.to/wp-admin
# - Verificar que PDFs e imágenes se cargan
# - Probar funcionalidad de plugins críticos

8.4 Verificar Logs

# En gimli - Monitorizar logs durante pruebas
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log
sudo tail -f /var/log/php8.4-fpm.log
sudo tail -f /var/log/mysql/error.log
sudo tail -f /var/log/fail2ban.log
 
# Buscar errores
sudo grep -i error /var/log/nginx/error.log | tail -20
sudo grep -i error /var/log/php8.4-fpm.log | tail -20

8.5 Probar Scripts y Crons

# En gimli - Probar scripts
/home/ubuntu/bin/check_sites
/home/ubuntu/bin/check_reboot
/home/ubuntu/bin/report_fail2ban > /tmp/test_fail2ban.txt && cat /tmp/test_fail2ban.txt
 
# Verificar que los cambios de permisos funcionan
sudo find /var/www/dokuwiki -type d -exec ls -ld {} \; | head -5
sudo find /var/www/pruebaewelinapmu -type d -exec ls -ld {} \; | head -5

8.6 Probar Backup y Restauración (Simulación)

# En gimli - Probar que los backups funcionan
copias/backup 2>&1 | head -20
copias/backup_data 2>&1 | head -20

8.7 Pruebas de Rendimiento

# En gimli - Pruebas básicas de carga
ab -n 100 -c 10 https://pruebaewelinapmu.my.to/
# O usar herramientas como curl en bucle
 
# Monitorear recursos
htop
iostat 2

FASE 9: CORTE FINAL Y DESMANTELAMIENTO

9.1 Preparar Corte Final

# En gimli - Última sincronización antes del corte
# Copiar cambios recientes de faramir a gimli
 
# 1. Última sincronización de archivos
rsync -avz --delete ubuntu@faramir:/var/www/dokuwiki/ /var/www/dokuwiki/
rsync -avz --delete --exclude='wp-admin' --exclude='wp-includes' ubuntu@faramir:/var/www/pruebaewelinapmu/ /var/www/pruebaewelinapmu/
 
# 2. Último backup de BD
ssh ubuntu@faramir "sudo mysqldump --single-transaction wordpress_db > /tmp/wordpress_final.sql"
scp ubuntu@faramir:/tmp/wordpress_final.sql /tmp/
sudo mysql wordpress_db < /tmp/wordpress_final.sql

9.2 Período de Gracia (48 horas)

# Mantener faramir funcionando pero sin tráfico
# En faramir - Redirigir tráfico a gimli (opcional)
sudo nginx -s stop 2>/dev/null || true

9.3 Confirmación y Corte Definitivo

# Después de 48 horas sin problemas:
 
# 1. En faramir - Desactivar servicios web
sudo systemctl stop nginx
sudo systemctl disable nginx
sudo systemctl stop php8.4-fpm
sudo systemctl disable php8.4-fpm
sudo systemctl stop mariadb
sudo systemctl disable mariadb
 
# 2. Backup final de faramir
cd ~
sudo tar -czf faramir_final_backup_$(date +%Y%m%d).tar.gz \
  /var/www \
  /etc/nginx \
  /etc/mysql \
  /home/ubuntu/.crontab \
  /var/lib/mysql
 
# 3. Verificar que gimli maneja todo correctamente
curl -I https://pruebaewelinapmu.my.to
curl -I http://dokuwiki  # o el dominio correspondiente

9.4 Limpieza de Faramir (Opcional - Cuando estés completamente seguro)

# En faramir - Solo después de confirmar que todo funciona
# ADVERTENCIA: ¡Esto eliminará datos!
 
sudo systemctl stop nginx php8.4-fpm mariadb
sudo apt-get remove --purge nginx* php* mariadb* mysql* -y
sudo rm -rf /var/www/*
sudo rm -rf /etc/nginx
sudo rm -rf /var/lib/mysql
sudo rm -rf /etc/letsencrypt

PLAN DE ROLLBACK

Si Algo Sale Mal Durante la Migración

# === ROLLBACK WORDPRESS ===
# En gimli
cd /var/www/pruebaewelinapmu
 
# 1. Restaurar desde backup (si existe)
# Deshacer cambios en BD
sudo mysql wordpress_db < /tmp/migracion_backup/wordpress_db_backup.sql
 
# 2. Restaurar archivos
sudo rm -rf /var/www/pruebaewelinapmu
sudo tar -xzf /tmp/migracion_backup/wordpress_backup.tar.gz -C /var/www/
 
# 3. Restaurar Nginx
sudo cp /etc/nginx/sites-available/pruebaewelinapmu.bak /etc/nginx/sites-available/pruebaewelinapmu
sudo systemctl reload nginx
 
# === ROLLBACK DOKUWIKI ===
cd /var/www
sudo rm -rf dokuwiki
sudo tar -xzf /tmp/migracion_backup/dokuwiki_backup.tar.gz -C /var/www/
 
# === ROLLBACK COMPLETO ===
# Si todo falla, restaurar todo el servidor
# En gimli
sudo tar -xzf /tmp/migracion_backup/faramir_full_backup.tar.gz -C /
sudo systemctl restart nginx php8.4-fpm mariadb

CHECKLIST FINAL

Preparación

  • ☐ Verificar espacio en gimli (mínimo 3GB libres)
  • ☐ Verificar versiones de Ubuntu, PHP, MariaDB, Nginx
  • ☐ Crear directorios en gimli
  • ☐ Hacer backup completo en faramir
  • ☐ Copiar backups a gimli

Sincronización de Paquetes

  • ☐ Copiar repositorios adicionales
  • ☐ Instalar paquetes de faramir en gimli
  • ☐ Verificar paquetes críticos (PHP, Nginx, MariaDB, etc.)
  • ☐ Verificar servicios activos

Migración de Datos

  • ☐ Configurar Nginx con sitios de faramir
  • ☐ Restaurar base de datos MariaDB
  • ☐ Migrar Dokuwiki (archivos)
  • ☐ Migrar WordPress (wp-content, config)
  • ☐ Instalar WordPress núcleo limpio
  • ☐ Migrar plugins y temas
  • ☐ Migrar archivos multimedia (uploads)
  • ☐ Actualizar URLs en WordPress

Configuración

  • ☐ Configurar crontab de usuario
  • ☐ Configurar crontab de root
  • ☐ Verificar scripts y permisos

Pruebas

  • ☐ Verificar servicios
  • ☐ Probar Dokuwiki
  • ☐ Probar WordPress frontend
  • ☐ Probar WordPress admin
  • ☐ Probar archivos multimedia (PDFs, imágenes)
  • ☐ Verificar logs (sin errores)
  • ☐ Probar scripts y crons
  • ☐ Probar backups

Corte

  • ☐ Última sincronización de datos
  • ☐ Desactivar servicios en faramir
  • ☐ Backup final de faramir
  • ☐ Verificar todo en gimli después del corte

Seguimiento

  • ☐ Monitorizar durante 48 horas
  • ☐ Verificar certificados SSL
  • ☐ Confirmar DNS propagado
  • ☐ Documentar cualquier incidencia

NOTAS ADICIONALES

Horarios Recomendados

  • Backup: Realizar en horario de bajo tráfico (ej. 2:00 AM)
  • Migración: Fin de semana o horario nocturno
  • Período de gracia: 48 horas mínimo

Contactos de Emergencia

  • Documentar números de teléfono/email de soporte
  • Tener acceso a la consola de Oracle Cloud por si falla el SSH

Monitoreo Post-Migración

# En gimli - Script de monitoreo básico
watch -n 30 'curl -s -o /dev/null -w "%{http_code}" https://pruebaewelinapmu.my.to && echo " - WordPress OK"'
watch -n 30 'curl -s -o /dev/null -w "%{http_code}" http://localhost/dokuwiki && echo " - Dokuwiki OK"'

FIN DEL PLAN DE MIGRACIÓN

computing/cloud/migracion_oracle.1785960807.txt.gz · Última modificación: por alfabeto