stick

Mon guide Drupal (1) : installer un site ou une plateforme multi-sites sous Drupal

24 février 2009

par Stéphane Vial

drupalresized

À partir de mes différentes lectures et expériences, je vous propose dans cet article un tutoriel synthétique pour installer un site ou une plateforme multi-sites sous Drupal. Ce billet est le premier d’une série consacrée aux différentes étapes de la mise en oeuvre d’un site sous Drupal.

Je travaille en ce moment sur un projet de plateforme multi-sites sous Drupal. L’avantage de Drupal, dans ce type de projet, 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 (y compris 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.

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. Bref, c’est un pur bijou et, comble de bonheur, tout cela est très facile à mettre en place, comme vous allez le voir.

Toujours installer Drupal en multi-sites

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 est 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.

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

  1. 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.
  2. 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.
  3. Ne pas lancer maintenant l’installation automatique et, par conséquent, ne pas utiliser la configuration /sites/default
  4. 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.
  5. 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.
  6. 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
  7. Dès que l’installation est terminée, il est possible de publier du contenu sur ce premier site.
  8. Rétablir des permissions sécurisées : 550 sur le répertoire du site dans /sites et 444 sur son fichier settings.php.

Pas-à-pas : installer ensuite le second site

  1. 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)
  2. 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.
  3. 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
  4. 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.
  5. Ne pas oublier de rétablir des permissions sécurisées : 550 sur le répertoire du site dans /sites et 444 sur son fichier settings.php.

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 ?

Installation uni-site classique

Dans le cas d’une installation uni-site classique, selon la procédure automatique proposée par Drupal, il ne faut pas simplement renommer le fichier default.settings.php en settings.php : il faut créer un fichier settings.php en copiant default.settings.php tout en conservant default.settings.php. Dans le répertoire sites/default, on doit donc avoir à la fois le fichier default.settings.php et le fichier settings.php. Petit détail qui peut vous économiser du temps…

PS : ce tutoriel a été testé avec succès sur un hébergement Gandi.

Autres articles de cette série

Mon guide Drupal (1) : installer un site ou une plateforme multi-sites sous Drupal

Mon guide Drupal (2) : configurer et personnaliser Drupal

Mon guide Drupal (3) : construire les contenus avec Drupal

Mon guide Drupal (4) : créer un thème original pour Drupal

Mon guide Drupal (5) : régler les droits d’accès et finaliser un site Drupal

Mon guide Drupal (6) : les meilleurs modules pour Drupal

Mon guide Drupal (7) : mettre à jour Drupal

Post to Twitter

billetpublié à 18:53 dans Techniques et tutoriels    billetMots-clefs :

19 commentaires

pour «Mon guide Drupal (1) : installer un site ou une plateforme multi-sites sous Drupal» Flux RSS des commentaires pour ce billet

  1. elektrorl dit :

    Merci beaucoup, les ressources Drupal en français de cette qualité sont rares; dans un futur article, je serais très intéressé par: « comment migrer un des sites d’une installation multisite vers un nouveau domaine ». :) Peut-être que c’est moi qui l’écrirai quand j’aurai expérimenté la manip’.

  2. elektrorl dit :

    Acquia Network subscription status
    Cà me chagrine cette histoire. Peux-t-on le désactiver ? C’est un service excessivement cher qui ne me servira pas.

  3. Stéphane Vial dit :

    @elektrorl : je pense que pour modifier le domaine d’un site d’une plateforme multi-sites, il doit suffire de modifier le fichier settings.php dans le répertoire /sites/… Je vérifierai à l’occasion, car cela m’intéresse aussi.

    Quant à Acquia Network subscription status, je ne sais pas ce que c’est mais si c’est un module, il suffit de le désactiver dans Construction du site > Modules.

  4. elektrorl dit :

    Si tu installes la version actuelle de Acquia, tu verras que ce module est présent, effectivement j’ai l’impression que ça ne pose pas de problème de le désactiver.

  5. Laurent dit :

    J’utilise depuis longtemps le multi-sites avec Drupal, c’est un vrai bonheur car quand on commence à avoir plus d’une dizaine de sites, imaginez l’horreur de devoir mettre à jour les modules et Drupal ! Avec une multi-install, j’envoie le module une fois et par contre c’est vrai il faut toujours faire update.php sur chaque site, mais c’est déjà beaucoup moins contraignant surtout qu’on utilise rarement qu’un seul module !

    http://www.visitezmonsite.com/TECHNOLOGIE/Comment-installer-un-site-ou-une-plateforme-multi-sites-sous-Drupal

    Merci.

  6. roca344 dit :

    Excellent travail comme tuto; mais pour certains novis en la matiere, il lui faut une un tuto video. c’est partie.

  7. JPG dit :

    Je teste Drupal. En mono-site, pas de problème.
    En essayant de suivre ce tuto pour du multi-sites, rien ne fonctionne. Il reste en mono-site, à ce que j’ai pu voir…
    Pour info, je suis en local avec wamp.
    « 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. » Je veux bien, mais où? dans quel fichier?
    « 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. » C’est le répertoire principal de drupal, ou…?
    « 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). » Même question : le répertoire de drupal, ou le répertoire drupal/sites/monsite.fr ? ou…

  8. Stéphane Vial dit :

    @JPG :

    1. à mon avis, ça provient de l’installation en local. Je ne pense pas qu’on puisse faire pointer des noms de domaine en local, il ne faut donc pas essayer en local avec des noms de domaines différents, mais plutôt avec des sous-répertoires du type mon-site.com/deuxieme-site. Voir pour cela ici : http://drupalfr.org/document/configurer_plusieurs_sites_avec_la_meme_installation_de_drupal

    2. Sinon, oui, on télécharge et on installe dans le répertoire cible principal de l’hébergement.

    3. Toujours le répertoire principal

  9. Stephen Burman dit :

    Merci JPG pour la question et merci Stéphane pour la réponse.

    Ça vaudrait la peine d’inscrire cette particularité en début de page afin qu’on puisse la lire avant l’installation.

  10. chris dit :

    J’ai un problème du même ordre. Je dois dire que je suis assez « end-user ». Il s’agit d’un hébergement mutualisé chez OVH.

    J’ai installé Drupal dans un répertoire /drupal

    J’ai un premier domaine (www.domaine1.com) qui pointe sur /www
    J’ai un deuxieme domaine (www.domaine2.com) qui pointe vers /www/drupal

    J’ai donc crée un répertoire /sites/domaine1.com.drupal
    et un répertoire /sites/domaine2.com

    Dans les 2, j’ai copié le ficher default.settings.php et renommé en settings.php. Dans /default, j’ai essayé avec et sans settings.php. Si je ne mets pas de settings.php dans default :

    J’entre l’url « www.domaine2.com », j’ai le script d’install qui s’exécute, je choisis la langue et sur l’étape suivante j’obtiens :
    ================================================
    Requirements problem

    The following error must be resolved before you can continue the installation process:
    The Drupal installer requires that you create a settings file as part of the installation process.

    Copy the ./sites/default/default.settings.php file to ./sites/default/settings.php.

    Change file permissions so that it is writable by the web server. If you are unsure how to grant file permissions, please consult the on-line handbook.

    More details about installing Drupal are available in INSTALL.txt.

    Please check the error messages and try again.

    ================================================

    Je ne comprends vraiment pas pourquoi Drupal essaie de trouver le fichier settings.php par defaut

    Celui-ci etait nécessaire malgré la présence du fichier dans le sous répertoire ? Pourquoi ne trouve-t-il pas ce sous-rertoire ?

    Merci infiniment pour toute aide, cela fait 6 heures que je suis sur le problème et cela dépasse de loin mes compétences.

  11. Stephen Burman dit :

    Chris, je suis débutant aussi.

    Je crois qu’il faut que tu aies, du moins pour le premier site, à la fois les fichiers « default.settings.php » et « settings.php » dans le répertoire ./sites/default.

    On demande de copier (sans l’effacer) « default.settings.php » et le renommer « settings.php ».

  12. Rémi dit :

    Bonsoir,

    J’ai le même problème d’installation multi-site drupal et wamp en local.
    Est-ce que vous avez trouvé la solution.

    Pour ma part, j’ai créer 2 alias :

    http://localhost/site1.com qui pointe sur c:/wamp/www/drupal/

    et un autre http://localhost/site2.com qui pointe sur c:/wamp/www/drupal/

    Je copie le contenu du dossier default dans mes dossiers site1.com et site2.com et j’efface le dossier le dossier default.

    Puis je lance mon installation avec l’adresse : http://localhost/site1.com/install.php. Drupal me demande la langue et je passe au second écran et là boum. Impossible d’avancer puisqu’il cherche dans le dossier default que j’ai effacé et pas dans le dossier site1.com.

    Du coup bloqué, vous avez une solution ?

    Je suis en Drupal 6.13/php 5.2.11/2.2.11 –> wamp 2.0

    Merci par avance.

  13. Rémi dit :

    Personne n’a une idée ? ça me permettrai d’avancer avec deux sites au moins

    Merci

  14. Lektum.info » Mon guide Drupal (5) : régler les droits d’accès et finaliser un site Drupal dit :

    [...] Mon guide Drupal (1) : installer un site ou une plateforme multi-sites sous Drupal [...]

  15. Anto dit :

    Alors pour un multi-site en local tout est dans le tuto, je m’explique:

    L’adresse en local généré par Apache est sous cette forme:
    http://localhost/site1.com/

    Donc le dossier que vous devrez créer dans « wamp/ www/drupal/sites/  » est

    Suspens…

    « localhost.site1.com »

    Et oui les slashs sont des points pour le répertoire.
    Si si c’est dans le tutoriel:
    « http://bonjour.com/travail, il faut nommer le sous-répertoire dans sites de la manière suivante : /sites/bonjour.com.travail. »

  16. multras dit :

    J’ai pas compris le procédure au début de ce tuto :
    au début vous dites : Télécharger, décompresser et installer Drupal comme s’il n’y avait qu’un seul site
    donc il s’agit de lancer l’installation ici, ou juste copier les fichier de drupal sur le serveur ???

    Parce que dans l’étape suivante vous dites : Ne pas lancer maintenant l’installation automatique et, par conséquent, ne pas utiliser la configuration /sites/default

    Merci pour la précision

  17. Stéphane Vial dit :

    Vous avez raison, ça prête à confusion. Quand je dis « installer » au début de la procédure, je veux dire seulement copier les fichiers sur le serveur puisqu’il ne faut justement PAS lancer l’installation tant que les dossiers dans /sites ne sont pas nommés comme il faut selon votre projet. A +

  18. Alji dit :

    et justement c’est ce que j’ai fait il y a longtemps , je n’avais pas l’intention de créer une multi-sites mais la c’est prioritaire.

    Mon probleme est le suivant , je n’ai pas respecté cette étape :

    Je suis vraiment coincé je n’arrive pas à avancer , est ce que vous pouvez m’expliquer comment il faut faire pour contourner cette erreur !

    Merci

  19. Stéphane Vial dit :

    Si vous n’avez pas encore commencé à produire du contenu sur votre site, le mieux est de recommencer proprement l’installation. Sinon, ça veut dire que vous avez utilisé l’installation qui passe par /sites/default et là je crains qu’une tentative d’installation multi-sites écrase le premier site. Cela dit, vous pouvez quand même essayer de créer un autre répertoire dans /sites et de vous rendre à l’adresse qui lui correspond pour voir ce que Drupal vous propose. Peut-être va-t-il vous proposer d’installer un nouveau site, précisez bien un préfixe de table différent, MAIS ATTENTION JE NE VOUS GARANTIS PAS QU’IL NE VA PAS ÉCRASER LE PREMIER SITE, JE N’EN SAIS RIEN DONC FAITES UNE SAUVEGARDE AVANT.

Laisser un commentaire

NB. Pour afficher votre avatar avec votre message, enregistrez-le d'abord sur gravatar.com (gratuit). Postez ensuite votre message en indiquant la même adresse e-mail.

Billet précédent :

Billet suivant :

Haut de page  ↑