Revista Tecnología

¿Cómo migrar WordPress de servidor remoto a local?

Publicado el 11 septiembre 2014 por Santi Navarro @santiacn

En el artículo veremos cómo migrar nuestro WordPress de servidor remoto a localhost.

El problema planteado es que deseo cambiar la apariencia de mi web, añadir un tema nuevo y como seguramente habrán muchas cosas que no me gusten cómo quedan cuando active el nuevo he decidido realizar una migración.

Claro, esto también se puede hacer en producción pero lógicamente todo el tiempo que emplee en modificar aquello que quiera la web estará inactiva lo que me hará perder visitas. Así que el mejor camino para hacer esto es seguir el proceso de migrar WordPress a mi servidor local.

Siempre se ha dicho que las pruebas con gaseosa, en este caso, en localhost. Una vez tenga realizada la migración, iniciaré WordPress y activaré el child theme para empezar a modificarlo y trastearlo a mi gusto.

Además, aprovecho esta experiencia reciente con el fin de escribir el post que seguramente será bastante útil a más de uno que en algún momento se encuentre en el mismo problema o en otro similar. A continuación veremos el proceso minuciosamente, ¿me acompañas?.

Exportar base de datos del servidor remoto

El primer paso que he realizado ha sido acceder al hosting donde tengo alojada mi web e ir al administrador de la base de datos phpMyAdmin.

He accedido a la correspondiente base de datos donde tengo la instalación de mi WordPress y he realizado una exportación de la misma en formato SQL.

Eso sí, como en la misma base de datos tengo otras instalaciones he seleccionado las tablas que corresponden a mi web, diferencio de cada una de las instalaciones con diferentes prefijos para las tablas.

Además uno de los puntos de seguridad importantes cuando hagas una instalación manual de WordPress es cambiar el prefijo de la base de datos que viene por defecto y que se corresponde con las letras wp.

Descargar todo el contenido del remoto

En este caso he descargado por completo todas las carpetas de la instalación de WordPress. Creo que realmente únicamente es necesaria la carpeta wp-content, pero eso si, en ese caso debes realizar una preinstalación y luego sustituir esa carpeta.

En definitiva, he copiado todo el contenido que tenía de mi carpeta de publicación en el servidor de producción y me lo he bajado al servidor local.

Previamente en el servidor local me he creado una carpeta que me servirá de publicación, la he llamado miweb, donde he guardado todo lo que me he bajado del servidor en producción.

Crear e importar base de datos en servidor local

Para no complicarme la vida me he creado una base de datos en local desde el phpmyadmin a la que también he llamado miweb. Donde el usuario y el password les he asignado la misma palabra miweb. Ojo, en todos los casos las dos palabras juntas.

Esta base de datos me servirá para realizar la instalación de WordPress, aunque en sí no es una instalación como tal, una vez esté todo configurado correctamente veré mi sitio web en local directamente sin realizar al paso de la instalación. Si lo haceis comprobareis que es así.

Nos situamos, ya tenemos creada la base de datos y le hemos dado un usuario además del password a nuestra base de datos en local.

Ahora toca importar la base de datos en el servidor local que previamente exportamos del servidor remoto. Seleccionamos la base de datos miweb y desde el panel de phpmyadmin seleccionamos la opción de Importar.

El fichero a importar, en mi caso, tiene extensión SQL ya que la base de datos no es muy grande, en ocasiones puede ser que la exportación se realice comprimida en formato zip si así lo indicamos.

Seleccionamos el fichero y lo importamos. Veremos que se han creado todas las tablas en el lateral izquierdo de nuestro phpmyadmin. Perfecto.

Ahora debemos ejecutar una consulta SQL con el fin de ‘corregir’ las URLs de algunas filas en la base de datos, ya que tendrán la forma siguiente:

http://www.midominio.es/

Y para que funcione en el servidor local tendrán la siguiente:

http://localhost/miweb

Recordad que en el servidor local he creado una carpeta llamada miweb que será mi carpeta de publicación. De ahí que tenga esa estructura.

Bien nos dirijimos al apartado de SQL como vemos en la siguiente imagen.

wordpress-migrar-servidor

Debemos pegar el siguiente código para que reemplace los valores de algunas filas. El siguiente código lo obtuve hace tiempo por la red y me lo guardé en mi carpeta de recursos WordPress porque para estos casos viene genial.

Os dejo aquí la consulta, pero debeis sustituir vuestros valores para vuestro caso. Atención a un detalle, en el código que os facilito los prefijos de la base de datos son los que viene por defecto en WordPress, wp.

En el caso que vosotros tengais otros prefijos en las filas de la base de datos debeis reemplazar wp por el vuestro sino la consulta os fallará. (Para wp_options, wp_posts y wp_postmeta quedará como prefijo_options, prefijo_posts y prefijo_postmeta)

Para vuestro caso debereis reemplazar las direcciones web según corresponda, para http://www.mi-viejo-dominio.com y http://www.mi-nuevo-dominio.com, el código es bastante explicativo. En este caso, mi-nuevo-dominio se corresponde con http://localhost/miweb . Este código también se puede emplear para migrar entre dos servidores remotos.

 
UPDATE wp_options SET option_value = 
REPLACE(option_value, 'http://www.mi-viejo-dominio.com', 'http://www.mi-nuevo-dominio.com') 
WHERE option_name = 'home' OR option_name = 'siteurl';
 
UPDATE wp_posts SET guid = REPLACE(guid, 'http://www.mi-viejo-dominio.com', 'http://www.mi-nuevo-dominio.com');
 
UPDATE wp_posts SET post_content = 
REPLACE(post_content, 'http://www.mi-viejo-dominio.com', 'http://www.mi-nuevo-dominio.com');
 
UPDATE wp_postmeta SET meta_value = 
REPLACE(meta_value, 'http://www.mi-viejo-dominio.com', 'http://www.mi-nuevo-dominio.com')

Bien, ya hemos ejecutado la consulta y reemplazado nuestros valores.

Perfecto, pues ya tenemos nuestra base de datos y las URLs preparadas para que los enlaces funcionen en localhost. Vamos al siguiente punto.

Comprobar el fichero wp-config.php de instalación de WordPress.

Con el fin de que se haga correctamente la conexión de WordPress a la base de datos he de comprobar los datos de nombre de base de datos, usuario, password y el servidor de la base de datos.

Para el caso que nos ocupa el servidor de la base de datos es locahost, usuario, password y nombre de base de datos es miweb.

Bien una vez realizados estos pasos en principio debe todo conectar y funcionar correctamente.

Acceder a nuestra web en localhost

Vamos a visitar la dirección de la web en localhost, que hemos quedado que es http://localhost/miweb . Perfecto!, se ve la home de perlas

:)

Ahora voy a visitar otra sección. Fallo! Objeto no encontrado! .

Me ha dado un error pero tranquilos es por los permalinks o enlaces permanentes, para solucionar el problema accederemos al panel de adminstración y volveremos a guardar la estructura de permalinks (en mi caso los tenía en modo /%postname%/ ).

Ojo, recordad que vuestro usuario y password de WordPress sigue siendo el mismo que en el servidor de producción.

A partir de ahí debe funcionar todo correctamente y todas las URLs deben apuntar a direcciones en localhost.

Para ser honestos antes de poder guardar de nuevo la estructura de permalinks me he encontrado con un problema y es que a través de un plugin que sabía cuál era no me dejaba acceso al panel de login, si os pasa alguna vez, un truco que normalmente funciona es renombrar temporalmente la carpeta del plugin. De este modo ya podreis acceder a la pantalla de login.

Conclusión

Como veis en unos sencillos pasos hemos pasado toda la información de nuestro servidor remoto a nuestro localhost. Ahora tranquilamente podemos hacer diferentes pruebas en nuestros themes o emplearlo de la forma que deseemos.

Recordemos que otra ventaja de hacer este método es que nuestra web sigue trabajando online a pleno rendimiento.

Espero que os sea de utilidad y estais invitados a compartirlo a través de vuestros canales sociales. Un saludo y gracias por vuestro tiempo.


Volver a la Portada de Logo Paperblog