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 :
- Installare "Composer" nei modi suggeriti dal sito ufficiale ( https://getcomposer.org/doc/00-intro.md#globally )
- 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
- 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 - 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. - 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
- Documentazione ufficiale http://www.drush.org/en/master/
- Tutorial su Drupal https://www.drupal.org/node/2603018
- Sito ufficiale Composer https://getcomposer.org/
- Documentazione sui comandi https://drushcommands.com/
- Sito CMS Drupal http://www.drupal.org