Drush est un "couteau suisse" de commandes pour l'administration de sites Drupal.
Avant Drush, pour installer un module, pour le mettre à jour etc, il fallait télécharger un fichier *.tar.gz dans le bon répertoire, décompresser ce fichier, l'activer au travers du backend de Drupal et le configurer. Avec Drush tout cela ce fait en quelques lignes de commandes (drush dl ; drush en), reste ensuite plus qu'à configurer le module si besoins.
On verra aussi plus tard que drush permet de faire des choses beaucoup plus complexes.
Et bien sur comme c'est de la ligne de commande, on peut sans problèmes intégrer Drush dans des scripts.
Installation
Je choisi ici d'installer la dernière version de drush qui présente de nouvelles commandes intéressantes, c'est la version 3, qui à l'heure ou j'écris ces quelques lignes est encore en Realese Candidate.
La dépendance de drush est la suivante :
# apt-get install php5-cli
On commence par télécharger le fichier tar :
# wget http://ftp.drupal.org/files/projects/drush-All-Versions-3.0-rc1.tar.gz -O
/opt/drush.tar.gz
On décompresse :
# cd /opt ; tar xvzf drush.tar.gz ; rm drush.tar.gz
On crée un lien dans le répertoire /usr/bin :
# ln -s /opt/drush/drush /usr/bin/drush
Et voilà drush est prêt à être utilisé.
Commandes de base
Je prends ici le cas d'un site Drupal déjà installé. Il faut se placer dans le répertoire racine du site pour que cela fonctionne.
drush st
Permet d'obtenir le status d'un site drupal, une info importante visible ici est le statut de connexion à la base :
# drush st
Drupal Root : /var/www/drupal.cheramy.name/www
Drupal Version : 6.15
Site Path : sites/doc.cheramy.name
Site URI : http://doc.cheramy.name
File Directory Path : sites/doc.cheramy.name/files
Database Driver : mysql
Database Hostname : localhost
Database Username : drupal_youzer
Database Name : doc_cheramy
Database Password : *********
Database : Connected
Drupal Bootstrap : Successful
Drupal User : Anonyme
Default theme : ability
Administration theme : zeropoint
PHP configuration : /etc/php5/cli/php.ini
Drush Version : All-Versions-3.0-rc1
Drush configuration :
drush sm
Permet d'obtenir le statut des modules et des thèmes installés :
Package Nom Type Statut Version
Administration Actions permissions (actions_permissions) Module Not installed 6.x-1.7
Administration Admin (admin) Module Disabled 6.x-1.0-beta3
Administration Administration menu (admin_menu) Module Enabled 6.x-1.5
Administration Protect Critical Users (protect_critical_users) Module Enabled 6.x-1.1
Administration System information (systeminfo) Module Enabled 6.x-1.0-rc1
Apache Solr Apache Solr framework (apachesolr) Module Disabled 6.x-1.0-rc5
Apache Solr Apache Solr image module integration (apachesolr_image) Module Not installed 6.x-1.0-rc5
Apache Solr Apache Solr node access (apachesolr_nodeaccess) Module Not installed 6.x-1.0-rc5
Apache Solr Apache Solr Organic Groups (apachesolr_og) Module Not installed 6.x-1.0-rc5
Apache Solr Apache Solr search (apachesolr_search) Module Disabled 6.x-1.0-rc5
drush dl module
Permet de télécharger un module dans le bon répertoire :
# drush dl imagecache
Project imagecache (6.x-2.0-beta10) downloaded to /var/www/drupal.cheramy.name/www/site/all/modules/. [success]
drush en module
Permet d'activer un module disponible :
# drush en switchtheme
The following projects will be enabled: switchtheme
Do you really want to continue? (y/n): y
switchtheme was enabled successfully. [ok]
drush dis module
Permet de désactiver un module :
# drush dis switchtheme
The following projects will be disabled: switchtheme
Do you really want to continue? (y/n): y
switchtheme was disabled successfully. [ok]
drush up et upc
ATTENTION, ne pas utiliser sur un site en production sans être sur de ce que vous faites et sans avoir au préalable fait un backup du site et de la base ....
Permet de mettre à jour les modules :
# drush up
....
NOTE: A code update for the Drupal core is available.
Drupal core will be updated after all of the non-core modules are updated.
Code updates will be made to the following projects:
404 Blocks [blocks404-6.x-1.2], Image [image-6.x-1.0-beta5], IMCE Wysiwyg bridge
[imce_wysiwyg-6.x-1.1], Menu per Role [menu_per_role-6.x-1.4], Pathauto [pathauto-6.x-1.3],
Table of Contents [tableofcontents-6.x-3.4], Workflow [workflow-6.x-1.4], Wysiwyg [wysiwyg-6.x-2.1]
Note: Updated projects can potentially break your site. It is NOT recommended to update production
sites without prior testing.
Note: A backup of your package will be stored to backups directory if it is not managed
by a supported version control system.
Note: If you have made any modifications to any file that belongs to one of these projects,
you will have to migrate those modifications after updating.
Do you really want to continue? (y/n):
Les commandes de mise à jour de la base et de nettoyage du cache sont faites automatiquement.
Si jamais le core drupal est à mettre à jour, on obtiens ce message :
Code updates will be made to drupal core.
WARNING: Updating core will discard any modifications made to Drupal core files, most noteworthy
among these are .htaccess and robots.txt. If you have made any modifications to these files,
please back them up before updating so that you can re-create your modifications in the updated
version of the file.
Note: Updating core can potentially break your site. It is NOT recommended to update production
sites without prior testing.
Do you really want to continue? (y/n):
drush upc permet de mettre à jour seulement le core, cette commande ne fonctionnera pas si il y a des modules à mettre à jour. Donc en général on utiliseras drush up.
drush cc
Permet de nettoyer les caches :
# drush cc
Enter a number to choose which cache to clear.
[0] : Cancel
[1] : all
[2] : theme
[3] : menu
[4] : css+js
drush updatedb
Permet de mettre à jour la base de données.
drush cron
Permet d'exécuter le cron
Conclusion
Voilà quelques commandes utiles au quotidien pour l'administration de sites Drupal.
Personnellement drush m'a régulièrement sauvé la vie sur des sites Drupal, alors abusez en.