Utilidades

Aprende a migrar tu web en WordPress a mano

27/08/2018

En esta guía vamos a enseñarte a realizar una migración de una web en WordPress a mano, es decir, sin necesidad de utilizar plugins ni herramientas externas. Vamos a mostrar cómo se realiza utilizando los comandos de linux (debes tener acceso por SSH al servidor).
Si no te sientes cómodo utilizando la línea de comandos, échale un vistazo a nuestro artículo sobre cómo migrar una web utilizando el plugin All-in-One WP Migration.

La web que vamos a migrar en el ejemplo es una web limpia a la que únicamente le hemos cambiado el tema para poder identificarla. Hemos elegido el nombre de dominio www.servidor1.com, y se encuentra en un servidor al que hemos llamado servidor1.

Servidor 1

Web www.servidor1.com en el servidor1 con WordPress instalado.

La web de destino no tiene ningún contenido, simplemente hemos creado el dominio, al que hemos llamado www.servidor2.com, y se encuentra en un servidor distinto del primero, al que hemos llamado servidor2.

Servidor 2

Web www.servidor2.com en el servidor2 vacía.

Lo primero es ir al servidor1, y hacer un backup de la web. Ya mostramos en un artículo sobre cómo realizar un backup de WordPress sin plugins, por lo que no vamos a extendernos demasiado.
Para resumir, hacemos un volcado de la base de datos, la guardamos en el directorio donde está la web y comprimimos todo el contenido (ficheros de la web y la base de datos) en un único fichero.
Los comandos para realizar este backup son:

mysqldump -u $DB_USER -p$DB_PASS $DB_NAME [-h $DB_HOST]> $NOMBRE_FICHERO_SQL.sql
tar czf $NOMBRE_FICHERO_TAR.tgz * .htaccess

Las variables $DB_USER, $DB_PASS, $DB_NAME y $DB_HOST son el nombre del usuario que tiene privilegios sobre la base de datos de WordPress, la contraseña de dicho usuario, el nombre de la base de datos y el host en el que se encuentra la base de datos, respectivamente. Si la base de datos se guarda localmente, puedes omitir este parámetro.
Para ver estas variables, ejecuta las siguiente sentencias:

cat wp-config.php |grep DB_NAME
cat wp-config.php |grep DB_USER
cat wp-config.php |grep DB_PASSWORD
cat wp-config.php |grep DB_HOST

Las variables $NOMBRE_FICHERO_SQL y $NOMBRE_FICHERO_TAR son el nombre del fichero en el que se vuelca la base de datos y el nombre del fichero resultante de la compresión de todo (puedes poner el nombre que quieras a estos ficheros).
En nuestro caso, el nombre del fichero del volcado de la base de datos es "servidor1.sql", y el nombre del fichero comprimido es "servidor1.tgz".

Servidor 1

Contenido del directorio raíz del dominio www.servidor1.com.

Ahora movemos este fichero al servidor2. Lo debemos descomprimir en el directorio en el que se va a situar la web. En nuestro caso, como un servidor no tiene acceso al otro, hemos copiado el fichero con el comando SCP del servidor1 a nuestro host, y de nuestro host lo hemos copiado al servidor2.

También mostramos cómo restaurar un backup en el artículo sobre cómo realizar un backup de WordPress sin plugins, que ya hemos comentado anteriormente, por lo que nuevamente no vamos a extendernos demasiado en las explicaciones.
Descomprimimos el fichero tar y creamos una base de datos en la que debemos volcar el fichero con la base de datos del servidor1. Los comandos a realizar para realizar la restauración son:

tar xzf $NOMBRE_FICHERO_TAR.tgz
mysql -u $SQL_USER -p$SQL_PASS [-h $DB_HOST] -se "create database $DB_NAME"
mysql -u $SQL_USER -p$SQL_PASS [-h $DB_HOST] -se "grant all privileges on $DB_NAME.* to '$DB_USER'@'$DB_HOST' identified by '$DB_PASS';"
mysql -u $SQL_USER -p$SQL_PASS -D$DB_NAME [-h $DB_HOST] < $NOMBRE_FICHERO_SQL.sql

Las variables $NOMBRE_FICHERO_TAR, $NOMBRE_FICHERO_SQL, $DB_NAME, $DB_USER, $DB_PASS y DB_HOST ya las hemos explicado anteriormente; la variable $SQL_USER es el nombre del usuario de mysql que puede crear bases de datos, usuarios y demás (por defecto 'root'), y $SQL_PASS es la contraseña del usuario (la que hayas elegido al instalar mysql).

Por último nos queda reemplazar en la base de datos todas las referencias del primer dominio por las del segundo. Si vas a cambiar el servidor pero vas a seguir utilizando el mismo dominio omite este paso.
Si tienes la oportunidad de utilizar WP-CLI, hazlo, pues con una única sentencia es suficiente para realizar esta tarea. Introduce el siguiente comando en el servidor nuevo:

sudo -u $OWNER wp search-replace $DOMINIO_VIEJO $DOMINIO_NUEVO

La variable $OWNER es el nombre del propietario del directorio en el que están los ficheros de la web, $DOMINIO_VIEJO y $DOMINIO_NUEVO son los nombres del dominio viejo y nuevo, respectivamente.

Si el nuevo servidor no tiene WP-CLI, puedes cambiar los valores a mano. en lugar de ir tabla por tabla y campo por campo, lo mejor es utilizar un script. Hemos realizado un script en bash que te vamos a mostrar a continuación, pero puedes buscar en Internet un script similar en otros lenguajes.

#!/bin/bash
clear

dbuser=user2
dbpass=user2
dbname=servidor2
dbhost=localhost
old_domain=www.servidor1.com
new_domain=www.servidor2.com
tablas=mysql -u $dbuser -p$dbpass -D $dbname -h $dbhost -se "show tables;"

for i in $tablas
do
campos=mysql -u $dbuser -p$dbpass -D $dbname -h $dbhost -se "desc $i;"|awk '{print $1}'

for j in $campos
do
mysql -u $dbuser -p$dbpass -D $dbname -h $dbhost -se "update $i set $j = replace($j,'$old_domain','$new_domain');"
done
done

Cambia las variables dbuser, dbpass, dbname y dbhost por los valores que aparezcan en el fichero wp-config.php, y las variables old_domain y new_domain por el nombre del dominio antiguo y el nuevo.
Si tampoco puedes utilizar scripts en bash, puedes buscar un en php, o en cualquier otro lenguaje.

Con esto ya hemos migrado la web del servidor1 al servidor2.

Servidor 2

Web importada del servidor1 al servidor2.

Si no tienes acceso por SSH, descarga todo el contenido del directorio raíz en el que está la web por FTP (puedes utilizar un cliente como Filezilla), y haz una copia de seguridad de la base de datos con phpMyAdmin.
En el artículo sobre hacer un backup de WordPress sin plugins, en el aparatado de Windows, comentamos cómo hacer un backup en phpMyAdmin.
Después copia todos los ficheros al nuevo servidor e importa la base de datos con phpMyAdmin.

Si eres cliente de nuestro Hosting WordPres Administrado, puedes utilizar nuestro migrador automático.

¿Nos ayudas a mejorar la calidad del blog?
Déjanos una valoración sobre este post para poder seguir mejorando
1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (Ninguna valoración todavía)
Cargando...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


* Campo obligatorio.