Responsive

Cómo migrar sitios WordPress a WordPress Multisite



Cómo migrar WordPress a WordPress Multisite

Inicialmente, tenía a «Mi Computadora» funcionando en mi propio servidor local con Windows (Mi Computadora.. JOJO), pero comenzaron los problemas de conexión con el Internet de la patria (Venezuela socialista) y tuve que buscar una mejor alternativa en la nube sin gastar dinero. Fue como di con Amazon Web Services (AWS) y gracias a un viejo amigo pude registrarme en la capa gratuita que ofrecen para iniciar con otra gran etapa de entrenamiento..

Todo iba bien hasta que hace pocos meses agregue otra «VirtualHost» para poner a funcionar otra instalación de WordPress-Woocommerce del proyecto VainaDulce.com, sobre la misma instancia o máquina virtual EC2 de AWS que está limitada a un núcleo de CPU y 1Gb de RAM (Si, si.. Error). Al principio iba bien, pero comenzó a ser un dolor de cabeza gracias a los errores 524 que se generaban a toda hora debido al incremento de visitas tras una publicidad en Instagram… La solución mas agradable que ofrece AWS es aplicar un «Autoscaling» con mas instancias para responder ante la demanda, lo cual es una de las mas bellas configuraciones entre los servicios de AWS, pero mis cálculos decían que esto nos iba a salir muy caro!

Bueno, tocó dejar AWS solo para servir nuestra futura «APP» y volver al servidor local (por ahora! ¬¬ ), pero esta vez con dos conexiones y mas RAM, Linux, Redis, Squid, etc.. Y decidido a implementar esta vez una instalación de WordPress Multisite debido a todas sus ventajas para el desarrollo web y el rendimiento de la máquina.

Tenía ambos sitios web respaldados con Updraftplus, un excelente plugin para backup que toma todo de WordPress y lo monta en Google Drive en casos de emergencia, para que cuando destruyas tu sitio (por andar inventando locuras como yo) lo único que tengas que hacer es instalar WordPress de nuevo y darle a un botón de restaurar. Es hermoso, pero su versión gratuita no permite migrar sitios normales a un WordPress Multisitio.. Y no quise arriesgarme con algún otro plugin!

Ya, mucho cuento.. Después de tres días dándome contra el teclado, ahora vamos con el proceso de migración, que es un poco complicado y lo describiré lo mas resumido posible.. No te saltes ningún paso!

Proceso de Migración a WordPress Multisite

1. Selecciona e instala desde cero tu sitio WordPress principal o base.

Primero tendrás que elegir cual es tu sitio mas grande, el que utilice mas plugins, mayor cantidad de archivos subidos, configuración mas complicada y una programación mas compleja. Es decir, el sitio mas avanzado. En mi caso Mi-computadora.net.. (A partir de ahora, Sitio#1)

Importante: Suponiendo que utilizarás el mismo dominio del sitio principal, este tendrás que tenerlo respaldado con Updraftplus para ahorrarte un gran trabajo. El plugin guardará todo tu sitio en archivos .rar y los colocará automáticamente en Google Drive o en carpetas locales.

Instala WordPress en la carpeta correspondiente donde estará alojado: Configura la base de datos, usuario administrador y listo. La URL de este nuevo sitio debe ser tu dominio principal (Sitio#1) . Asumiendo que ya apuntaste tu DNS a la nueva IP, tu dominio ahora mostrará un WordPress nuevo.

En esta instalación nueva, activa Updraftplus y restaura el sitio con los archivos del respaldo que hiciste. Si no tienes nada fuera de lugar, quedará tal cual como estaba luego de darle al botón de «restaurar».

2. Respalda manualmente el segundo sitio.

Exporta toda la base de datos del otro sitio (en mi caso, vainadulce.com.. Sitio#2 ).. Para esto utilicé la función «Exportar» en PhpMyAdmin, lo cual te genera un archivo SQL de creación e inserción de datos de todas las tablas.

Crea una base de datos temporal en el mismo servidor MySql donde se acaba de crear el WordPress nuevo e importa este archivo para crear y rellenar las tablas del respaldo del Sitio#2.. Cuidado si lo haces sobre la base de datos del sitio principal, pues tendrás que comenzar desde cero!

También debes guardar todos los archivos (Sitio#2) del tema y los archivos de la carpeta uploads, ambos ubicados en los directorios wp-content/themes y wp-content/uploads, respectivamente. También puedes respaldar la carpeta de wp-content/plugins para ahorrarte tiempo.

3. Activa el modo Multisite en la nueva instalación.

Para esto tendrás que desactivar todos los plugins del Sitio#1 que acabas de restaurar con Updraftplus y editar el archivo wp-config.php ubicado en la raíz del sitio, agregando la siguiente linea.

define( ‘WP_ALLOW_MULTISITE’, true );

antes de…

/* That’s all, stop editing! Happy publishing. */

Al hacer esto se activarán las opciones para configurar la subred de WordPress. (Ajustes > Configuracion de red).

En esta parte debes configurar la creación de tu red de sitios. Elige el modo Subdominios, un título y el correo de administrador de la red.

Después de darle a «Instalar», WordPress te indicará que debes copiar algunas líneas en los archivos wp-config y .htaccess ubicados en la raíz del Sitio#1

Luego, tendrás disponibles las opciones para crear nuevos sitios..

4. Crear otro sitio en WordPress Multisite.

Al crear un nuevo sitio (Sitio#2), debes indicar una URL para el subdominio del mismo, título, idioma y correo del administrador. Luego de crearlo, utiliza la opción «Editar» para cambiar esa URL y colocar el dominio que apunta a este nuevo Sitio#2.

También puedes asignar usuarios existentes, crear nuevos o eliminarlos.. Inicialmente deja el mismo usuario administrador y luego lo cambias al finalizar la migración si prefieres.

Después de creado el Sitio#2, debes acceder a su escritorio.. En esta parte WordPress me dio problemas al tratar de iniciar sesión debido a algún conflicto con las cookies del Sitio#1 principal y el nuevo Sitio#2. Para solucionar esto se deben agregar otras líneas al archivo wp-config.php, justo debajo de las que ya se agregaron para activar el Multisite:

define(‘ADMIN_COOKIE_PATH’, ‘/’);
define(‘COOKIE_DOMAIN’, »);
define(‘COOKIEPATH’, »);
define(‘SITECOOKIEPATH’, »);

5. Migrar y activar los plugins y el tema anteriores.

Una vez en el escritorio del nuevo Sitio#2, debes agregar los plugins que este tenía en la vieja instalación. Esto puedes hacerlo de la manera tradicional o moviendo los archivos de plugins que respaldaste anteriormente a la nueva carpeta wp-content/plugins.

Importante: Activa los plugins en el nuevo Sitio#2 para que, en la nueva base de datos, se creen las respectivas tablas de plugins para este sitio.

También debes copiar la carpeta del tema dentro de wp-content/themes para que el tema esté disponible una vez que migres la base de datos en los próximos pasos.

Notarás que el nuevo Sitio#2 tiene un ID y que en la base de datos se han creado nuevas tablas de WordPress para este sitio identificadas con su id como prefijo.

6. Migrar los archivos «Uploads»

Así como se crearon nuevas tablas identificadas con el id del Sitio#2, se ha creado una nueva carpeta de uploads para este sitio, dentro de la ruta wp-content/uploads/sites/<id>

En esta carpeta debes colocar todos los archivos de uploads que respaldaste anteriormente, respetando las carpetas que están fuera del directorio «sites», ya que estas son las carpetas del sitio principal.

7. Migrar la base de datos del nuevo sitio

Esta es la parte más delicada del proceso de migración. Si te equivocas en algo, tendrás que deshacer parte del trabajo y comenzar de nuevo en alguno de los puntos anteriores o inclusive te puede tocar crear toda la instalación desde cero.. (Sí.. En el primer intento me tocó eliminar el segundo sitio y crearlo de nuevo ¬¬ )

Anteriormente creaste una base de datos temporal manualmente con el respaldo de la base de datos del segundo sitio. Es lo que toca migrar manualmente ahora.. Esta base de datos contiene todas las tablas con la información del Sitio#2 pero seguramente tienen prefijos distinto. Estos prefijos debes cambiarlos para colocarlos exactamente iguales a los de las nuevas tablas del Sitio#2 que se crearon en el paso número 5. Te deben quedar entonces las tablas vacías en la base de datos de la nueva instalación y las tablas anteriores con toda la información en la base de datos de respaldo, con los mismos prefijos..

Para cambiar los prefijos de la tabla respaldo, debes seleccionar todas las tablas y utilizar la opción de PhpMyAdmin «Reemplazar prefijos de las tablas»

Luego de que cambias los prefijos, debes reemplazar las tablas nuevas del sitio con las tablas viejas del respaldo.

Puedes migrar el contenido de las tablas muchas formas. PhpMyAdmin tiene varias opciones para mover información de una tabla a otra, incluso mediante su editor de consultas, si prefieres trabajar con el lenguaje SQL. Yo opté por eliminar las tablas nuevas y copiar las tablas de respaldo en la base de datos nueva. Para esto, PhpMyAdmin tiene la opción «Copiar tablas». Es decir, eliminas la tabla nueva y las reemplazas por las de respaldo

Esto debes hacerlo ordenadamente ya que pueden haber tablas de plugins que no deben agregarse al segundo sitio. Por ejemplo: Los plugins Wordfence y W3 total cache avisan que su instalación es solo para la red y no para cada uno de los sitios, por eso preferí excluirlas de la migración.

8. Edita las rutas de los archivos en la base de datos.

Si has migrado todas las tablas correctamente, seguramente ya tu sitio se verá con el tema activo, los menús, widgets y el contenido de los posts, pero aun no se verán los archivos de medios como las imágenes, ya que estas ahora no está en uploads, sino en uploads/sites/<id>.

Por esta razón debes editar y reemplazar las rutas contenidas en los campos de las tablas de la nueva base de datos ya que esta contiene las rutas de archivos del respaldo anterior. Las tablas y campos a editar son:

¡Cuidado!.. Si modificas las tablas del sitio principal, dañarás toda la instalación

pref_id_post > post_content,

UPDATE <pref>_<id>_posts
SET post_content = REPLACE (post_content, ‘wp-content/uploads’, ‘wp-content/uploads/sites/<id>’);

pref_id_post>guid

UPDATE <pref>_<id>_posts
SET guid = REPLACE (guid, ‘wp-content/uploads’, ‘wp-content/uploads/sites/<id>’);

También debes hacer una búsqueda en las tablas options y postmeta para descartar que algún campo tenga la anterior ruta de uploads.

SELECT option_value from <pref>_<id>_options where option_value like «%wp-content/uploads%»

SELECT meta_value from <pref>_<id>_postmeta where meta_value like «%wp-content/uploads%»

9. Actualizar Elementor y otros plugins de contenidos

Luego de actualizar las rutas en la base de datos, tal vez sigan sin aparecer algunas imágenes agregadas con Elementor, como por ejemplo las imágenes de sliders o de fondos. En este caso basta con utilizar la opción «Editar con Elementor» de la página o entrada y seleccionar nuevamente las imágenes faltantes.

10. Respaldar toda la red

Finalmente, tras haber comprobado que los sitios funcionan correctamente, lo mas importante es realizar el respaldo de todo lo que se tuvo que hacer.

El plugin Updraftplus permite hacer respaldo de toda la red para WordPress Mulsite. Sin embargo, puedes crear un zip de la carpeta wp-content y exportar toda la base de datos manualmente. También puedes hacer respaldos en archivos separados y exportar las tablas para cada sitio (PhpMyAdmin también permite exportar tablas especificas).

En algún momento me pondré a averiguar acerca de plugins más apropiados para migraciones y respaldos de WordPress Multisitio.. Si no encuentro uno bueno, tal vez programe uno que haga todo esto que he descrito!

Escribe tus comentarios!