// DevOps

Migración o recuperación de un sitio web para principiantes: no temas, es más sencillo de lo que parece

Publicado el 06.10.2025

Mover un sitio a un nuevo servidor o restaurarlo tras un fallo puede sonar como una tarea aterradora, especialmente si eres nuevo en desarrollo web o administración. Pero no te asustes. Con el enfoque correcto y un plan paso a paso lo harás sin estrés. Abajo —desglose de todo el proceso: desde la copia de seguridad hasta la comprobación, incluyendo las paneles ISPmanager y FreePanel y pruebas locales mediante hosts sin cambiar el DNS público.

¿Qué es migrar y restaurar un sitio

Migración de sitio — trasladar todos los archivos, bases de datos y configuraciones de un servidor (o hosting) a otro. Es necesario si:

  • cambias de proveedor de hosting (precio, rendimiento, limitaciones),
  • pasas de un servidor local a producción,
  • actualizas el servidor (software/hardware obsoleto).

Restauración de sitio — devolver el sitio a estado operativo tras un fallo, hackeo o borrado accidental. Normalmente se realiza desde una copia de seguridad.

El objetivo — entender el proceso y evitar errores comunes. Los ejemplos a continuación están orientados a WordPress y sitios estáticos, pero los principios son universales.

Por qué no es tan aterrador

El miedo a “romper todo” desaparece si:

  1. haces un respaldo antes de empezar,
  2. sigues un plan claro,
  3. verificas cada paso.

Paso 1. Preparación y copia de seguridad

Por qué es importante. Sin copia de seguridad corres el riesgo de perder datos para siempre. Incluso si todo funciona — haz una copia.

Qué guardar

  • Archivos del sitio: HTML, PHP, CSS, JS, imágenes. En servidores suele ubicarse en: /var/www/html o ~/www/public_html.
  • Base de datos: MySQL/MariaDB (a menudo para WordPress).
  • Configuraciones: .htaccess (Apache), virtual hosts de Nginx, ajustes de PHP.
  • Configuración DNS: A, CNAME y otros registros en el registrador/proveedor DNS.

Cómo hacer el backup

Archivos:

  • via FTP/SFTP (por ejemplo, FileZilla) — descarga la carpeta del sitio;
  • via SSH — crea un archivo y luego descárgalo:
tar -czvf site-backup.tar.gz /var/www/html

Base de datos (MySQL/MariaDB):

mysqldump -u username -p database_name > backup.sql

Paneles de hosting: en ISPmanager y FreePanel hay exportación de BD desde la interfaz.

WordPress: plugins como UpdraftPlus o Duplicator crean un backup completo (archivos + BD).

Consejo. Guarda una copia fuera del servidor origen: disco externo, nube (Google Drive, Dropbox), otro servidor.


Paso 2. Preparar el nuevo servidor

Si es una migración — prepara el nuevo servidor. Si es una restauración — pon en orden el servidor actual.

Instala el software (ejemplo Ubuntu):

sudo apt update
sudo apt install apache2 php libapache2-mod-php mysql-server

Alternativa: Nginx + PHP-FPM.

Acceso y redes

sudo apt install openssh-server
sudo ufw allow 80
sudo ufw allow 443

Crea la BD y el usuario (MySQL):

CREATE DATABASE new_database;
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON new_database.* TO 'new_user'@'localhost';
FLUSH PRIVILEGES;

Paso 3. Transferencia o restauración de datos

Transferencia de archivos

Via SFTP/FTP — sube el contenido al raíz del sitio en el nuevo servidor (suele ser /var/www/html). Via SSH:

scp site-backup.tar.gz user@new-server-ip:/var/www
ssh user@new-server-ip
sudo tar -xzvf /var/www/site-backup.tar.gz -C /var/www/html
sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;

Restauración de la base

mysql -u new_user -p new_database < backup.sql

WordPress: actualiza wp-config.php (nombre de BD, usuario, contraseña, host).

Configuración del servidor web

Apache Revisa .htaccess. Básico para WordPress:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

(NOTA: deja los marcadores BEGIN/END exactamente como están si usas WordPress.)

Nginx Ejemplo de virtual host:

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    root /var/www/html;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock; # compruebe la versión de PHP-FPM
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_index index.php;
    }
}

Reiniciar:

sudo systemctl restart apache2
# o
sudo systemctl restart nginx

Paso 4. Actualizar DNS al migrar

  1. En el panel del registrador/proveedor DNS cambia la entrada A al nuevo IP.
  2. Un día antes de la migración reduce el TTL del registro para acelerar la propagación.
  3. Espera de 1 a 24 horas para la propagación.

Paso 5. Pruebas locales mediante hosts

Prueba antes de cambiar el DNS público. Los usuarios no verán los cambios.

Editar hosts

  • Windows: C:\Windows\System32\drivers\etc\hosts
  • Linux/macOS: /etc/hosts

Añade la línea:

192.168.1.100 yourdomain.com www.yourdomain.com

Donde 192.168.1.100 — IP del nuevo o servidor local.

Vaciar caché DNS

  • Windows:
ipconfig /flushdns
  • macOS:
sudo dscacheutil -flushcache
  • Linux (systemd):
sudo systemd-resolve --flush-caches

Abre http://yourdomain.com — las peticiones irán al IP indicado. Tras las pruebas elimina la línea del hosts y vuelve a vaciar la caché.

Localmente en el servidor Añade en /etc/hosts:

127.0.0.1 yourdomain.com

Comprueba:

curl -I http://yourdomain.com

Si usas ISPmanager/FreePanel — añade el dominio en la panel y apunta la carpeta raíz del sitio.


Paso 6. Verificación del sitio

Acceso y funcionalidad

  • Abre el sitio por dominio o por IP.
  • Recorre páginas, formularios, medios.
  • WordPress: accede a /wp-admin.

Logs

# Apache
tail -f /var/log/apache2/error.log

# Nginx
tail -f /var/log/nginx/error.log

Base de datos Comprueba que el contenido se muestra correctamente.

HTTPS

sudo apt install certbot python3-certbot-apache
sudo certbot --apache
# o para Nginx:
# sudo apt install certbot python3-certbot-nginx
# sudo certbot --nginx

Migración usando ISPmanager

Backup

  • Accede al panel (https://<ip>:1500).
  • «File Manager»/«Respaldo»: archiva y descarga la carpeta del sitio (/var/www/<user>/data/www/yourdomain.com).
  • «Bases de datos»: exporta .sql.
  • Anota parámetros del dominio y la versión de PHP.

Transferencia

  • En el nuevo servidor sube el archivo y descomprímelo en la carpeta destino.
  • Crea la BD y el usuario, importa el .sql.
  • En «Dominios» añade el dominio, asigna la raíz del sitio y la versión de PHP.
  • En «Certificados SSL» conecta Let’s Encrypt o sube el tuyo.

Observación. ISPmanager crea automáticamente configs de Apache/Nginx, pero verifica propietario/permisos (normalmente 755 para carpetas, 644 para archivos).


Migración usando FreePanel

Backup

  • Accede (frecuentemente http://<ip>:8080).
  • «File Manager»: descarga la carpeta del sitio o crea un archivo:
tar -czvf site-backup.tar.gz /var/www/html/yourdomain
  • «Databases»: exporta .sql o usa SSH mysqldump.

Transferencia

  • En el nuevo servidor, en «File Manager» sube el archivo y descomprímelo:
tar -xzvf site-backup.tar.gz -C /var/www/html/yourdomain
  • Crea la BD y el usuario, importa:
mysql -u new_user -p new_database < backup.sql
  • «Domains»: añade el dominio, la carpeta raíz, la versión de PHP.

SSL Si auto-Let’s Encrypt no está disponible:

sudo certbot --apache
# o:
# sudo certbot --nginx

Nota. En FreePanel hay más trabajo manual. Si hay problemas revisa configs en /etc/apache2 o /etc/nginx y los permisos.


Problemas típicos y soluciones rápidas

  • Database connection error — revisa wp-config.php (DB_NAME/DB_USER/DB_PASSWORD/DB_HOST).
  • 404 en WordPress — revisa .htaccess (Apache) o try_files en Nginx.
  • Pantalla blanca — activa depuración:
define('WP_DEBUG', true);

y revisa los logs del servidor web.

  • Carga lenta — verifica que el DNS ya apunte al nuevo IP y que no haya mezcla de recursos estáticos desde el servidor antiguo.

  • Faltan archivos — compara el contenido del archivo y la carpeta destino.

  • Problemas en los paneles

    • ISPmanager: el dominio está vinculado a la carpeta correcta, la versión de PHP coincide.
    • FreePanel: permisos/propietarios y la corrección manual de configs.
  • Pruebas locales no funcionan — asegúrate del IP correcto en hosts y vacía la caché DNS.


Consejos útiles

  • Prueba en un subdominio test.yourdomain.com.
  • Para WordPress usa plugins de migración (Duplicator, UpdraftPlus).
  • Configura backups regulares (cron o herramientas del panel).
  • Documenta los pasos, accesos y cambios en las configuraciones.

Conclusión

Migrar o restaurar un sitio — es una tarea realizable. Con una copia de seguridad y un plan claro el riesgo es bajo. Las paneles ISPmanager y FreePanel simplifican la rutina, y las pruebas mediante hosts permiten verificar todo sin cambiar el DNS público. Haz los pasos de forma secuencial, revisa los logs y no guardes la única copia en el servidor origen. Con el tiempo realizarás estas operaciones con confianza.

// Reviews

Reseñas relacionadas

apande

apande

Configuración de Nginx y OpenCart

07.09.2024 · ★ 5/5

Un comprador muy poderoso
kireevk

kireevk

Diagnóstico de Nginx Proxy Manager en un contenedor Docker y solución del problema

15.03.2024 · ★ 5/5

Comprador acostumbrado

// Contact

¿Necesitas ayuda?

Escríbeme y te ayudaré a resolver el problema