cómo migrar de drupal 6 a wordpress 2.8

En la web de la revista del taller estaba utilizando como CMS, Drupal, primero en su versión 5 y luego, tras uno de esos gambazos antológicos, la versión 6. En su día, elegí este sistema principalmente porque tenía más plantillas orientadas a la edición de revistas y magazines, en detrimento de mi admirado WordPress, en donde todos los temas que me podían servir eran de pago. Pero, desde hace un par de meses estaba notando muchos problemas para actualizar Drupal, en parte por el miedo que tenía a tocar el núcleo del programa después de haberlo fastidiado anteriormente y en parte por lo poco sencilla que me resultaba la operación. Además, la gestión de los comentarios (un cebadero de spammers, me temo) y la necesidad de tener moderadores, lanzaron el cambio de aplicación. Por supuesto, una vez tomada la decisión de cambio, sólo había un lugar adonde ir: WordPress. El problema estaba en la migración de los datos y los usuarios a la nueva plataforma.

Además, por las mismas fechas surgió el tema de mantener bajo un mismo dominio la revista y un foro y permitir cosas hasta la fecha difíciles de asumir, como un perfil de usuario único y una sincronía entre los textos de la revista y los usuarios del foro. Fue entonces cuando BBpress emergió de la nada. Para los profanos, bbpress es el sistema de foros de Automattic, la empresa tras la que está WordPress y otras muchas aplicaciones y, por supuesto, suelen integrarlas unas con otras con una facilidad pasmosa. Así que, de golpe, me encontré en medio de una vorágine de migraciones y configuraciones como hacía tiempo que no tenía.

En resumen:

  • hubo migración de Drupal6 a WordPress. Aunque encontré varios tutoriales sobre cómo llevar a cabo la migración, el documento definitivo vino de la mano de Dennis Metzcher (Migration from Drupal to WordPress Complete) y, más concretamente, de un enlace a Import A Drupal 6 Based Website To WordPress v2.7. Según cuenta, las sentencias SQL le funcionaron sin problemas, a pesar de haberse saltado todas aquellas que no necesitaba. En mi caso, seguí las mismas excepciones y, salvo los usuarios de la web, el resto de información pasó sin incidencias que reseñar.
  • Arras Theme, una plantilla de revista. Casi por casualidad me encontré con este tema, que facilita enormemente la creación y el mantenimiento de un magazine con WordPress. La primera impresión, como casi siempre, fue bastante traumática, probablemente por un montón de ideas heredadas de Drupal. Pero, una vez dejé de lado las reticencias, Arras Theme se mostró como una fantástica plantilla que permite gestionar la portada y el resto de páginas de forma separada, que incluye miniaturas con cada entrada y que permite destacar los puntos fuertes de cada número de la revista sin más que un puñado de clics.
  • Instalación de BBPress y configuración. Con la instalación del programa en tres cómodos pasos, la tarea más complicada fue hacer que los foros se pareciesen lo más posible a los que ya estaban en funcionamiento y evitar un salto demasiado grande. Por eso, además de bbpress, la aplicación está cuajada de plugins, traducida del inglés (en su mayor parte) y dotada de ciertas funciones que permiten una administración más sencilla. Por supuesto, la integración entre los usuarios de wordpress y los de bbpress resulta impresionante e, incluso, permite la asignación de los roles del foro, según sea el rol del usuario en wordpress.

El resultado de tanto esfuerzo se puede ver en la web de la revista del taller.

mi trocito de Radio5

Hubo un tiempo en que me pasaba el día en el coche, devorando kilómetros y cruzando España de lado a lado. Creo que fue entonces cuando caí en las redes de la radio, un medio que antes escuchaba en la universidad y en los trayectos de autobús pero que al no había terminado de sucumbir. La radio, la buena radio engancha de una forma terrible, probablemente por la inmediatez y la cercanía que dan. Recuerdo que trataba de viajar por las mañanas, cuando la oferta de programas era mayor. Empezaba el día con Carlos Herrera (¡cómo has cambiado Carlos!), pasaba las tardes asomado a La ventana y, en medio, devoraba Radio5.

Por si alguien no lo sabe, en Radio5 todo noticias hay dos bloques: las noticias, puntuales cada media hora y los cortes temáticos de poco más de tres minutos. Esos cortes, están hechos por gente que habla de cosas que conocen, de especialistas y expertos en las materias que tocan y son pequeñas perlas donde caben todo, desde la cocina hasta la psicología, pasando por la historia de latinoamérica. Así, además de las noticias, uno puede mantenerse enganchado a mil pequeñas cosas, todas interesantes. Por eso siempre tuve el anhelo de terminar allí, en la radio de las pequeñas cosas, contando cualquiera de mis tonterías.

Creo que fue el recuerdo de esa manera de hacer radio, por la que no pude más que aceptar la invitación de Dabo para formar parte de su pequeño experimento sonoro: un podcast. Me propuso realizar una sección quincenal, a medias con Forat sobre el software libre, de un cuarto de hora de duración.

Pues bien, mi primera actuación ha salido al aire esta misma noche: DaboBlog Podcast, nº3. “Kernel Panic” (con Diego) y “Manzanas traigo” (con Oscar Reixa). En esta ocasión, Dabo y yo estuvimos hablando sobre las distribuciones linux, sus orígenes y las funciones que desempeñan. Ante todo, ha sido una charla entre amigos, un buen rato hablando de intereses comunes. Se puede bajar en ivoox.com o se puede escuchar directamente aquí.

Dentro de un mes, la segunda (y última) parte acerca de las distribuciones, sobre los diferentes sistemas de gestión de paquetes.

briconsejo: cómo migrar de wordpress 2.0.1 a 2.8.4 en nueve cómodos pasos

Nota: mamá, en serio, ésta entrada puedes saltártela, va del programa con que funciona este blog y, de verdad, es un tanto aburrida. Te dejo un enlace, que seguro que te gustará más. Besos.

Aviso: todo lo que se cuenta en esta chuleta se ha probado, primero, en un entorno de pruebas. Si eres tan estúpido (no, no tiene otro nombre), como para hacer pruebas sobre un servidor en producción, no vengas llorando por aquí. Para la realización de esta migración, es necesario contar con unos conocimientos previos adquiridos, a saber: sentido común, algo de SGBD, un poco de sed, vim y bash y una pizca de coherencia. De nuevo, si no cumples con esto, no vengas a lamentarte.

Esta entrada no deja de ser una lista ordenada de todos los pasos que me llevaron a conseguir el objetivo final. Me funcionó a mí, cierto, y lo escribo por si vuelvo a necesitarlo. Declino cualquier problema o responsabilidad que la aplicación de dichos procesos pueda ocasionar en blogs ajenos. Por si a alguien le interesa, me llevé por delante una docena de veces el blog, antes de conseguir dar con la tecla.

Advertidos estáis.

Hace unas pocas semanas me enfrenté a un desafío que llevaba tiempo esquivando por falta de ideas para abordarlo. Tenía que actualizar el CMS de La curuxa, un WordPress añejo y, según la documentación oficial, iba a tener que migrar de 2.0.1 a 2.2, luego a 2.4, más tarde a 2.6 y, finalmente, a 2.8. Todo un planazo.

Dicen que la ignorancia es atrevida hasta límites insospechados y, quizá por eso, me propuse explorar nuevas vías. En vez de realizar las recursivas actualizaciones y [ironia=on]mis vastos conocimientos en bases de datos[ironia=off], quise ver qué pasaba cuando utilizas la última versión de WP con una versión de su base de datos antediluviana. El resultado, más o menos esperado, es que WP exigía que se ejecutase el script de actualización y que, a continuación, el blog estaba completo y actualizado, pero con caracteres raros.

«Ésto va a ser de la base de datos», me dije. Y fisgando en su estructura me encontré con que la codificación de la misma era latin1, mientras que WP sólo hablaba utf8. Así que, los caracteres raros eran problemas de traducción. Para solucionarlo se me pasó por la cabeza usar una compleja pero eficaz sentencia en SQL pero, dado que mis conocimientos en la materia se quedaron en aquel tren, me pasé a la guerra de guerrillas y los script sucios, chapuzas. Ahí, en ese escenario, doy lo mejor de mí.

Al final, tras docena y media de pruebas y errores, de borrón y cuenta nueva, conseguí dejar la base de datos con la codificación correcta y actualizada a la última versión.

Un poco mejor explicado, paso por paso y ordenado:

  1. hacer un backup de la base de datos de producción, con la codificación de caracteres utf8, ya que es la codificación de WP.
  2. editar el fichero de backup, sustituir el nombre del dominio, en mi caso http://lacuruxa.org y http://www.lacuruxa.org, por una dirección local. Yo utilicé http://curu.n1mh.org y lo sustituí con dos comandos de sed:

    sed -i 's/http:\/\/lacuruxa.org/http:\/\/curu.n1mh.org/g' fichero.sql
    sed -i 's/http:\/\/www.lacuruxa.org/http:\/\/curu.n1mh.org/g' fichero.sql

  3. instalar el nuevo WP en la dirección local creada a tal efecto. Después, sobreescribir la base de datos con la obtenida de producción. Abrir la zona de administración en el navegador (http://curu.n1mh.org/wp-admin/) y, ante la petición de actualización, actualizar. Los caracteres extraños inundan el blog. Ante todo, tranquilidad.
  4. editar con vim el fichero de la base de datos, buscando el caracter à y sustituir todos los posibles caracteres raros. En mi caso y usando vim, busqué y sustituí los siguientes:

    :%s/á/á/g
    :%s/é/é/g
    :%s/í/í/g
    :%s/ó/ó/g
    :%s/ú/ú/g
    :%s/ñ/ñ/g
    :%s/Ã<91>/Ñ/g
    :%s/ü/û/g
    :%s/¿/¿/g
    :%s/¡/¡/g
    :%s/«/«/g
    :%s/»/»/g

  5. el resto de caracteres raros, que los hay, comienzan por el caracter à y es conveniente buscarlos y eliminarlos a mano. Para todos aquellos que no se puedan procesar con vim, mi recomendación es buscarlos en el blog, copiarlos y pegarlos en vim, que los sustituirá con gusto. Los más problemáticos fueron â€<9d>, ‎<8f> y â€<80>.
  6. sustituir la base de datos de prueba con la nueva base de datos e ir viendo qué caracteres fallan. Es, de largo, la parte más tediosa y mecánica. La importación debe hacerse con la codificación correcta:

    mysql -u root -p mysql_user --default-character-set=utf8 < ~diego/Desktop/fichero.sql

  7. con cada importación de la base de datos, hay que acceder desde el navegador a la zona de administración de WP, http://curu.n1mh.org/wp-admin/, y proceder a actualizarla base de datos.
  8. una vez estemos seguros de que están todos los caracteres correctamente codificados, toca revertir el dominio temporal por el bueno. Hacemos una copia de seguridad de la nueva base de datos en un fichero, lo editamos y ejecutamos:

    sed -i 's/http:\/\/curu.n1mh.org/http:\/\/www.lacuruxa.org/g' fichero.sql

  9. y, por último, sólo hay que subir la nueva versión de WP a la web y actualizar la base de datos de producción.

Fácil, ¿verdad? En realidad es más aparatoso que complicado. A partir del noveno punto, comienza una tarea bastante más árdua y callada, la de escoger un tema, adecuarlo, llenarlo de plugins y configurarlo. Pero eso, querido lector, ya es otro cuento.

El resultado, bien visible, se puede ver en la página web de la Agrupación Deportiva La Curuxa.

próximos proyectos

En quince días me meto en otro nuevo proyecto, ésta vez de la mano de Dabo, que ha tenido a bien invitarme a hablar en la sección Kernel Panic de su podcast. Participaré en un apartado dedicado al software libre, en donde comentaremos historias particulares sobre este universo. Aunque el podcast es quincenal, yo sólo apareceré por allí una vez al mes ya que comparto la sección con Forat.

Al final, me temo, seremos un puñado de nerds hablando de todo aquello que les gusta y les apasiona. Con este planteamiento, lo difícil era decir que no.