Aprendiendo a usar Drush

Drush es una herramienta de línea de comandos que simplifica en gran medida las tareas de creación y administración de un sitio web de Drupal 8. Con Drush, las tareas que a menudo requieren iniciar sesión en tu sitio, navegar a una página de administración y rellenar un formulario ahora se pueden realizar con una interfaz de línea de comandos sencilla. Drush también te permite administrar uno o varios sitios remotamente, sin tener que iniciar sesión en cada servidor y cada sitio para realizar tareas de mantenimiento rutinario. Drush maneja la mayoría de las tareas asociadas con la administración de módulos, temas y perfiles de usuario y tareas administrativas comunes como ejecutar cron, crear copias de seguridad y borrar cachés. Incluso puede ejecutar comandos SQL.

1.Instalación de Drush

Drush es en su núcleo un conjunto de scripts de terminal (Unix/Linux) o batch (Windows), combinados con scripts PHP que manejan la mayoría de las tareas comunes para administrar un sitio de Drupal. Instalar los scripts y PHP es un proceso relativamente sencillo en Unix/Linux y Windows.

1.1.Instalación de Drush en Unix, Linux o OS X

Para instalar Drush en Unix, Linux u OS X, sigue estos pasos:

  1. Descarga Drush desde https://github.com/drush-ops/drush. En la columna derecha de la página de destino de Drush en GitHub, aparecerá el botón Descargar ZIP. Si estás familiarizado con Git (ver capítulo 16), quizás desees clonar el repositorio de Git para que las actualizaciones de Drush sean más fáciles de administrar. Para obtener información sobre la clonación de repositorios, ver capítulo 16.

  2. Coloca el archivo drush.zip sin comprimir en un directorio que esté fuera de tu raíz web. En la mayoría de los servidores web, el webroot será algo como public_html o www_root o docroot. Revisa la documentación de tu servidor web para obtener detalles sobre dónde reside el directorio raíz web. Por razones de seguridad, no lo coloques en tu raíz web, ya que entonces estaría disponible y ejecutable por cualquier persona.

  3. Haz que el comando drush sea ejecutable:

    $ chmod u+x /ruta/a/drush/drush
  4. Configura tu sistema para reconocer dónde reside Drush. Hay tres opciones:

    1. Crea un enlace simbólico al ejecutable de Drush en un directorio que ya está en tu PATH; por ejemplo:

      $ ln -s /ruta/a/drush/drush/usr/bin/drush
    2. Agrega explícitamente el archivo ejecutable de Drush a la variable PATH, que se define en el archivo de configuración de shell, denominado .profile, .bash_profile, .bash_aliases, o .bashrc, que se encuentra en tu carpeta de inicio, por ejemplo:

      export PATH=“$PATH:/ruta/a/drush:/usr/local/bin”

      El sistema buscará las opciones de ruta de izquierda a derecha hasta que encuentre un resultado.

    3. Agregar un alias para Drush; este método también puede ser útil si deseas utilizar dos versiones de Drush, como Drush 5 o 6 (estable) para Drupal 7 de desarrollo y Drush 7 (maestro) para Drupal 8 de desarrollo. Para agregar un alias al ejecutable de Drush 7 agrega esto al archivo de configuración del shell (ver la lista en la opción anterior):

      $ alias drush-master=/ruta/a/drush/drush

    Para las opciones b y c, para aplicar los cambios a tu sesión actual, cierra la sesión y vuvlve a iniciarla de nuevo, o vuelve a cargar el archivo de configuración de bash de la siguiente manera:

    $ source .bashrc

    Nota: Si no sigues este paso, deberás ejecutar (de forma inconveniente) los comandos de Drush utilizando la ruta completa al ejecutable, /ruta/a/drush/drush, o navegando a /ruta/a/drush y ejecutando Drush ./drush. Se requerirá la opción -r o -l (ver USAGE, abajo).


    Pueba que Drush se encuentra en tu sistema:

    $ which drush
  5. Desde la raíz Drush, ejecuta Composer para buscar dependencias:

    $ composer install

Para obtener más información acerca de Composer, visita https://getcomposer.org/doc/00-intro.md.

1.2.Instalación de Drush en Windows

Para instalar Drush en Windows, visita https://www.drupal.org/node/594744 para obtener las instrucciones más recientes sobre cómo instalar Drush en Windows. El enfoque varía dependiendo de la versión de Drush y de la versión de Windows.

2.Comandos Drush

Ejecutar comandos de Drush es relativamente simple y directo. Desde una ventana de terminal u otra herramienta que permita acceder a la línea de comandos de tu sistema operativo, navega al directorio raíz del documento de tu sitio Drupal. Para dar una oportunidad a Drush, en el símbolo del sistema, escribe drush status y presiona Return. La salida devuelta por Drush debería ser similar a la siguiente:

Drupal version : 8.0-dev Site URI : http://default Database driver : mysql Database username : d8 Database name : d8 Database : Connected Drupal bootstrap : Successful Drupal user : Anonymous Default theme : bartik Administration theme : seven PHP executable : /usr/bin/php PHP configuration : PHP OS : Darwin Drush version : 7.0-dev Drush configuration : Drush alias files : Drupal root : /Applications/MAMP/htdocs/d8 Site path : sites/default File directory path : sites/default/files Temporary file directory path   : /Applications/MAMP/tmp/php Active config path : /sites/default/files/config_1FEpXnCuJgRc/active Staging config path : /sites/default/files/config_1FEpXnCuJgRc/staging

El comando status devuelve una lista de información útil acerca de la instalación de Drupal 8 actual.

Otro ejemplo clave es descargar un módulo o tema usando el comando drush pm-download:

drush pm-download calendar

Este comando descargará la última versión de producción del módulo Calendar en tu sitio.

También hay una versión abreviada de la orden, drush dl calendar.

Para habilitar el módulo Calendar (por ejemplo) desde la línea de comandos, ejecutarías:

drush pm-enable calendar

o la versión abreviada, drush en calendar.

Para deshabilitar el módulo Calendar, usa

drush pm-disable calendar

o la versión abreviada, drush pm calendar.

Si se publica una nueva versión o parche de seguridad para el módulo calendar y ya estás listo para aplicar la actualización, ejecuta

drush pm-update calendar

o la versión abreviada, drush up calendar.

Como puedes ver, lo que puede llevar varios clics a través de la interfaz administrativa se puede hacer a través de herramientas de línea de comandos simples y rápidas.

La tabla 15-1 representa una lista completa de comandos comunes de Drush. Para una descripción más detallada, visita http://drush.org.

Tabla 15-1. Comandos del núcleo de Drush

Comando

Descripción

archive-dump

Copia de seguridad de tu código, archivos y base de datos en un sólo archivo.

archive-restore

Restaurar/Expandir un archivo de sitio en un sitio web de Drupal.

cache-clear

Borra una caché específica, o todas las cachés de Drupal.

cache-get

Obtiene un objeto de la caché y lo muestra.

cache-set

Configura un objeto expresado en formato JSON o en var_export().

core-config

Edita los archivos drushrc, site alias, y settings.php de Drupal.

core-cron

Ejecuta todos los cron hooks en todos los módulos activos para el sitio especificado.

core-execute

Ejecuta un comando de terminal. Usualmente usado con un alias de sitio.

core-quick-drupal

Descarga, instala, publica e inicia sesión en Drupal con la configuración mínima y dependencias.

core-requirements

Proporciona información sobre cosas que pueden estar mal en tu instalación de Drupal, si los hay.

core-rsync

Rsync el árbol de Drupal a/desde otro servidor usando SSH.

core-status

Proporciona una vista panorámica de la instalación actual de Drupal, si la hay.

core-topic

Lee la documentación detallada sobre un tema determinado.

drupal-directory

Ruta de retorno a un directorio de módulo/tema determinado.

help

Imprime este mensaje de ayuda. Consulta drush para obtener más opciones.

image-flush

Rinde todas las imágenes derivadas para un estilo dado.

php-eval

Evalúa código PHP arbitrario después de arrancar Drupal (si está disponible).

php-script

Ejecuta script(s) PHP.

queue-list

Devuelve una lista de todas las colas definidas.

queue-run

Ejecuta una cola específica por nombre.

search-index

Indexa los elementos de búsqueda restantes sin borrar el índice.

search-reindex

Forzar el índice de búsqueda a reconstruir.

search-status

Muestra cuántos ítems quedan para ser indexados del total.

self-update

Comprueba si hay disponible una nueva versión de Drush.

shell-alias

Imprime todos los registros de alias de shell conocidos.

site-alias

Imprime los registros de alias del sitio para todos los alias de sitios conocidos y sitios locales.

site-install

Instala Drupal junto con los módulos/temas/configuración usando el perfil de instalación especificado.

site-reset

Restaura un sitio establecido de forma persistente.

site-set

Establece un alias de sitio para trabajar que se mantendrá para la sesión actual.

site-ssh

Se conecta al servidor de un sitio Drupal a través de SSH para una sesión interactiva o para ejecutar un comando de shell.

test-clean

Limpia las tablas y archivos temporales.

test-run

Pruebas de ejecución. Ten en cuenta que debes utilizar la opción --uri.

updatedb

Aplica cualquier actualización de base de datos necesaria (como con update.php).

usage-send

Envía información anónima de uso de Drush a las estadísticas del sitio. Las estadísticas de uso contienen el nombre del comando Drush y los nombres de las opciones Drush, pero no hay argumentos ni valores de opción.

usage-show

Muestra indormación de uso de Drush que ha sido registrada pero no enviada. Las estadísticas de uso contienen el nombre del comando Drush y los nombres de las opciones Drush, pero no hay argumentos ni valores de opción.

variable-delete

Borra una variable.

variable-get

Obtiene una lista de algunas o todas las variables y valores del sitio.

variable-set

Establece una variable.

version

Mostrar la versión de Drush.

watchdog-delete

Borra los mensajes de watchdog.

watchdog-list

Muestra los tipos de mensajes y niveles de gravedad disponibles. Un mensaje pedirá una opción para mostrar los mensajes de watchdog.

Watchdog-show

Muestra mensajes de watchdog.

Tabla 15-2. Comandos de campo.

Comando

Descripción

field-clone

Clona un campo y todas sus instancias.

field-create

Crea campos e instancias. Devuelve URLs para la edición de campos.

field-delete

Elimina un campo y sus instancias.

field-info

Ver información sobre campos, tipos de campos y widgets.

field-update

URL de retorno para la página web de edición de campos.

Tabla 15-3. Comandos del manager del proyecto.

Comando

Descripción

pm-disable

Deshabilita una o más extensiones (módulos o temas).

pm-download

Descarga proyectos de Drupal.org u otras fuentes.

pm-enable

Habilita una o más extensiones (módulos o temas).

pm-info

Muestra información detallada de una o más extensiones (módulos o temas).

pm-list

Muestra una lista de extensiones disponibles (módulos y temas).

pm-refresh

Actualiza la información del estado de la actualización.

pm-releasenotes

Imprime notas de la versión para proyectos dados.

pm-releases

Imprime la información de lanzamiento de proyectos concretos.

pm-uninstall

Desinstala uno o más módulos.

pm-update

Actualiza los proyectos de núcleo y aportados de Drupal y aplica las actualizaciones de base de datos pendientes (igual que pm-updatecode + updatedb)

pm-updatecode

Actualiza los proyectos de núcleo y aportados de Drupal a las últimas versiones recomendadas.

Tabla 15-4. Comandos SQL.

Comando

Descripción

sql-cli

Abre una interfaz de línea de comandos de SQL con las credenciales de Drupal.

sql-connect

Cadena para la conexión a la base de datos.

sql-create

Crea una base de datos.

sql-drop

Deja todas las tablas en una base de datos dada.

sql-dump

Exporta la base de datos de Drupal como SQL usando mysqldump o equivalente.

sql-query

Ejecuta una consulta en la base de datos del sitio.

sql-sync

Copia e importa la base de datos de origen a la base de datos de destino. Transferencias a través de rsync.

Tabla 15-5. Comandos de usuario.

Comando

Descripción

user-add-role

Añade un rol a las cuentas de usuario especificadas.

user-block

Bloquea el(los) usuario(s) especificado(s).

user-cancel

Cancela una cuenta de usuario con el nombre especificado.

user-create

Crea una cuenta de usuario con el nombre especificado.

user-information

Permite imprimir información acerca del usuario o usuarios especificados.

user-login

Muestra un vínculo de inicio de sesión único para la cuenta de usuario dada (predeterminado en uid 1).

user-password

(Re)Establece la contraseña para la cuenta de usuario con el nombre especificado.

user-remove-role

Elimina una función de las cuentas de usuario especificadas.

user-unblock

Desbloquea el usuario especificado.