Installer drush sur un serveur mutualisé OVH.

Edouard Cunibil
4 min readSep 10, 2014

Drush est devenu un outil incontournable pour le développeur Drupal. Il permet d’exécuter des fonctions de base en ligne de commande pour piloter un site développé avec ce CMS.

Restrictions

Pour pouvoir utiliser drush il faut avoir un accès SSH au serveur. OVH ne le met à disposition sur les serveurs mutualisés qu’à partir de l’offre Pro, anciennement appelée offre Plan.

Il faut savoir toutefois qu’OVH a fait le choix de ne pas permettre aux serveurs d’accéder à la plupart des sites Internet directement depuis la ligne de commande. Malheureusement les serveurs de drupal.org n’échappent pas à cette restriction et il sera donc impossible de s’y connecter pour télécharger des modules ou des traductions.

Se connecter en SSH

Pour se connecter en SSH il vous faudra un client SSH. Il est présent nativement sous Linux et OSX, je vous recommande PuTTy ou MobaXterm si vous êtes un utilisateur de Windows.

Les données de connexion (serveur, identifiant et mot de passe) sont les mêmes que celles de votre compte FTP principal (celui qui vous a été fourni lors de la commande de votre hébergement).

Lors de la connexion, vous serez positionné dans le répertoire racine de votre hébergement, restez-y.

Télécharger drush

Maintenant que vous êtes connecté au serveur, il va falloir télécharger et configurer drush. Par chance, l’accès aux serveurs de github n’est pas bloqué par OVH. Il sera donc possible de télécharger drush directement.

Dans la liste des releases de drush, choisissez la dernière version stable de la branche 6.x. Rassurez-vous, cela n’a rien à voir avec la version 6 de Drupal. Copiez l’adresse du téléchargement de la version tar.gz et téléchargez la sur le serveur.

Pour la version 6.4.0 par exemple, cela donnera :

$ wget https://github.com/drush-ops/drush/archive/6.4.0.tar.gz

Une fois le téléchargement terminé, décompressez l’archive à l’aide de l’utilitaire tar comme suit :

$ tar xvzf 6.4.0.tar.gz

Renommez le répertoire extrait de l’archive pour qu’il soit simplement intitulé “drush” :

$ mv drush-6.4.0 drush

Et voilà !

Configurer l’environnement

Maintenant que vous avez téléchargé drush, il est nécessaire de configurer votre environnement pour qu’il puisse s’exécuter.

Ajouter Drush au path

Cette opération a pour but de vous permettre de taper la commande “drush” n’importe où sur le serveur sans vous soucier de l’endroit où il est installé. Pour y parvenir, nous devons ajouter le répertoire d’installation de drush à la variable d’environnement qui gère les exécutables du système.

C’est assez simple, il suffit d’éditer le fichier caché .bashrc (avec “vi” ou “nano” par exemple) et d’y ajouter la ligne suivante à la fin :

export PATH="~/drush:$PATH"

Lors de votre prochaine connexion au serveur via SSH, vous pourrez exécuter la commande “drush”.

Utiliser la bonne version de PHP

Par défaut, OVH met à disposition la version 4.4.9 en CGI. Cela pose un premier problème simplement lié à la version car drush 6.x nécessite au minimum PHP 5.3. Cela pose également un second problème car lorsque PHP est exécuté en CGI il ne dispose pas de certaines constantes essentielles au fonctionnement de drush. Nous allons résoudre ces deux problèmes à la fois.

Tout d’abord, il nous faut pouvoir simuler les constantes manquantes. Pour cela, créez un fichier drush_prepend.php contenant :

<?php
if (!defined('STDIN')) {
define('STDIN', fopen('php://stdin', 'r'));
}
if (!defined('STDOUT')) {
define('STDOUT', fopen('php://stdout', 'w'));
}
if (!defined('STDERR')) {
define('STDERR', fopen('php://stderr', 'w'));
}

Ce fichier devra être appelé automatiquement au début de chaque exécution d’une commande drush. La configuration PHP permet d’injecter un fichier avant toute exécution automatiquement à l’aide de la configuration “auto_prepend_file”. Malheureusement, nous n’avons pas accès à la configuration de php car elle est mutualisée sur le serveur. Cette fois ci c’est drush qui va nous sauver en nous permettant de passer des paramètres à son exécution.

Éditez le fichier caché .bashrc et ajoutez-y les lignes suivantes à la fin :

CURDIR=`pwd`
export DRUSH_PHP="/usr/local/bin/php.ORIG.5.3.16"
export PHP_OPTIONS="-dallow_call_time_pass_reference= -dmagic_quotes_gpc= -dregister_globals= -dauto_prepend_file=${CURDIR}/drush_prepend.php"

Si vous souhaitez utiliser PHP 5.4 remplacez php.ORIG.5.3.16 par php.ORIG.5.4.6 dans le fichier .bashrc

Apprécier

La configuration ajoutée dans le fichier .bashrc n’est appliquée qu’au démarrage d’une session SSH par défaut. Si vous ne voulez pas vous reconnecter vous pouvez exécuter la commande suivante pour forcer le rechargement de la configuration :

$ source .bashrc

Rendez-vous ensuite dans le répertoire de votre installation (www par défaut) et testez quelques commandes ayant une action locale :

$ cd www
$ drush status

Méthode rapide

Bravo ! Vous avez appris à manipuler le fichier .bashrc qui contient les commandes et variables d’environnement chargées au moment de l’ouverture de la connexion SSH. Vous avez également appris (ou pas) quelques commandes de base de linux.

Afin de me faciliter un peu la vie, j’ai automatisé ce processus au maximum et, comme je suis sympa, je vous livre mon secret :

$ curl -s https://raw.githubusercontent.com/DuaelFr/drush-ovh/master/drush_ovh_install.sh | bash

Cette commande vous permettra d’installer et de configurer drush (6.4.0) sur votre hébergement mutualisé OVH en une seule ligne.

Conclusion

Le fait de ne pas pouvoir accéder aux serveurs de drupal.org depuis la ligne de commande du serveur restreint grandement l’intérêt de l’utilisation de drush. Cependant, il permet toujours :

  • d’activer ou de désactiver des modules
$ drush pm-enable devel
  • de vider les caches
$ drush clear-cache all
  • de procéder à un backup de la base de données
$ drush sql-dump --result-file --gzip
  • de mettre le site en mode maintenance
$ drush variable-set maintenance_mode 1
  • et de nombreuses autres fonctions…

--

--