sábado, 12 de octubre de 2019

Receta: migrar un Wordpress a localhost sin plugins

Situación típica: te encuentras con un blog en Wordpress "legacy", sin actualizar, o con muchos cambios por hacer. Es necesario echar a correr el blog en otro servidor (o mismamente en localhost).

Receta rápida

En el servidor donde corre:

1) Copiamos el árbol de directorios tal cual, mejor en un archivador:
/var/www/ $ tar cf blog-migrar.tar blog/
Ahora nos llevamos el .tar a nuestra máquina y lo descomprimimos el directorio web.

2) Volcamos la base de datos:
/var/www/ $ mysqldump -u usuario -p -h hostBaseDatos BaseDatosWordpress > BaseDatosWordpress.sql

3) Corregimos las referencias en la base de datos. Supongamos que la URL base del blog es www.webviejuna.com y que lo vamos a echar a correr en un servidor de desarrollo que será localhost.www.webviejuna.com (sin HTTPs). Hay que sustituir todas las apariciones de "www.webviejuna.com" por "localhost.www.webviejuna.com" en el SQL generado. Se puede hacer con sed o en el editor de textos si el archivo sql no es muy grande y el editor de texto no se queda frito.

4) Creamos la base de datos en el servidor de desarrollo, le damos permisos y cargamos el SQL que acabamos de modificar en el servidor de desarrollo:
$ mysql -u usuarioSuper -p  -e "CREATE DATABASE BlogPrueba;"
$ mysql -u usuarioSuper -p  -e "GRANT ALL PRIVILEGES ON BlogPrueba.* TO 'usuariotest'@'localhost' IDENTIFIED BY 'pass';"
$ cat BaseDatosWordpress.sql | mysql -u usuarioSuper -p BlogPrueba


5) Editamos el wp-config.php para cambiar los parámetros de conexión, apuntando a la base de datos local. Ojo con las posibles personalizaciones (por ejemplo, constantes como WP_CONTENT_URL, o ajustes como $_SERVER['HTTPS'] = 'on')

6) Muy útil en desarrollo. En wp-config.php:
define('WP_DEBUG', isset($_GET['debug']) && $_GET['debug'] == '1');
Así activamos el modo debug a demanda poniendo debug=1 como parámetro en la URL.