Actualizando de Drupal 6 a Drupal 7

Drupal 7 está a la vuelta de la esquina, y hay que empezar a pensar en actualizar nuestros sitios de versiones anteriores a la última y flamante versión.

De momento esto es un método preliminar y yo no recomendaría actualizar todavía a no ser que sepáis muy bien lo que estáis haciendo, lo que publico a continuación son las notas y el procedimiento que he seguido para realizar algunas actualizaciones en entorno de pruebas.

Actualizaré con las novedades y con versiones más estables.

Nota importante: Si nuestro sitio está en drupal 4.7 o drupal 5, no hay un método directo para actualizar a drupal 7, primero deberemos actualizarlo a drupal 6. Aquí podéis ver cómo actualizar de drupal 5 a drupal 6

Preparando la migración

Lo primero que debemos hacer es revisar la documentación de actualización que existe en drupal.org, sobre el proceso de actualización y también el fichero de UPGRADE.txt

Es muy recomendable realizar varias pruebas locales de la actualización ya que en este momento está en una fase poco estable.

Tenemos que comprobar que los módulos que estamos utilizando en nuestro sitio tienen ya una versión para Drupal 7, aunque probablemente todavía no haya el 100% de ellos ya hay mucho trabajo avanzado a estas alturas. Además, hemos de tener en cuenta de que muchos módulos contribuidos se han incluido en el core de Drupal 7, por ejemplo imagecache, CCK (parcialmente con el Fields API), Poormans cron, Vertical tabs y así hasta más de 50.

Aquí tenéis un listado del estado de los módulos contribuidos más utilizados (a fecha de Octubre) en cuanto a Drupal 7.

Copia de seguridad

Es vital tener una copia de seguridad para este tipo de operaciones tan delicadas como pasar de una versión completa a otra (de la 5 a la 6, de la 6 a la 7).

La copia de seguridad de la base de datos la podéis realizar con el gestor de base de datos que utilicéis normalmente, como pueda ser phpmyadmin, o directamente con las herramientas propias de mysql, como por ejemplo 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.

De ficheros tenemos que asegurarnos de tener copia de por lo menos la carpeta sites y los ficheros .htaccess y robots.txt si los hemos modificado.

También podemos utilizar el módulo Backup & Migrate, tanto para la base de datos como para ficheros.

Antes de empezar a actualizar

Antes de comenzar el proceso, tendremos que actualizar tanto el core de drupal como los contrubidos a su última versión de Drupal 6. También es recomendable haber ejecutado el cron y asegurarnos de que tenemos el password para conectarnos con el usuario que tiene id 1, que es el dueño de la instalación.

Otro cambio necesario es poner el theme tanto de la página como el de administración al Garland.

Y por supuesto, por seguridad, deberemos desactivar todos los módulos contribuidos o propios y tener anotados cuales vamos a activar una vez migrado.

Como medida de seguridad, para que los usuarios no vean errores ni páginas extrañas, seguramente es conveniente poner el sitio en modo mantenimiento u offline.

Es también recomendable dar permisos de escritura al fichero settings.php y cambiar la variable $update_free_access a FALSE dentro del mismo para evitar problemas de permisos en la actualización.

Actualizando

El primer paso para actualizar será borrar todos los ficheros del core de Drupal 6 de nuestro site, esto es, conservar la carpeta sites.

Nos descargamos la última versión de Drupal 7, aquí podéis encontrar todas las releases del core de Drupal y la descomprimimos en nuestra carpeta del sitio, es decir para reemplazar los ficheros de Drupal 6 por los de Drupal 7 y mantener la carpeta sites en su sitio.

A continuación, debemos acceder a la url update.php de nuestro sitio y seguir el proceso de instalación que dependiendo de la cantidad de contenido, será más corto o más largo.

Si todo ha ido bien, tendremos ya nuestro sitio en Drupal 7, es recomendable a continuación limpiar la caché y acceder a la página de themes y de modules para refrescar las tablas de sistema. En la página de módulos le podéis pegar un repaso a los nuevos módulos del núcleo para activar aquellos que os interese tener habilitados.

Nuestro trabajo a continuación será descargar y substituir los módulos de Drupal 6 por los nuevos de Drupal 7 y habilitar estos, los módulos que ya no vamos a utilizar podemos desinstalarlos y borrarlos.

Una vez reemplazados los módulos, accedemos de nuevo a update.php y actualizamos las versiones de los módulos contribuidos.

Adaptación de plantillas y módulos propios

Este será sin duda el paso más complejo y trabajoso que vamos a tener, hasta el momento hay pocas plantillas adaptadas a Drupal 7 todavía y si estamos usando una contribuida, quizás todavía no esté actualizada.

Además, habremos de adaptar aquellos módulos que estemos utilizando y que ya no sean necesarios en Drupal 7, un ejemplo es Taxonomy Image, que proporciona imágenes a la taxonomía y eso ahora se puede hacer con Fields API directamente en el core así que tendremos que migrar las imágenes asociadas a vocabularios de forma que se incluyan en los campos de la entidad de taxonomía.

Si la plantilla es propia, o tenemos módulos propios, deberemos realizar el trabajo extra de cambiarlos para que utilizen la nueva API y las nuevas funciones de Drupal 7, existe una guía para actualizar los módulos con todos los cambios de programación y también para las plantillas.

Nos podemos ayudar de un par de módulos para realizar estas adaptaciones, son Coder y Grammar parser, merece la pena echarles un vistazo.

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 además de aquellas funcionalidades que antes estaban en un módulo independiente y ahora están en el core, como por ejemplo las imágenes de un nodo con imagefield.

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.

Conclusión

No es el momento ideal todavía para plantearnos la migración de un sitio de Drupal 6 a Drupal 7, pero sí tenemos que empezar a tenerlo previsto y a mentalizarnos de que el cambio será necesario más temprano que tarde, si os estáis preguntando cuándo deberíais actualizar vuestras páginas, merece la pena que le echéis un vistazo a este artículo de Mearra.

Actualización: Novedades de Drupal 7.

¿Cuándo planteáis migrar vuestros drupales a la versión 7? ¿Lo habéis intentado ya y os habéis encontrado algo que se me haya pasado?

categorías: 

Comentarios

Aupa Pedro, buen articulo me ha venido muy bien para la migración de mi blog de wordpress a Drupal 6 y de este a Drupal 7.

Por cierto una curiosidad antes de "acceder a la url update.php" es necesario dar permisos de escritura al fichero settings.php

Un saludo!!!

<p>Gracias por comentarlo!</p><p>Creo que solo lo tienes que hacer si mantienes <em style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 15px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; background-position: initial initial; background-repeat: initial initial; ">$update_free_access&nbsp;</em>a TRUE, pero ahora no estoy seguro.</p>
<meta charset="utf-8">

keopx, es extremadamente importante lo que acabas de decir, la primera ves que hise la prueba de actulizacion me funciono bien, y ayer n tenia problemas con el update.php, creo que eso seme había olvidado, XD

La actualizacion salio bien solo tengo problemas para activar los modulos. Por ejemplo Ctools me dice que aun esta instalado y no me deja actualizar. Ya hice la desinstalacion del modulo pero aun asi me da ese error

Gracias, me base en tu post. Todo funciono bien.

he seguido los pasoso descritos y cuando hago el update.php me da error PDOException: SQLSTATE[42S02]: no sé cual es el problema

Perdon el error completo es el siguiente:
PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'eformac1_drpl2.blocked_ips' doesn't exist: SELECT 1 FROM {blocked_ips} WHERE ip = :ip; Array ( [:ip] => 195.76.57.3 ) in drupal_is_denied() (line 1909 of /home/eformac1/public_html/lleure/includes/bootstrap.inc).

Añadir nuevo comentario

 
 
 

Creative Commons License
Excepto donde se indique lo contrario, el contenido de este sitio está sujeto a una licencia de Creative Commons.