Drush, la navaja Suiza de Drupal

Más de una vez hemos comentado como hemos seleccionado y porque, Drupal como nuestro CMS en Bikuma. Las razones de seguridad, versatilidad, flexibilidad ya son de por si unos buenos argumentos, pero hoy vamos a contaros uno de los secretos de nuestra agilidad a la hora de la implantación de un nuevo sistema, o la actualización de los que ya tenemos en producción.

Ese secreto es Drush.

Drush es un shell de línea de comandos para Drupal. Se instala a nivel de sistema y está disponible para su ejecución en cualquier directorio que contenga un repositorio de Drupal, que nos realizar mantenimientos del sistema con unos pocos comandos, ahorrándonos multitud de clicks y navegación entre páginas del administrador de Drupal.

Ahora que ya conocéis el secreto, vamos a ver en que nos ayuda en el día a día y algunos de los comandos más comunes y útiles realizando un pequeño tutorial de uso.

Lo primero será navegar hasta una carpeta en la que tengamos instalado un sistema Drupal:

cd /var/www/[carpeta drupal]

Lo primero que podemos realizar nada más entrar es preguntarle al sistema el estado actual de la instalación, con el comando status:

drush status

Esto nos dará un reporte del estado con este formato:

Drupal version : 7.38

Site URI: http://default

Database driver: mysql

Database hostname: localhost

Database username: [usuario de la bbdd]

Database name: [nombre de la bbdd]

Database: Connected

Drupal bootstrap: Successful

Drupal user: Anónimo

Default theme: [tema por defecto de la zona pública]

Administration theme: [tema por defecto del gestor]

PHP configuration: /etc/php5/cli/php.ini

Drush version: 5.4

Drush configuration:

Drupal root: [ruta fidica a la carpeta contenedora]

Site path: sites/default

File directory path: sites/default/files

temp: /tmp

Los que estéis acostumbrados a trabajar con Drupal, sabréis que una de las acciones que más repetimos, es la de borrar las caches. Con Drush esta tarea se convierte en un juego de niños con el comando cc:

drush cc

Tras ejecutar el comando Drush solicitará conocer que caches queremos limpiar. Lo más común es limpiar todas las caches, por lo que marcaremos 1 como opción. Un método abreviado para realizar esta acción es escribir el comando:

drush cc all

MÓDULOS

Ahora que ya conocemos el estado de nuestra instalación y hemos borrado las caches, vamos a instalar algunos módulos.

Este proceso consta de 2 pasos. El primero de ellos será descargarnos el módulo y el segundo activarlo. Si eres usuario habitual de Drupal no notarás ninguna diferencia con lo que haces hasta ahora... pero espera a ver las ventajas de realizarlo a través de la terminal.

Vamos a realizar el ejemplo con un módulo muy conocido y que tiene ciertas particularidades con las que demostraremos las ventajas de la instalación con Drush. El módulo Views.

El primer paso será descargar el módulo con el comando pm-download o su versión reducida dl:

drush dl views

Esto descargará el módulo a la carpeta sites/all/modules de tu instalación de Drupal.

Ahora para activarlo usaremos el comando en

drush en views

Al ejecutar este comando, Drush nos informará de que ese módulo tiene dependencias de otros. En este caso del archiconocido Ctools. Drush nos preguntará si queremos descargarlo y activarlo para que nuestro módulo funcione. Evidentemente contestaremos que si.

Espero que muchos de vosotros ya estéis dando saltos de alegría al comprobar la cantidad de clicks y descargas que nos acabamos de ahorrar.

De la misma manera, si necesitamos desactivar un módulo usaremos el comando dis:

drush dis views

Y si lo que queremos es desinstalar el módulo vasta con ejecutar el comando pm-unistall

drush pm-unistall views

Con estas últimas acciones Drush también se encarga de eliminar las tablas que ya no son necesarias en la base de datos relativas al módulo.

No terminan aquí las ventajas de instalar módulos desde Drush. Hasta ahora hemos visto como instalar un único módulo. Pero Drush nos permite instalar múltiples módulos con un solo comando:

drush dl views ctools token pathauto
drush en views ctools token pathauto

En algunas instalaciones de Drush hemos podido comprobar que simplemente llamando a activar los módulos, el mismo se encarga de descargar los que no tenga ya descargados.

El mismo comando que estamos utilizando para la instalación de los módulos podemos ejecutarlo para la instalación de los temas.

Para conocer el listado de módulos y temas instalados, basta con ejecutar el comando pml y nos dará el listado de los módulos, con su estado y la versión instalada.

drush pml

Por si os estáis preguntando de donde sacamos el nombre de los módulos y temas que queremos instalar, la respuesta es desde la página de módulos y temas de Drupal: https://www.drupal.org/project/project_module

Al buscar un módulo y acceder a su página, el nombre que aparece en la URL será el nombre que espera recibir Drush.

USUARIOS

La gestión de los usuarios también se simplifica con Drush.

Para crear un nuevo usuario basta con ejecutar el siguiente comando:

drush user-create nombre --mail="email@example.com" –password="contraseña"

El sistema entonces nos mostrará la información del nuevo usuario creado.

¿Qué pasa si lo que queremos es borra un usuario? Usaremos el siguiente comando:

drush user-cancel username

Si lo que queremos es cambiar la contraseña a un usuario, será tan sencillo como esto:

drush user-password nombre –password="nueva-contraseña"

ACTUALIZACIONES

Una de las funcionalidades más interesantes de Drush es la de poder actualizar el Core del sistema o cualquiera de los módulos o temas de manera sencilla y rápida.

Para la actualización de los módulos, Drupal requiere de dos pasos. Por un lado la propia actualización del módulo y por otro la actualización de las tablas de la base de datos con el script update.php.

En Drush se pude hacer en dos pasos, pero también lo podemos hacer en uno solo.

Podríamos actualizar todos los módulos de una vez, pero es más recomendable realizarlo uno por uno o por grupos de módulos para poder llevar un mejor control de los errores que pudieran surgir.

Para actualizar el módulo Views por ejemplo ejecutaríamos el siguiente comando:

drush up views

Esto actualizaría tanto el código del módulo como las tablas de la base de datos.

Si lo quisiéramos realizar en dos pasos lo haríamos de la siguiente manera. Primero actualizaríamos el código del módulo:

drush upc views

Y seguidamente las tablas de la base de datos:

drush updatedb views

Se aplica la misma lógica para actualizar el Core de Drupal únicamente. Con el siguiente comando se actualizaría a la última versión estable disponible, dentro de la misma rama:

drush up drupal

El uso de Drush en conjunción con un sistema de versiones como Git o Subversion nos permite desarrollar y mantener de manera mucho más ágil cualquier plataforma Drupal.

Los que necesitéis más información, podéis visitar su página oficial http://drush.ws.