Usando alias de drush en Drupal

drupal.jpg
Solucionex
08
Abr 19

En múltiples ocasiones necesitamos traernos de forma fácil la base de datos de stage/pro e importarla en local  u otro entorno. Como es lógico podemos entrar cada vez al server remoto descargarla y posteriormente importarla en local (tarea que se hace muy pesada). Para simplificar esto podemos hacer uso de los alias de drush y el comando drush sql-sync

  • Configuramos el fichero que encontraremos en /drush/sites/self.site.yml (Si hemos usado create-project) donde añadimos los datos de conexión de ssh:
    • host: host del site, por si hay dudas es lo que pondríamos detrás de la @ en una conexión ssh user@host, básicamente la dirección del servidor.
    • user: Usuario ssh del sitio, por si hay dudas es lo que pondríamos delante de la @ en una conexión ssh user@host. Usuario con el que accedemos al servidor.
    • root: Ruta hasta el directorio donde se encuentra nuestro drupal en el sitio remoto.
    • uri: Url del sitio remoto.

      Es muy importante que a nivel de servidor tengamos el PATH añadido a /etc/enviroment , para ello únicamente tenemos que hacer un edit de dicho fichero y añadir PATH="....." donde los puntos sería todo lo que nos devuelva un echo $PATH en la terminal del servidor. Esto da solución a un problema muy común que es que cuando ejecutamos de forma remota el comando nos diga que "drush no existe".
       
  • En local deberemos copiar nuestra ssh key id al servidor remoto del que hemos realizado el alias, en nuestro caso el comando sería ...
     

    ssh-copy-id -i ~/.ssh/id_rsa.pub user@host


    ... siempre y cuando nuestra clave ssh pública esté en ese directorio (si estuviera en otro pues la ruta sería a donde esté nuestro fichero).
     

Una vez realizados estos pasos ya podremos ejecutar comandos de drush en el servidor remoto sin necesidad de entrar allí. Por ejemplo:

  • drush @self.prod cr (Estaríamos ejecutando un limpiado de cachés en el entorno de producción).


Otro comando muy útil y como comentamos al principio sería:

  • drush sql-sync @self.prod @self comando con el cual le estamos diciendo que nos traiga la base de datos que tenemos configurada en el alias prod (traenos un dump de producción) e importarla en local.

IMPORTANTE: desde donde lanzamos el comando sería el @self por defecto. Es muy importante el orden ya que, por ejemplo en el comando anterior, sí lo ponemos al revés subiremos nuestro local a prod.