Cómo hacer una actualización o update de Drupal

 

Mantener actualizados el core y los módulos de Drupal es una tarea que no hay que descuidar para mantener nuestro CMS lo más protegido y libre de bugs posible.

Si se trata de una actualización menor, o 'Drupal Update', es decir, si la actualización es dentro de la misma versión, el proceso, aunque requiere unos cuantos pasos, es bastante sencillo y no suele traer problemas.

Aclarar sobretodo que estos pasos que voy a explicar son para moverse dentro de la misma 'major version', NO sirven para hacer un Major Upgrade que sería, por ejemplo, pasar de una versión 6 a una 7 de Drupal. Este proceso sería para pasar, por ejemplo, de una 6.28 a una 6.34. Para los ejemplos utilizaremos estos números de versión.

Update de Drupal core y módulos

Comentar también que este es el método que yo he utilizado teniendo en cuenta la configuración de mi site, y las personalizaciones que he podido realizar o no, y puede no funcionar igual de bien para otros sites, así que siempre es recomendable consultar igualmente el manual de update de la documentación oficial de Drupal y elegir el método de actualización más adecuado.

Pasos para actualizar el core de Drupal

En mi caso, los pasos principales para hacer la actualización desde linea de comandos, con una conexión SSH al servidor, han sido estos:

  1. Hacer un backup de la base de datos.
    Tener instalado el módulo Backup and Migrate puede facilitar mucho esta tarea. Con este módulo, aparte de los backups de base de datos que se pueden programar, se pueden hacer backups puntuales, y guardarlos en el servidor o descargarlos a nuestra máquina local, cosa que nunca está de más.
    Si no, con bases de datos MySQL se puede utilizar SQLDump desde linea de comandos con el comando:
    mysqldump --user [MySQL User] --password=[database password] [database name] > databasebackup.sql
    Por ejemplo:
    mysqldump --user dbuser --password=dbpassword database > databasebackup.sql
     


    Si algo fallara, para restaurar este dump de mysql con nuestro backup de la base de datos, desde linea de comandos se puede utilizar:
    # mysql -u[MySQL User] -p[database password] [database name] < databasebackup.sql 
    Por ejemplo, para restaurar el fichero dump de mysql que hemos creado antes con mysqldump:
    # mysql -udbuser -pdbpassword database < databasebackup.sql

    Y si el fichero dump estuviera comprimido se podría hacer la importación directamente de esta manera (al menos en Linux):
    # gunzip < databasebackup.sql.gz | mysql -udbuser -pdbpassword database


     

  2. Hacer backup de todos los ficheros del directorio de instalación de Drupal.

    Desde la linea de comandos del servidor comprimir con tar todos los archivos (tar+gzip)

    tar -czvf ./private/backup_drupalsite_yyyymmdd.tar.gz ./drupalsite

    No está de más copiar ese fichero a otro server o al ordenador local con SCP, FTP u otra utilidad
     

  3. Descargar el core en el directorio de drupal:

    cd drupalsite

    wget http://ftp.drupal.org/files/projects/drupal-6.34.tar.gz
     

  4. Descomprimir el fichero descargado (se creará el directorio drupal-6.34 con todos los ficheros):
    tar -xzvf drupal-6.34.tar.gz

  5. Ahora viene la actualización de verdad. Entrar en el site de Drupal con el usuario administrador y:
    1. Poner el site en modo mantenimiento
      (Administration > Configuration > Development > Maintenance mode)
    2. Activar el tema Garland y marcarlo como el tema Predefinido
      (Administration > Build > Themes)
       

  6. Crear una carpeta con la versión actual y mover a esta carpeta los directorios que se tienen que sobreescribir (yo prefiero hacer esto que eliminarlos, así si hay algún problema, o quiero comparar algún fichero siempre están disponibles)
    mkdir drupal628
    mv includes ./drupal628
    mv misc ./drupal628
    mv modules ./drupal628
    mv profiles ./drupal628
    mv scripts ./drupal628
    mv themes ./drupal628

  7. En el directorio que contiene la nueva versión, renombrar los ficheros que NO se tienen que sobreescribir para no machacar modificaciones o personalizaciones que hayamos podido hacer y no se han de perder. Normalmente son los ficheros '.htaccess', 'robots.txt' y el directorio 'sites':

    cd drupal-6.34
    mv .htaccess htaccess634
    mv robots.txt robots634.txt
    mv sites sites634

  8. Desde el mismo directorio de la nueva versión (/drupal-6.34) copiar todo al directorio raíz de la instalación de Drupal:
    cp -i -R * ./..
    (Copia recursiva, y con confirmación para sobreescribir, para que podamos echar un último vistazo a los ficheros que se sobreescriben)
     
  9. Comprobar si hay algún cambio que hay que aplicar a los ficheros que no sobreescribimos, como .htaccess o robots.txt
     
  10. Entrar en el fichero settings.php del directorio /sites/default y cambiar la linea '$update_free_access = FALSE;' por '$update_free_access = TRUE;'
     
  11. Ejecutar en el explorador de internet http://drupalsite/update.php y seguir las instrucciones del asistente hasta tener la base de datos actualizada también a la última versión.
     
  12. Comprobar en la web que todo está correcto. Como mínimo consultar el 'Informe de estado':  http://drupalsite/admin/reports/status. Si todo está bien ya se puede reactivar el tema Predefinido que teníamos antes de la actualización, y desactivar el modo de mantenimiento.
    Si hay algún problema, solucionarlo, y si no se puede, cosa que no suele pasar, restaurar los backups para volver a la versión anterior.

Pasos para actualizar los módulos de Drupal

Normalmente una actualización del core va acompañada de una actualización de los módulos también hasta la última versión estable, ya que es difícil que ya tengamos todos actualizados, y ya que tenemos hechos los backups, es un buen momento para hacerlo, así que incluyo también unos pasos más para actualizar los módulos que lo necesiten:

  1. Revisar los módulos que no están actualizados a la última versión recomendada para nuestra versión de Drupal:
    En el informe de actualizaciones disponibles ( http://drupalsite/admin/reports/updates) tenemos esta información, y los enlaces a las versiones recomendadas de cada módulo
     
  2. Poner de nuevo el site en modo mantenimiento, y activar el tema Garland como Predefinido.
     
  3. Dentro de sites/all se puede crear un directorio 'backup' para mover los módulos que vamos a actualizar:
    cd sites/all
    mkdir backup
  4. Mover los módulos que hay que subir de versión de sites/all/modules a sites/all/backup. Por ejemplo:
    mv backup_migrate ./../backup
    mv eu-cookie-compliance ./../backup
  5. Descargar y descomprimir los ficheros de las nuevas versiones de los módulos:
    wget http://ftp.drupal.org/files/projects/backup_migrate-6.x-2.8.tar.gz
    wget http://ftp.drupal.org/files/projects/eu-cookie-compliance-6.x-1.10.tar.gz

    tar -xzvf backup_migrate-6.x-2.8.tar.gz
    tar -xzvf eu-cookie-compliance-6.x-1.10.tar.gz

  6. Ejecutar http://drupalsite/update.php y seguir las instrucciones del asistente hasta tener la base de datos actualizada
     
  7. Volver a dejar '$update_free_access = FALSE;' en el fichero settings.php
     
  8. Probar de nuevo que todo esté correcto, y quitar el modo mantenimiento, reactivar el tema predefinido, y volver a probar.

Otra cosa que se puede revisar después de actualizar es si hay traducciones nuevas: http://drupalsite/admin/build/translate/update 

Si todo ha ido bien, aunque sea unos días después después de estar todo más que probado, para dejar más limpia la instalación, se pueden eliminar los directorios de backup que hemos creado en la misma instalación, en este caso drupal628 y sites/all/backup. También se pueden eliminar el fichero drupal-6.34.tar.gz, el directorio /drupal-6.34 y los .tar.gz de los módulos que hayamos descargado en sites/all/modules.