Bandera: Русский Русский Bandera: English English

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.

Reseñas relacionadas

Quiero expresar mi enorme agradecimiento al especialista que me configuró las URLs amigables en OpenCart. Fue fácil y sencillo, y me alegra haber encontrado finalmente a un profesional que lo hizo todo con calidad y sin complicaciones. Antes cambié a cuatro especialistas y cada vez surgían problemas con la configuración, pero esta persona resolvió la tarea a la perfección.

apande

apande · Configuración de Nginx y OpenCart

Un comprador muy poderoso

07.09.2024 · ⭐ 5/5

Quiero expresar mi enorme agradecimiento al especialista que me configuró las URLs amigables en OpenCart. Configurar las URLs amigables resultó fácil y sencillo, y me alegra haber finalmente encontrado a un profesional que lo hizo todo con calidad y sin complicaciones innecesarias. Antes de esto cambié a cuatro especialistas, y cada vez surgían problemas con la configuración, pero esta persona resolvió la tarea a la perfección.

Había que resolver un problema con el certificado SSL en el servidor, que había sido emitido mediante Ngnix Proxy manager. Mijaíl aclaró todos los detalles de cómo tengo todo configurado, pidió accesos para evaluar la viabilidad de la solución, ya que antes no se había enfrentado a un servicio similar. Se familiarizó rápidamente y resolvió mi problema. Colaboración perfecta)

kireevk

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

Comprador acostumbrado

15.03.2024 · ⭐ 5/5

Necesitaba resolver un problema con el certificado SSL en el servidor, que fue emitido a través de Ngnix Proxy manager. Mikhail aclaró todos los detalles sobre cómo tengo todo organizado, pidió accesos para evaluar la viabilidad de resolver la tarea, ya que antes no se había enfrentado a un servicio similar. Se ocupó rápidamente y resolvió mi problema. Cooperación perfecta)

¿Necesitas ayuda?

Escríbeme y te ayudaré a resolver el problema

Publicaciones relacionadas