Actualizar de drupal 5 a drupal 6
Published on Dom, 07/12/2008 - 00:07Este fin de semana he estado actualizando un par de sitios, entre ellos este blog de drupal 5 a drupal 6 y os traslado el paso a paso que he seguido, basándome en las páginas de upgrade que hay publicadas en drupal.org y el UPGRADE.txt que se distribuye con cada versión de drupal.
Nota importante: Si nuestro sitio está en drupal 4.7, no hay un método directo para actualizar a drupal 6, primero deberemos actualizarlo a drupal 5.
Preparativos iniciales
Antes de empezar a realizar la migración, deberemos revisar tanto las páginas del handbook dedicadas a la actualización, como el fichero UPGRADE.txt para tener claros los pasos a realizar.
Hay bastante material y consejos, incluso algún video dedicados a este tema, es conveniente revisar el material disponible hasta estar seguros y cómodos con el proceso.
Si el sitio o sitios que vamos a actualizar son realmente delicados, es mejor realizar primero alguna prueba de migración en un servidor local.
Importante: Antes de empezar, hay que asegurarse que todos los módulos que vamos a necesitar tengan su correspondiente versión en drupal 6. En caso contrario, deberemos plantear alguna alternativa y revisar como adaptar los datos que ya tengamos.
Para esto podemos utilizar el módulo Upgrade Status que comprueba por nosotros si los módulos que estamos utilizando tienen una versión disponible portada a drupal 6. Es necesario haber instalado el Update Status y ambos se deben desinstalar antes de realizar la actualización! (gracias a Lokiyo por la recomendación del Upgrade Status)
Copia de seguridad
La copia de seguridad de datos y ficheros es obligatoria en este tipo de migraciones, sobre todo al ser un cambio de versión completa y no un upgrade de una actualización parcial.
La copia de seguridad de la base de datos se puede hacer utilizando el gestor de bbdd de nuestro hosting (normalmente phpmyadmin, con la opción Exportar) o si tentemos acceso a línea de comandos, es posible hacer la copia directamente con un mysqldump
mysqldump --user=usuario_bbdd -p nombre_bbdd > fichero_backup.sql
Donde usuario_bbdd es el nombre del usuario de la base de datos nombre_bbdd, todos estos datos, junto al password de la base de datos se pueden encontrar en el fichero settings.php.
¡Ojo! si estamos en una instalación en modo multisite con varias bases de datos, hay que acordarse de hacer copia de todas ellas.
En cuanto a los ficheros, será necesario copiar el directorio sites/ de la instalación de Drupal junto a todos aquellos necesarios o que hayamos modificado, como el .htaccess o el robots.txt.
Si hemos parcheado el core, habrá que confirmar que los cambios no hayan sido ya implementados en la nueva versión, o si tendremos que reparchear al finalizar la migración.
El módulo jquery Update actualiza la versión de jquery de nuestra instalación, y para drupal 5 era necesario sobreescribir algunos ficheros del core de Drupal, para drupal 6 esto ya no es necesario y la versión incluida en el core es más moderna, será necesario revisar las especificaciones del módulo para comprobar si lo necesitamos instalar en la nueva versión o no.
Descarga y versiones
Descargaremos la última versión del core, de los módulos contribuidos y de los themes que el sitio está utilizando.
El método más rápido de comprobar / descargar las versiones de los módulos contribuidos es ir a la página de updates (misitio.com/admin/logs/updates) y utilizar los links a los proyectos para descargar la versión correcta.
Configuración previa
Antes de actualizar debemos tomar una serie de medidas en nuestro sitio, es obligatorio que nos conectemos con el usuario administrador (aquel usuario con el uid 1), de esta forma podremos realizar el update y las tareas de mantenimiento posteriores sin sobresaltos.
Es recomendable ejecutar el cron (misitio.com/cron.php) y comprobar los logs de estado del sitio (misitio.com/admin/logs/watchdog) por si hubiera algún error que no hemos detectado hasta el momento, en caso afirmativo, habrá que evaluarlos y corregirlos.
También es aconsejable revisar el estado de los módulos contribuidos que vamos a actualizar, es posible que sea necesario actualizarlos todos a su última versión / versión recomendable antes de actualizar a la versión para drupal 6, esto puede ser obligatorio por ejemplo en casos como el de CCK, en el que no podríamos pasar de la versión 5.x-1 a la 6.x-2 sin haber actualizado antes a la 5.x-2. Por lo que, para curarnos en salud, es mejor actualizar todos los modulos contribuidos antes de seguir con el proceso.
Otra tarea obligada será desactivar y desinstalar el módulo Update Status, que a partir de drupal 6 viene incluido en el core y de estar habilitado/instalado es probable que nos cause algún contratiempo en el proceso.
Para evitar problemas con el theme, es muy recomendable cambiarlo a alguno de los incluidos en el core, como Garland o Bluemarine.
En el método oficial recomiendan deshabilitar todos los modulos contribuidos, este paso no es siempre imprescindible y podemos simplemente actualizarlos con el proceso general de update. En caso de que hacerlo directamente nos de algún problema, deberemos deshabilitar cada modulo contribuido, habilitarlo tras la migración y después lanzar el proceso de update de nuevo para actualizar los módulos.
Deberán estar deshabilitados y desinstalados todos aquellos módulos que no tengan su correspondiente versión para drupal 6 y que, por tanto, no vamos a utilizar.
Para que los usuarios no vean ningún error, deberemos poner el sitio en modo offline (misitio.com/admin/settings/site-maintenance).
Actualizando
Un buen método para actualizar el core es borrar todos los directorios excepto files y sites y después copiar la nueva versión de drupal (excepto el directorio sites). Hay que tener en cuenta que hemos hecho copia de seguridad y aquellos ficheros que tengamos modificados (.htaccess, robots.txt o los parches del core) tendremos que replicarlos al finalizar la migración.
Para actualizar los modulos, copiamos la nueva versión substituyendo la antigua. Con los themes contribuidos, realizamos la misma acción.
Una vez que tenemos todo copiado, ejecutamos el proceso de actualización (misitio.com/update.php) y seguir los pasos del interfaz. Al finalizar el proceso, aparecerá un resumen de errores y de acciones realizadas por el proceso.
Es posible que necesiteis reimportar las traducciones, ya que algunas cadenas han cambiado de la versión 5 a la 6, en la sección Translations de drupal.org encontraréis la última versión para cada idioma.
Adaptación de módulos y themes propios
Dependiendo del sitio, este puede ser el paso más trabajoso, ya que si tenemos mucho código desarrollado para nuestra página o uno o varios themes personalizados, deberemos adaptarlos a la nueva versión, para actualizar estas versiones, se pueden seguir las recomendaciones de la documentación de drupal.org, también hay varias guías para adaptar los themes.
Tareas de comprobación
Las tareas de comprobación varían muchísimo en cada sitio, pero podemos revisar las particularidades del theme o de los módulos personalizados o contribuidos.
Las pruebas básicas deberían incluir añadir, modificar y borrar un nodo, añadir / gestionar comentarios, probar que se visualiza el contenido de los mismos correctamente, si la gestión de bloques funciona bien, permisos, etc.
Una vez hechas las comprobaciones, si hemos puesto el sitio en modo mantenimiento antes de comenzar la actualización, deberemos publicarlo de nuevo.
Recomendaciones generales
A modo de conclusión, creo que hay varios parámetros básicos que debemos tener en cuenta a la hora de actualizar nuestros sitios en drupal
- Revisar toda la documentación que podamos para planificar la migración. El tiempo de planificación y pruebas debe ser muy superior al de la migración.
- La copia de seguridad es imprescindible
- Si estamos teniendo errores extraños durante el proceso, en ocasiones es mejor restaurar desde la copia de seguridad y volver a comenzar revisando los pasos.
- En caso de que la migración sea complicada, o se complique, es mejor hacer alguna prueba en entornos locales antes de hacerla en el sitio productivo.
- Hay que tener en cuenta que si tenemos modulos o themes personalizados, deberemos revisar el código para compatibilizarlo con la versión 6.
Comentrarios adicionales
En mi caso particular, me he encontrado bastantes errores a la hora de actualizar el módulo xmlsitemaps, que finalmente decidí desinstalar completamente e instalar una versión para drupal 6, ya que genera el fichero cada vez.
Tengo pendiente también acabar de arreglar asuntos de CSS que debo adaptar a la nueva nomenclatura de bloques y enlaces.
El módulo pathauto no necesita obligatoriamente el Transliteration, pero es muy recomendable que lo instaleis, para evitaros paths extraños.
Comentarios
Enhorabuena por el cambio. Mi
Mar, 09/12/2008 - 08:29 — Luis MedelEnhorabuena por el cambio. Mi lector de feeds ya se había dado cuenta ;)
Perfecto!, no se puede decir
Mar, 09/12/2008 - 09:24 — Si PuedoPerfecto!, no se puede decir otra cosa... si bien para los que no "dominen" mucho, el modulo http://drupal.org/project/backup_migrate les puede ayudar en el punto de la copia de seguridad
Gracias! El backup/migrate es
Mar, 09/12/2008 - 14:16 — pedroGracias!
El backup/migrate es otra buena opción para hacer una copia de seguridad de la base de datos sin salir del interfaz de drupal...
@Luis, perdona por el "spam" pero es algo que pasa al actualizar drupal, no he encontrado forma de resolverlo...
Bien venido al mundo de
Mar, 09/12/2008 - 14:38 — UndomainBien venido al mundo de Drupal 6.x
por cierto, mi Reader te manda un saludo XD
P.D.: Podrias quitar la parte de obligar la previsualización... es un coñazo :P
Otro que ha tenido una
Mar, 09/12/2008 - 17:28 — Jordi BufíOtro que ha tenido una sorpresa con su lector de feeds y tus 31 "nuevos" posts :)
Por un momento pensé que
Mar, 09/12/2008 - 17:37 — UndomainPor un momento pensé que pedrito se habia puesto a escribir en modo loco XD
Lo primero que me paso por la cabeza fué: "Joe! si que le ha cundido el puente a este hombre! ...y lo que se ha tenido que aburrir el pobre..." XD
Desde luego, si nos borra los
Mar, 09/12/2008 - 17:45 — Luis MedelDesde luego, si nos borra los comentarios, luego nos quejaremos.
Con la pedazo guía que se ha currado y aquí todos despotricando lo que nos ha pasado en el lector de feeds.
xD
Menudos quejicas estais
Mié, 10/12/2008 - 09:26 — pedroMenudos quejicas estais hechos ;) seguro que ni os habéis leído la "pedazo guía" como ha comentado Luis...
@Jordi, @Undomain, me guardo mi venganza para cuando vosotros actualicéis alguna versión de seguridad y se os reenvien todos los feeds ;)
PD: @Undomain está quitado, pero me falta adaptar la función de theming a drupal 6.x, aún así no debería obligarte a previsualizar, lo tengo puesto en opcional... :S
Cuando yo tenga que
Mié, 10/12/2008 - 11:05 — UndomainCuando yo tenga que actualizar (que ya lo hice una vez hace poco) tu tambien lo tendrás que hacer, ya que estamos usando la misma versión de Drupal ;)
Y cierto, no me obliga a la preview, pero el boton se ve "distinto". Antes pensé que estaba desactivado... mea culpa.
Por cierto.... yo no me quejo (adoro el boton "marcar todo como leido" XD), simplemente comento algo que me ha parecido gracioso y me "contigo" ;o)
P.D.: 1+1=¿3? XD
Qué casualidad eh? justo
Jue, 11/12/2008 - 08:56 — pedroQué casualidad eh? justo comentamos el tema y zás, drupal 6.7 y a actualizar ;)
Pingback
Jue, 11/12/2008 - 09:30 — Nueva actualiza...[...] que han sacado nuevas sub-versiones de seguridad y toca actualizar. ¡Justo cuando acababa de pasarme a Drupal 6! El método de actualización de una sub-versión a otra (por ejemplo, de drupal 6.6 a drupal 6.7) [...]
Una guía no tan formal de
Lun, 15/12/2008 - 21:23 — LokiyoUna guía no tan formal de 'upgrade' la podéis sacar de mi experiencia con mi propio blog:
http://lokiyo.egawebs.net/upgrade-este-blog-drupal-6-6 (perdón si lo consideráis spam).
En mi caso también tuve problemas con el módulo XMLSitemap aunque se terminaron resolviendo. También dejé de usar algunos módulos que no eran importantes y otros los cambié.
Decir por último que fue de inestimable ayuda antes de decidirme a hacer el upgrade, el uso del módulo http://drupal.org/project/upgrade_status
Gracias por compartir tu
Lun, 15/12/2008 - 22:48 — pedroGracias por compartir tu experiencia y trucos Lokiyo.
Muy interesante el módulo que comentas, para saber rápidamente si los módulos que estamos utilizando tienen una versión disponible antes de migrar.
Encantado de hacerlo ;) Ahora
Mar, 16/12/2008 - 18:20 — LokiyoEncantado de hacerlo ;)
Ahora tengo que actualizarlo también a la última versión de Drupal, lo cual lleva algo de trabajo por lo especiales que son algunas modificaciones que incluyen cambios en el .htaccess y en el robots.txt.
Este post ha sido de
Vie, 16/01/2009 - 01:53 — DrupaleroEste post ha sido de excelente ayuda, gracias Pedro!
Me alegro que te haya servido
Vie, 16/01/2009 - 08:25 — pedroMe alegro que te haya servido Drupalero!
en las pruebas de upgrede he
Vie, 10/07/2009 - 05:25 — cigoteteen las pruebas de upgrede he tenido problemas con el tema del lenguaje por defecto. sobreescribir con el 'language pack' funcionó pero no dejaron de salir errores en el log del upgrade -algunos queries relacionados con el lenguaje-. Queda probar el dejar como ingles el lenguaje por default y proceder a upgrade. Aun no lo he hecho.
efectivamente eliminé el
Sáb, 11/07/2009 - 05:44 — cigoteteefectivamente eliminé el español y cero problemas.
Añadir nuevo comentario