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.
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:
-
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.sqlY 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 -
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
-
Descargar el core en el directorio de drupal:
cd drupalsite
wget https://ftp.drupal.org/files/projects/drupal-6.34.tar.gz
-
Descomprimir el fichero descargado (se creará el directorio drupal-6.34 con todos los ficheros):
tar -xzvf drupal-6.34.tar.gz -
Ahora viene la actualización de verdad. Entrar en el site de Drupal con el usuario administrador y:
-
Poner el site en modo mantenimiento
(Administration > Configuration > Development > Maintenance mode) -
Activar el tema Garland y marcarlo como el tema Predefinido
(Administration > Build > Themes)
-
Poner el site en modo mantenimiento
-
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 -
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 - 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)
- Comprobar si hay algún cambio que hay que aplicar a los ficheros que no sobreescribimos, como .htaccess o robots.txt
- Entrar en el fichero settings.php del directorio /sites/default y cambiar la linea '$update_free_access = FALSE;' por '$update_free_access = TRUE;'
- Ejecutar en el explorador de internet https://drupalsite/update.php y seguir las instrucciones del asistente hasta tener la base de datos actualizada también a la última versión.
- Comprobar en la web que todo está correcto. Como mínimo consultar el 'Informe de estado': https://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:
- 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 ( https://drupalsite/admin/reports/updates) tenemos esta información, y los enlaces a las versiones recomendadas de cada módulo
- Poner de nuevo el site en modo mantenimiento, y activar el tema Garland como Predefinido.
- Dentro de sites/all se puede crear un directorio 'backup' para mover los módulos que vamos a actualizar:
cd sites/all
mkdir backup - 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 - Descargar y descomprimir los ficheros de las nuevas versiones de los módulos:
wget https://ftp.drupal.org/files/projects/backup_migrate-6.x-2.8.tar.gz
wget https://ftp.drupal.org/files/projects/eu-cookie-compliance-6.x-1.10.tar…tar -xzvf backup_migrate-6.x-2.8.tar.gz
tar -xzvf eu-cookie-compliance-6.x-1.10.tar.gz - Ejecutar https://drupalsite/update.php y seguir las instrucciones del asistente hasta tener la base de datos actualizada
- Volver a dejar '$update_free_access = FALSE;' en el fichero settings.php
- 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: https://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.
Excelente, todo es más facil
Subido por Nixsur (no verificado) el 2 Agosto, 2015 - 23:55
Excelente, todo es más facil con la shell de linux. Ah pero para actualizar modulos de Drupal tambien se puede ahora desde Modulos > Actualizar