Drush per Drupal

Drush è uno strumento messo a disposizione da Drupal ( http://www.drupal.org ) per poter aggiornare / sviluppare / configurare / sincronizzare , un sito web sviluppato con Drupal.
Nonostante dalla versione 8 sembrava essere messo da parte , per esempio la gestione delle dipendenze delle librerie è stato demandato dal comando "drush make" al noto "Composer" ( https://getcomposer.org/ ) ,  dal mio punto di vista continua ad essere un ottimo strumento per lo sviluppo e mantenimento dei propri siti sviluppati in Drupal.

Installazione

Consiglio di seguire l'installazione ufficiale ( http://docs.drush.org/en/8.x/install-alternative/ ) in pochi passi :

  1. Installare "Composer" nei modi suggeriti dal sito ufficiale ( https://getcomposer.org/doc/00-intro.md#globally )
  2. Successivamente eseguire:

    composer global require drush/drush

    La comodità e versatilità è la possibilità di installare drush in base alla versione di Drupal si dovrà sviluppare , seguendo la tabella di riferimento ( http://docs.drush.org/en/master/install/#drupal-compatibility ) per capire quale versione usare, per esempio per installare una versione per Drupal 6 :

    composer global require drush/drush:6.0.0

L'istallazione così fatta è valida a livello globale del sistema (binario drush  valido per tutto il server e qualsiasi sito Drupal) , è possibile localizzare la versione di drush a livello di sito ( http://docs.drush.org/en/master/install/#install-a-site-local-drush ) .

Configurazione e cartelle

Dopo l'installazone e l'utilizzo, nella cartella personale dell'utente che esegue drush verrà creata la cartella ".drush" contenente files di configurazione e files temporanei. In particolare il file "drushrc.php" a volte chiamato anche "aliases.drushrc.php" è quello che permette una personalizzazione dello strumento.
Per esempio se si sviluppa un sito, normalmente si hanno anche più ambienti per lo stesso sito, "drush" per gestirli, permette di dargli dei nomi ed eseguire comandi su di essi.
Ecco un esempio di quattro alias configurati, due per lo sviluppo in locale e i rispettivi ambienti di staging su un altro server accessibile via SSH :

$aliases['local7'] = array(
   'root' => '/home/developer/workspaceWeb/MyNickNameDrupal/drupal.occhioinformatico.it',
   'uri' => 'http://dev.drupal.occhioinformatico.it',
);

$aliases['local8'] = array(
   'root' => '/home/developer/workspaceWeb/MyNickNameDrupal/drupal8.mynickname.org',
   'uri' => 'http://dev.drupal8.mynickname.org',
);

$aliases['stagingRemote7'] = array(
    'remote-host' => 'occhioinformatico.it',
    'remote-user' => 'userDrupal',
    'root' => '/var/www/occhioinformatico.it/drupal.occhioinformatico.it/dev',
    'uri' => 'http://drupal.occhioinformatico.it/dev',
    'ssh-options'  => '-p 22' // -o PasswordAuthentication=no -i ~/.ssh/occhioinformatico.it.rsa',
);

$aliases['stagingRemote8'] = array(
    'remote-host' => 'mynickname.org',
    'remote-user' => 'userDrupal8',
    'root' => '/var/www/mynickname.org/drupal8.mynickname.org',
    'uri' => 'http://drupal8.mynickname.org',
    'ssh-options'  => '-p 22' // -o PasswordAuthentication=no -i ~/.ssh/occhioinformatico.it.rsa',
);

Per ogni alias si definisce almeno la cartella di installazione del sito "root" e la uri a cui risponde. Se il sito non è in locale è possibile definire delle opzioni per raggiungerlo, per esempio via SSH ( https://www.drupal.org/node/1401522 ) .

Esecuzione e comandi

L'eseguibile drush può essere eseguito o a livello globale o a livello di sito e cioè eseguendolo dentro la cartella di un sito Drupal, considererà quel sito come destinatario dei comandi eseguiti.
A livello globale, sicuramente si può partire ad utilizzarlo per installare un Drupal vuoto.
Con il comando

drush --version

scopriamo la versione installata , mentre è sempre disponibile come usarlo lanciando

drush

oppure

drush help

oppure

drush help COMANDO

Installare ed aggiornare Drupal

  1. Scaricare l'ultima versione nella cartella "OriginalD8"

    drush pm-download drupal --drupal-project-rename=OriginalD8

    ogni comando ha sempre un abbreviativo per comodità, per esempio si potrebbe eseguire anche

    drush dl drupal --drupal-project-rename=OriginalD8
  2. Posizionarsi nella cartella dove si vuole installare il sito ed installare con il comando drush

    cd ./OriginalD8
    drush site-install standard --db-url='mysql://user8MNMTest:pwdMySQL@localhost/drupal8origin' --site-name="Original Drupal 8" --account-name=admin --account-pass=pwdAdmin

    in questo modo installiamo il sito "Original Drupal 8" in una istanza di MySQL usando un utente che abbia già i permessi per creare un database ed accedervi. Nel comando si è deciso di impostare anche la password dell'utente del sito amministratore ( admin ) , diversamente drush ne avrebbe assegnata (e comunicata) una casuale.

  3. Col tempo sarà necessario aggiornare il core, soprattutto quando verranno notificato aggiornamenti sulla sicurezza, da dentro il sito si potrà lanciare il comando :

    drush pm-update drupal

Gestire i moduli

I moduli sono la composizione software del sito che usano il core di Drupal, alcuni sono nel core stesso .

Installazione

Con un unico comando è possibile installare decine di moduli ed in automatico risolvere anche le dipendenze se essi dipendono da altri che non conosciamo.

drush pm-enable --resolve-dependencies country mailsystem  redirect

dove country mailsystem  redirect sono i moduli e si potrebbe aggiungere -y all'opzione --resolve-dependencies per confermare sempre l'installazione.

Disinstallazione

Ovviamente potrebbe essere necessario toglierli.

drush pm-uninstall entity

capita di usare moduli e poi disinstallarli ma spesso la configurazione rimane e crea problemi nell'import / export delle implemetazioni, per rimuovere anche le configurazioni che riscontriamo creare problemi si può usare :

drush config-delete currency.amount_formatting

Lista dei moduli

Se si deve reinstallare un sito da zero e si vuole sapere sul vecchio sito quali moduli c'erano...

drush pm-list --type=Module --status=enabled

il comando è intuibile che può valere per i temi o per i moduli disinstallarli (o disabilitati)

Sviluppo sincronizzazione ambienti

Cache

Ad ogni installazione / disinstallazione o modifica di un modulo direttamente nel sito per effettuare un test in modo veloce, conviene sempre pulire tutte le cache di Drupal

drush cache-rebuild

in verità ne esistono a vari livelli, anche per la modifica di un tema grafico (se la si usa) conviene rinfrescarla.

Sincronia ambienti

Ipotizzando di avere un sito di sviluppo e lo stesso sito su un server remoto come staging o sito demo, attraverso drush è possibile "sincronizzare" i due ambienti. Dopo aver configurato degli aliases sarà possibile eseguire diversi comandi di sincronia.

Sincronizzare i database

drush sql-sync @stagingRemote8 @local8

nel caso sopra si allinea il database locale con i dati del server remoto.

Sincronizzare il file system

drush rsync @stagingRemote8 @local8

nel caso sopra si allinea il file system in locale con i files del server remoto .

Configurazioni degli oggetti

Altri modi per importarsi o esportare implementazioni è esportare le configurazioni (per esempio di una vista) , ecco come esportare :

drush config-export

verrà creata una cartella, successivamente si potrà importarla...

drush config-import

personalmente per queste operazioni preferisco esportare il singolo oggetto attraverso l'interfaccia di amministrazione ( /admin/config/development/configuration/single/export ) ed importare ( /admin/config/development/configuration/single/import ) il testo esposto sempre attraverso l'interfaccia nel sito destinatario da aggiornare.

Riferimenti