Installer Drush pour administrer Drupal en ligne de commande

La documentation Drupal 6 n'est plus maintenue et en cours de dépublication.


Consultez le guide utilisateur Drupal en français directement sur drupal.org.

Créer un site Drupal ca peut aller vite, mais à la longue c'est toujours la même chose. On se connecte sur Drupal.org pour télécharger les sources de Drupal et les modules un par un, ce qui prend un temps fou. On peut encore se créer une installation toute prête mais encore faut-il maintenir à jour les modules.

Il existe une autre solution, utiliser Drush. Ce n'est pas une révolution, car cela fait maintenant un petit moment déjà que Drush est disponible mais j'avoue n'avoir jamais eu le temps de m'y plonger.

Drush n'est pas un module pour Drupal, c'est un outil à installer sur votre serveur qui va vous permettre d'administrer vos sites en ligne de commandes.

Parmi les possibilités qu'offre Drush vous allez pouvoir via une simple ligne de commande installer Drupal, activer ou désactiver des modules ou encore télécharger des thèmes.

Depuis quelques temps je l'utilise professionnellement chez mon client, et c'est vraiment un gain de temps. J'ai donc pris un peu de temps chez moi pour comprendre sont fonctionnement.

Pour la suite de la présentation de Drush je vous montrerai comment l'installer sous linux (ubuntu pour l'utilisation de sudo en natif). J'ai auparavant essayé de l'installer sous Windows mais en vain.

Pré-requis

Comme je viens de l'évoquer, être sous Linux avec apache2, et php 5.2 d'installés.

Pour fonctionner Drush a besoin de la librairie CLI de php (CLI pour interface de ligne de commande en français).

Vous pouvez installer ce paquet via cette commande :
$ sudo apt-get install php5-cli

Drupal (et donc drush) est relativement gourmand en mémoire, il est donc conseillé de modifier tout de suite la limite mémoire de php5-cli, ce qui évitera de rencontrer une erreur à l'installation de modules.

Ouvrir le fichier /etc/php5/cli/php.ini et modifier la valeur de memory_limit. Pour un site qui utilisera peu de modules, il est conseillé de placer cette valeur à 128M. Autrement, fixer la valeur à 256M devrait convenir à la majorité des cas. Si la mémoire est insuffisante, il vous sera alors de retourner dans le fichier pour l'ajuster à vos besoins.

Petite astuce pour trouver rapidement la variable memory_limit: après avoir ouvert le fichier php.ini, taper /memory_limit puis recherchera la chaine de caractère memory_limit.

$ sudo vi /etc/php5/cli/php.ini
## fichier php.ini
memory_limit = 256M      ; Maximum amount of memory a script may consume (32MB)

Installation

Téléchargez Drush et dézippez le à l'endroit ou vous voulez. Pour ma part, j'ai choisi de le placer dans le répertoire /opt qui est utilisé pour les applications supplémentaires au système. Ainsi, pour moi, /path équivaut à /opt.

Placez vous dans le répertoire de votre choix
$ cd /path

Téléchargez drush
$ sudo wget http://ftp.drupal.org/files/projects/drush-All-Versions-2.1.tar.gz

Décompressez l'archive
$ sudo tar -xzf drush-All-Versions-2.1.tar.gz

Rendons maintenant le fichier exécutable pour tout le monde
$ sudo chmod a+x /path/drush/drush

Maintenant nous allons créer un lien symbolique vers drush.
$ sudo ln -s /path/drush/drush /usr/bin/drush

img : commande drush install

Drush est maintenant installé et prêt à l'emploi. Pour l'essayer, tapez simplement drush et vous devriez voir la liste des commandes drush disponibles.
$ drush

Utiliser Drush

Placez vous dans le répertoire où sont vos sites par exemple /var/www.

Nous allons maintenant installer Drupal avec la commande Drush download ou dl

$ drush dl drupal

Drupal a été téléchargé et déployé à l'endroit où vous êtes.

Placez vous dans votre installation de Drupal pour copier le fichier settings.php.

$ cp sites/default/default.settings.php sites/default/settings.php
$ chmod 666 settings.php

Il ne vous reste plus qu'à effectuer votre installation.

Une fois celle-ci terminée, rendez-vous dans le répertoire sites/all dans lequel nous allons déployer des modules et installer un nouveau thème. Pas besoin de créer les répertoires modules ou thèmes, drush va le faire pour vous.

Il est facultatif de se positionner dans le répertoire sites/all pour y installer un module ou un thème. Par défaut, les modules et thèmes seront téléchargés et installés dans le répertoire sites/all. Si vous voulez l'installer ailleurs (dans un sous-site ou dans le répertoire default), il vous suffira alors de vous y positionner avant de lancer la commande drush (ex: sites/default).

$ drush dl cck views devel

Nous venons de télécharger cck, views et le module devel. Pour vérifier vous pouvez aller sur l'administration de vos modules.

Cela marche aussi pour les thèmes
$ drush dl basic

Par défaut un module téléchargé n'est pas activé alors voici comment faire
$ drush enable views

Vous trouverez la liste complète des commandes de drush sur la page de documentation de drush ou -pour rappel- en tapant $ drush dans la ligne de commande.

Conclusion

Drush est un vrai gain de temps pour réaliser vos sites, plus de connexion sur drupal.org, plus de recherche dans la liste des modules. En contrepartie il vous faut connaître le nom des modules que vous voulez installer.
Je vous conseille vivement d'installer Drush et de jouer avec.

Remarque GoZ: Le seul inconvénient à mon goût est le manque de visibilité lors de l'affichage de la liste des modules lorsque le site dispose de nombreux modules. Ceci oblige à jeter un œil à la page de gestion de modules lorsque l'on veut installer un module inconnu afin de voir du premier coup d'œil toutes les dépendances, la description, les modules installés etc.

Problèmes potentiels

  • Droits d'accès: Could not login with user ID #<em>0</em>.
    Si jamais vous avez cette erreur, c'est que votre site n'est pas accessible publiquement et donc qu'il est impératif d'être authentifié pour y accéder. Il vous faut donc préciser un utilisateur à utiliser pour se connecter.
    drush -u 1 commandeDrushAExecuter
    Pour éviter de devoir retaper continuellement drush -u 1 pour chaque commande, il est possible de créer un alias (dans ~/.bashrc) par exemple :
    alias drush1='drush -u 1'
    Il est possible d'utiliser directement les modifications du fichier .bashrc sans devoir se relogguer en tapant la commande :
    source ~/.bashrc

Source :
Projet drush
Autres ressources :
module Drupal : Drush : part 1 : comment l'installer et l'utiliser sur biboo.net

Commentaires

Salut,

J'ai relu la page de doc (ça m'a pris comme ça) et j'ai une remarque.
Je pense qu'il est inutile et déconseillé de mettre dans la doc de passer par sudo pour utiliser drush.

J'explique :
Les personnes qui vont utiliser drush n'ont pas forcément les droits d'utilisation de sudo (accès root quand même...). Certe cette commande est justifiée pour l'installation de drush (même s'il est possible de s'en passer en l'installant ailleurs et en passant par une configuration de .bashrc et alias plutôt que de faire un lien) et obligatoire pour l'installation de php5-cli, mais intuile pour l'utilisation de drush.
Les droits concernant l'utilisation de drush seront ensuite limités par les droits de l'utilisateurs sur les fichiers du site drupal.

Même raisonnement pour la manipulation de fichiers drupal, il est conseillé de le faire via un utilisateur qui à les droits apache plutôt qu'avec les accès root.

Autre sujet, il serait bon je pense de conseiller de modifier le php.ini de php5-cli afin d'augmenter la limite mémoire, très vite insuffisante. Cela permettra aux néophytes de ne pas être confronté au problème de limitation de mémoire.

Je l'utilise principalement pour mettre à jour mes modules. Et comme j'utilise une installation mutualisée je procède ainsi :

$ drush update --uri="http://www.monsiteweb.com"

De même pour activer un module

$ drush enable monmodule --uri="http://www.monsiteweb.com"

Et pour mettre à jour Drupal, presque pas besoin de drush

drush dl drupal
rm -rf drupal-6./robots.txt
rm -rf drupal-6.
/.htaccess
rm -rf drupal-6./sites
cp -r drupal-6.
/* ./
rm -rf drupal-6.*

Je travaille également sur plusieurs sites, mais devoir toujours taper --uri="http://monsite.com" est vite pénible et une perte de temps.

J'utilise 2 solutions:
- Soit je travaille directement dans le répertoire du site auquel je veux ajouter les modifications, dans ce cas là drush installe les modules au bon endroit
- Soit je paramètre des alias pour les sites en question.
alias dMonsite='drush --uri="http://monsite.com"'