Memoria de una mudanza
Mi nombre es Nicolás Fantino, ala_747 es mi alter ego en el mundo ya nada virtual de los ceros y unos y 100px es el espacio binario que perpetro con más cariño. Se supone que sé hacer algunas cosas más o menos bien. Tengo una relación bastante alegre con WordPress desde que era b2 (aunque no tuve un blog, o algo parecido, hasta mayo de este año). Cuando Mariano me pidió que, finalmente, lo ayudara con la mudanza de Denken Über, hasta entonces gestionado con Movable Type, a WordPress no lo podÃa creer. Tanto tiempo machacandolo para que se decidiera y cuando ya habÃa desistido, viene y me sorprende asÃ… mortal :)
No es mi primera mudanza de MT a WP. Quizás alguien haya leÃdo en su momento la memoria de la mudanza de Minid. De aquel momento a ahora ha pasado mucha agua bajo el puente. WordPress ha crecido mucho y lo sigue haciendo, sus desarrolladores y la comunidad que lo utiliza no paran de agregar funciones nuevas y de mejorar las existentes, y ésto nos hace la vida más facil para este tipo de cuestiones. Al igual que en la mudanza de Diego, me comprometà a escribir una explicación lo más detallada posible del proceso que seguimos, esperando que pueda ayudar a alguien que se encuentre pensando en hacer lo que hicimos aquÃ.
Como muchos sabrán, hay varias formas de mudar un blog de un sistema de publicación a otro. Con la debacle de MT hubo muchos sitios que decidieron pasarse a otros gestores, entre ellos WP. Muchos de esos sistemas no son tan flexibles como WP para ciertas cosas y por lo tanto obligaron a los autores a hacer un “borrón y cuenta nueva” con sus sitios (sea recomenzando su blog desde cero; o importando los posts, categorÃas y comentarios pero perdiendo las URI antiguas). Cuando hablamos de sitios muy grandes y frecuentados, como Denken Über o Minid, creo que no pueden permitirse “el lujo” de perder las URI antiguas ya que no solo están indexadas en todos los buscadores (cosa que se puede lograr esperando a que cada buscador indexe el sitio nuevamente), sino que además muchos posts están enlazados desde otros muchos sitios y los autores de esos sitios pueden no saber que tienen enlaces rotos en sus escritos. Además, existe una regla básica a la hora de hacer “buena web” la cual dice que las URI no se cambian, deben ser permanentes para que la gente pueda agendarlas y consultarlas independientemente del tiempo que pase (ya que se dá por supuesto que tuvo sus motivos para agendarlas).
Ahora bien, mudar un blog de este calibre cuidando los detalles e intentando que el resultado “se vea” lo más parecido posible a lo que habÃa antes requiere un pequeño estudio y una planificación previa. Es una ecuación muy simple: cuanto más estudio y planificación, menos problemas o imprevistos sobre la marcha. Siempre se debe tratar de ir de lo general a lo particular para que los posibles imprevistos nos aparezcan en la cabeza (o el papel) antes de que pasen realmente.
Lo primero que decidimos es que queremos cambiar de MT a WP, por lo tanto debemos conocer lo más detalladamente posible ambos sistemas, sus posibilidades, sus limitaciones, sus trucos. El siguiente paso es analizar en detalle lo que se tiene online. Anotar cosas como el formato de las URI (de los posts, de los archivos, etc.), la codificación de caracteres, el tipo o los tipos de archivos que se ofrecen, las diferencias entre páginas (la página principal no es igual que la de un post particular, o que la home de una categorÃa, o que los resultados de una búsqueda).
Con todo bajado al papel recién podemos ponernos a pensar en el sistema nuevo. Debemos asegurarnos qué cosas podremos replicar (y cómo las replicaremos) y cuáles no.
A partir de aquà será conveniente hacer una instalación del sistema nuevo para hacer pruebas paralelamente al sitio de producción (personalmente, siempre intento usar el hosting del sitio de producción para asegurarme el mismo entorno que tendrá nuestro nuevo pequeño cuando pase a suplir al viejo). Para este caso decidà probar una versión “alfa” del futuro WP 1.3. ¿Una “alfa“? ¿No será peligroso? Bien, es posible, pero no lo creo. Dos meses atrás no lo hubiese hecho porque las “alfas” que habÃa estaban muy verdes y hacÃan agua por todos lados (aunque ya hubiera osados que las ponÃan en producción -A Proletarium Blog, por ejemplo- y las sacaban adelante como si nada pasara, loable ;)). Pero finalmente, ¿por qué una “alfa“? Ok, el secreto estaba en el formato de los permalinks. Mariano usaba un formato del tipo “/archivos/categorÃa/post.php” y, como muchos sabrán, la versión 1.2 de WordPress no soporta categorÃas en los formatos. Este detalle hizo que la mudanza de Minid fuera bastante más complicada que la de Mariano ya que tuve que modificar bastante el sistema original y, por ende, actualizar el sistema de Diego no será tan facil como el de Mariano. Otro secreto es el nuevo sistema de “Themes” que taerá WP 1.3. Denken Über tiene distintos formatos para mostrar los datos dependiendo de dónde estemos. La página principal no es igual que una página de categorÃa, o de un post particular, o del resultado de una búsqueda. Si bien he explicado en mi sitio cómo lograr ésto bastante facilmente en WP 1.2 hay que admitir que es bastante más complicado que el sistema nuevo que permite crear templates (plantillas) separadas para cada sección del sitio y que, ademas, admite una serie de funciones que ayudan a la detección de la sección en la que nos encontramos para el uso de condicionales if-else. Para leer más sobre el funcionamiento de “Themes” (en inglés) o sobre las funciones “is_” para condicionales (en inglés).
Bien, con el nuevo sistema instalado podemos exportar la base de datos de MT y seguir “las instrucciones del fabricante” para importarla en WP. El primer paso “real” está dado. A parir de aquà todo será “cuesta abajo” (si todo va bien). Lo siguiente será definir el formato de permalinks y probar que todo funcione. Con el formato de Mariano no he tenido que mover lÃneas del .htaccess porque WP tome las URI del admin como posts o categorÃas pero puede suceder, asà que a no desesperar y a aprender lo básico de Expresiones Regulares para entender qué lógica siguen las reglas del mod_rewrite que nos da WP y a modificar lo que haga falta (sé que suena o parece dificil, pero no lo es), a veces basta con subir una lÃnea a arriba de todo para que todo funcione.
Viendo que todo funciona correctamente podremos dedicarnos a cambiar el template “default” por el nuestro. Lo que hice con el site de Mariano fue copiar el HTML de cada tipo de página y reemplazar los textos que estaban por las etiquetas que pondrÃan esos textos sacándolos de la base de datos. Otra forma de hacerlo serÃa buscar equivalentes entre las etiquetas de MT y las de WP, pero como no estoy demasiado familiarizado con las de MT, preferà el primer sistema. Mientras hacÃa ésto, y por pura “deformación profesional”, no pude evitar fijarme en la estructura del XHTML de las páginas; asà me dà cuenta que con 4 gráficos y arreglando un poquito los anchos de algunos contenedores en el CSS se podÃa lograr un bonito rediseño casi sin esfuerzo. No le pregunté nada a Mariano, lo hice (me llevó unos 15 minutos) y lo puse en el sevidor de pruebas y le pedà que entrara a ver como iba “la cosa”. Se sorprendió bastante y, por suerte, le encantó (de hecho, hasta me “mintió” que era justo lo que tenÃa en mente) y no hubo que tocar nada más.
A esta altura, ya tenÃamos un “doble” de Denken Über funcionando a pleno pero gestionado con WordPress. A continuación, los últimos detalles. La lista de los últimos posts de Mobile, una funcioncita para mostrar los últimos posts comentados y otra para presentar los Archivos Anuales y el sitio estuvo listo para largar.
Para poner el nuevo sitio online también habÃa un par de posibilidades. La primera era mover el sitio de desarrollo al de producción, aún con el MT funcionando, limpiar la base de datos del WP, volver a exportar el MT, importarlo en el nuevo sitio y “apagar” el viejo. ¿Pros? ¿Contras? Bueno, básicamente este sistema tiene un solo “pro”, permite un “downtime cero“; o sea, “Hola, soy MT, ahora me ves… ahora ya no me ves porque soy WP, ¿te diste cuenta de algo? ;)”, pero tiene una contra: todo comentario ingresado al MT mientras se hace el backup, se descarga el backup a la maquina, se vuelve a subir al server, se importa al WP y se pone el WP online, deberá ser ingresado “a mano” por el dueño del sitio luego. En este sitio consideré que todo el proceso llevarÃa unos 15 minutos (bien planeado, bien ejecutado y sin contratiempos como cortes de lÃnea o de FTP). La segunda opción era hacer todo lo anterior pero previo “bajar” el MT, no permitiendo asà ni comentarios, ni trackbacks, ni pingbacks que ingresar a mano luego. Siendo el estimado de 15 minutos, consideré mejor esta última opción y asà le ahorré un posible trabajo extra a Mariano (quien ya nos ha hablado de su “comodidad” :P).
Resumiendo el final… el “downtime real” fue de entre 15 y 20 minutos durante los cuales quien haya entrado se habrá encontrado con muchos errores 404. El tiempo total de trabajo real fue de unas 4 horas y la alegrÃa de leerlo a Mariano diciendome que “al final WP no estaba tan mal” fue mucha.
Ahora bien, no todo son rosas en estos caminos. Muchos habrán visto que durante unas 2 horas justo después del cambio el servidor devolvÃa un espantoso error 500. Ésto se debió a que yo no sabÃa que este nuevo WP viene con algo nuevo: si el .htaccess tiene permisos de escritura, al entrar en la página de gestión de los permalinks ésta actualiza automáticamente el .htaccess. Cuando terminamos, yp tuve que salir un par de horas de casa y Mariano se dió una vuelta por el admin y pasó por esa página. Ésta reescribió las reglas en el .htaccess con tan mala suerte que una lÃnea se juntó con otra anterior que habÃamos agregado a mano (para redireccionar los feeds viejos a los nuevos) y la sintaxis se fue al cuerno y eso solo significa una cosa, Apache colgado, ¿solución facil? no dejar el .htaccess con permisos de escritura.
Otra cosa digna de mencionar es algo que nos está estaba pasando con Bloglines. Los feeds ya no están realmente donde estaban antes por lo que agregamos un par de reglas para que el mod_rewrite redireccionara las URI de los feeds viejos a los nuevos (cosa totalmente normal y que ya he hecho muchas veces, inclusive en 100px). Bloglines se resiste resistÃa a aceptar que los feeds todavÃa existen existÃan, lo más raro es que es el único. Todos los programas y sistemas sindicadores que hemos probado funcionan, Bloglines no lo hacÃa. Por si alguien tiene una idea de lo que pueda estar pasando, hemos redireccionado con los siguientes comandos:
RewriteRule ^index.xml$ /index.php?feed=rss2 [QSA]
RewriteRule ^index.xml$ /index.php?feed=rss2 [QSA,L]
RewriteRule ^index.xml$ /index.php?feed=rss2 [r=301]
Redirect Permanent /index.xml http://www.uberbin.net/feed/rss2/
Nada ha funcionado con Bloglines, y todas han funcionado con todos los demás. Si alguien sabe de qué va la cosa, aquà escuchamos :) Usando la última opción y luego de más de 12 horas, Bloglines ha vuelto a leer los feeds (opción A: era un problema nuestro y se ha arreglado con la última regla; opción B: Bloglines agregó idiomas y rompió el lector de feeds de Uberbin :P).
Una última cosa que se nos escapó y que nos dió un susto ayer mismo. MT seguÃa funcionando, aunque “escondido”. Ayer, alguien llegó por casualidad a un post del MT y puso un comentario y automáticamente MT nos pisó el index.php (por eso más de uno vió durante un rato el sitio “viejo”). Simplemente se subió nuevamente el index.php del WP y todo se arregló, obviamente MT ha sido jubilado completamente para que no vuelvan a pasar más cosas como esa.
Bueno, bit más o bit menos, ésta es la historia de esta mudanza y asà se la contamos, esperando que pueda ser útil (al menos para saber lo que no hay que hacer).
Agradezco a Mariano por la confianza ciega (muy ciega e inconsciente :P) que ha depositado en mà y en mis criterios para la realización de este trabajo. Ha sido para mi una gran responsabilidad y he disfrutado realmente mucho haciéndolo, como todos los trabajos que me presentan algún desafÃo (de los que ando escaso últimamente, dicho sea de paso). Y agradezco el espacio que me brinda para contar la experiencia.
Gracias.


Si querian darme miedo a la hora de mudarme de sistema, lo lograron! brrr.. reconsiderando mi mudanza… :P