'>

installer une plateforme multi-sites sous Drupal

À partir de mes différentes lectures et expériences, je vous propose un tutoriel synthétique et efficace pour installer un site ou une plateforme multi-sites sous Drupal. L’avantage de Drupal, en la matière, c’est qu’il permet nativement (et donc facilement) de configurer et de gérer plusieurs sites distincts sur une seule et même installation. Chaque site peut avoir son propre nom de domaine et son propre contenu (distingué par des préfixes de tables dans la base de données MySQL) tout en étant installé, configuré et géré sur la même installation de Drupal utilisant une seule et même base de données MySQL.

Les avantages sont énormes : le code PHP de Drupal n’est installé qu’une seule fois et est partagé par chaque site, si bien qu’une seule mise à jour de Drupal s’applique à tous les sites installés. Les thèmes et modules sont disponibles pour tous les sites mais il reste possible de n’autoriser un thème ou un module que pour un seul site (tout dépend du dossier d'installation dudit module). Bref, c’est un pur bijou et, comble de bonheur, tout cela est très facile à mettre en place, comme vous allez le voir.
Préambule

La force de Drupal étant ses modules et leur nombre incroyable, l’expérience montre que télécharger des modules, les décompresser et les activer devient rapidement une tâche longue et fastidieuse, surtout si vous voulez utiliser de nombreux modules. Pour éviter cela, il faut prendre les meilleures précautions dès la phase d’installation.

Téléchargez donc la version de Drupal proposée par son fondateur lui-même, à savoir Acquia Drupal. Cette version de Drupal est exactement la même que celle que vous trouverez sur le site drupal.org (avec le core le plus récent) sauf qu’elle contient déjà, préinstallés, quantité de modules indispensables que, de toutes façons, vous aurez besoin d’installer. Autant se simplifier la vie. Il vous suffit alors d'aller vérifier dans "Construction du site > Modules" quels modules vous voulez activer / désactiver.
Le principe : une histoire de répertoires

Chaque site créé utilise le même code de Drupal mais dispose de sa propre configuration et de ses propres fichiers, stockés dans un sous-répertoire dédié du répertoire /sites. Par exemple, dans le cas d’un premier site sur le domaine www.bonjour.com et d’un second site sur www.bonsoir.com, il faudra créer pour chacun d’entre eux un sous-répertoire dans le répertoire /sites. Chacun de ces répertoires devra contenir un fichier de configuration nommé settings.php.

L’astuce réside dans le nom du répertoire. Si vous voulez que vos sites possèdent des noms de domaines différents, il suffit de donner à chaque répertoire le nom du domaine correspondant. Par exemple, dans le cas des 2 sites www.bonjour.com et www.bonsoir.com, les répertoires seront nommés /sites/bonjour.com et /sites/bonsoir.com. Si vous ajoutez les “www.” dans le nom du répertoire, seules les URLs du type http://www.bonjour.com seront accessibles et pas celles du type http://bonjour.com.

Si vous ne souhaitez pas utiliser des noms de domaine différents, mais simplement utiliser des sous-domaines ou des sous-répertoires de votre site principal, il suffit de nommer autrement les répertoires en question. Pour utiliser un sous-domaine du type http://travail.bonjour.com, il faut nommer le répertoire en /sites/travail.bonjour.com. Si vous voulez utiliser un sous-répertoire pour une URL du type http://bonjour.com/travail, il faut nommer le sous-répertoire dans sites de la manière suivante : /sites/bonjour.com.travail.

Dans tous les cas, chaque répertoire contient son propre fichier settings.php. Et chaque site ainsi configuré peut avoir ses propres modules et thèmes, en plus de ceux se trouvant dans les dossiers /modules et /themes standard. Pour cela, il suffit de créer des répertoires /modules et /themes dans le répertoire de configuration de chaque site. Par exemple, le répertoire /sites/bonjour.com/ pourra contenir, en plus de son fichier settings.php, son propre dossier /themes/nom_du_theme/, son propre dossier /modules/nom_du_module/, etc.
Pas-à-pas : installer d’abord le premier site

    Faire pointer les noms de domaine à utiliser sur l’espace d’hébergement et choisir quel site (et donc quel nom de domaine) sera le site principal.
    Télécharger, décompresser et installer Drupal comme s’il n’y avait qu’un seul site, sur le nom de domaine principal retenu.
    Ne pas lancer maintenant l’installation automatique et, par conséquent, ne pas utiliser la configuration /sites/default
    Créer tout de suite le sous-dossier du 1er site dans le répertoire /sites (en utilisant le nom de domaine principal, il en faut bien un pour commencer !) et y copier le contenu du dossier /sites/default (au niveau des permissions, ce dossier devra être accessible en écriture, mais seulement pendant l’installation). Drupal est prêt.
    Lancer l’installation automatique en se rendant sur l’URL du site (nom de domaine ou sous-répertoire d’installation du nom de domaine ou adresse IP du serveur). Se laisser alors guider et répondre aux questions : Drupal vous demandera sûrement de renommer le fichier default.settings.php en settings.php dans le répertoire de votre 1er site et de permettre provisoirement l’écriture dans ce fichier et dans son dossier. Ne pas renommer directement default.settings.php mais en faire une copie dans le même répertoire et ensuite renommer cette copie en settings.php, sans quoi l'installe se bloquera au moment de la connexion à la base de données !!
    Au moment de saisir les identifiants MySQL, ne pas modifier le préfixe des tables dans les Options Avancées puisque ce premier site sera le site par défaut
    Dès que l’installation est terminée, il est possible de publier du contenu sur ce premier site.

Pas-à-pas : installer ensuite le second site

    Modifier la configuration Apache pour que votre nouveau site pointe bien vers Drupal... Dans le cas d'un sous-dossier il faudra ajouter un lien symbolique dans le dossier drupal avec le nom de votre sous-dossier : cd /usr/share/drupal6; ln -s . sousdossier
    Créer le sous-dossier du 2ème site dans le répertoire /sites en respectant les règles de nommage citées plus haut (nom de domaine distinct, sous-domaine ou sous-dossier) et y copier le contenu du dossier /sites/default (comme pour le premier site, au niveau des permissions, ce dossier devra être accessible en écriture, mais seulement pendant l’installation)
    Lancer l’installation automatique en se rendant sur l’URL du deuxième site (nom de domaine distinct, sous-domaine ou sous-dossier). Se laisser guider et répondre aux questions : là aussi, Drupal vous demandera sûrement de renommer le fichier default.settings.php en settings.php dans le répertoire de votre 2ème site et de permettre provisoirement l’écriture dans ce fichier et dans son dossier. Si Drupal indique que l’installation est déjà faite, c’est qu’il utilise une définition de site déjà existante, ou celle par défaut. Vérifier à ce stade la concordance entre l’URL et ce qui est défini dans le dossier /sites.
    Au moment de saisir les identifiants MySQL, aller dans les Options Avancées et modifier le préfixe des tables ; si cela n’est pas fait, la première installation sera écrasée par celle-ci
    Si tout se déroule normalement, vous avez une plateforme multi-sites dans laquelle Drupal gère tout seul les différentes URL en leur associant la bonne configuration. Il vous suffit de vous rendre sur chaque URL pour vous en rendre compte. Voilà, c’est tout. Durée de l’opération : 10 minutes à peine.

Installez autant de sites que vous voulez !

Pour installer un nouveau site, il vous suffit de répéter les opérations effectuées ci-dessus pour installer le second site. Vous pouvez répéter l’opération autant de fois que vous voulez et gérer ainsi de très nombreux sites, complètement différents, tant au niveau du design qu’au niveau du contenu, avec une seule et même installation de Drupal. Que du bonheur, non ?
Toujours installer Drupal en multi-sites

Pour finir, je vous recommande très fortement de toujours installer Drupal de cette manière, même si vous ne voulez exploiter ou mettre en oeuvre qu’un seul site. Cela vous permettra, si un jour vous changez d’avis, d’ajouter des sites à votre plateforme Drupal sans avoir à tout recommencer, et ce, très facilement. De plus, faire une installation multi-sites ne prend pas plus de temps et n’est pas plus compliqué que faire une installation uni-site. Par conséquent, si vous voulez n’installer qu’un seul site, vous n’avez qu’à faire exactement ce qui a été décrit dans ce tuto, sauf la dernière étape visant à créer un second site. Vous la ferez le jour où vous en aurez besoin, ou alors vous ne la ferez jamais, ça ne changera rien à votre site. Mais si un jour ça vous prend, en 2 minutes c’est fait.

PS : Ce tutoriel a été testé avec succès sur un hébergement Gandi. Il est publié ici sous la forme d'un wiki et a du coup été modifié de diverses manières par plusieurs utilisateurs. Pour lire le tutoriel original de Lektum, rendez-vous sur Lektum.info.