Ejecución de comandos drush en un drupal multisitio

drupal.jpg
Solucionex
21
Abr 15

 

Si eres desarrollador web y utilizas Drupal, seguro que conoces 'drush', una interfaz de línea de comandos para Drupal que nos permite realizar múltiples operaciones sobre Drupal, a través de la consola. Drush se ha convertido en una herramienta imprescindible gracias a su versatilidad, potencia y a que cada vez más módulos contribuidos desarrollan sus propios comandos drush.

En caso de tener montado un drupal multisitio, varios sitios web y BBDD corriendo el mismo código, la ejecución de drush puede complicarse un poco.

Imaginemos que tenemos montado un drupal con sitio1.com, sitio2.com y sitio3.com. Para ejecutar un comando drush en esta infraestructura, tenemos que indicar el sitio, por ejemplo:

 

drush sitio1.com cc all   (limpia todas las cachés del sitio1)

Si lo que queremos en ejecutar el comando en todos los sitios, utilizaremos '@sites':

drush @sites cc all  (limpia todas las cachés de todos los sitios)

La cosa se complica un poco si queremos ejecutar el comando en una lista de sitios concreta, por ejemplo en el sitio 1 y el sitio3. Para eso tendremos que definir un alias para drush y utilizar el atributo 'site-list':

  1. Creamos un archivo 'aliases.drushrc.php' y lo guardamos en la carpeta 'sites/all/drush'
  2. En el archivo 'aliases.drushrc.php', definimos un alias de la forma:

    $aliases['mis-sitios'] = array(
       'site-list' => array(
           'sitio1',
           'sitio3',
       ;),
    );
     
  3. Ya podemos utilizar el comando drush con este alias para que se ejecute en estos dos sitios:
    drush @mis-sitios cc all

Fácil ¿verdad?