Drush : bases

 

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.