Des petits sites, des gros sites, des micro sites avec Drupal 8

Une tête de Girafe

Drupal 8 est un outil dimensionné pour répondre aux besoins des projets web les plus ambitieux. Nous entendons beaucoup parler des notions de headless, de API first, de découplage, etc. qui résolument permettent des architectures solides pour projets ambitieux. Mais ce n'est pas pour autant que Drupal 8 ne propulse plus des sites plus classiques, et voire parfois beaucoup moins ambitieux : de simples, petits, sites Internet, mais pour lesquels nous souhaitons bénéficier de la modularité, de la souplesse et de la robustesse de Drupal.

Drupal 8, une solution d'industrialisation pour des sites petits ou grands

Drupal est aussi une solution qui propose différentes architectures possibles pour industrialiser la production de sites internet. Un besoin récurrent, celui de pouvoir générer et gérer simplement de multiples sites, rapidement, revient souvent pour des projets dont l'ambition ne porte pas sur la complexité d'un site unique mais sur la simplicité de gestion d'une multitude de sites, plus ou moins complexes.

Drupal 8 nous propose plusieurs solutions possibles pour mettre en place une usine à sites, i.e. pour industrialiser la production de sites Internet : l'architecture multi-sites native à Drupal 8, et le module Domain Access.

L'architecture multi-sites native à Drupal permet de générer et maintenir de multiples sites Drupal 8 indépendants qui reposent sur le même socle, la même base du coeur de Drupal et de ses modules contribués, tandis que Domain Access propose de propulser différents sites depuis une seule et même instance Drupal 8 en séparant simplement les contenus au moyen des droits d'accès. Néanmoins chacune de ces solutions présentent des avantages et des inconvénients. La maintenance d'une multitude d'instances Drupal 8 sur une architecture multi-sites peut rapidement devenir complexe et chronophage et un de ses avantages, le time to market, peut être mitigé selon l'organisation plus ou moins complexe au sein d'une structure et de son IT. Tandis que Domain Access peut nécessiter de nombreuses adaptations, voir rencontrer certaines limites, dès lors que le nombre de sites propulsés, ou selon la nature différente des sites souhaités, atteint un certain stade.

Après cette brève introduction des solutions disponibles pour mettre en place une usine à sites Drupal, le propos de ce billet n'est pas de rentrer dans le détail de chacune d'entre elles, mais de présenter une troisième voie possible, basée sur le module Micro Site, et ses nombreux modules contribués.

Propulser une multitude de Micro Site avec Drupal 8

L'idée principale de l'architecture multi-sites proposé par le module Micro Site s'appuie sur l'idée principale suivante :

Etre en mesure de publier un nouveau site aussi simplement et rapidement que de publier un blog post

En fait son concept peut être comparé à la solution multi-sites proposée par Typo 3, et peut-être même qu'elle aura inspiré en grande partie la génèse du module Micro Site.

Typo 3 multi-sites

Typo 3 permet à un administrateur, voir un simple webmestre, de créer simplement un nouveau site, de paramétrer son URL et certaines propriétés de base (nom, logo, etc), d'affecter des utilisateurs à ce nouveau site et de leur déléguer des droits, puis simplement il n'y a plus qu'à publier des pages liées à ce nouveau site pour rapidement disposer d'un site autonome tant en contenu qu'en matière de gestion, tout en étant géré et maintenu depuis une interface unique.

A l'instar de la solution multi-sites de Typo 3, le module Micro Site a pour vocation de :

  • Permettre de propulser et gérer des centaines (et plus si besoin) de sites au sein d'une même instance Drupal 8
  • Déléguer des droits de gestion d'un Micro Site au sein d'un espace d'administration dédié et simplifié
  • Permettre le partage de contenus et d'utilisateurs entre Micro Sites.
  • Réduire au maximum l'adhérence à une infrastructure IT complexe
  • Permettre une mise en ligne, le time to market, extrêmement réduite
  • Et bénéficier de toute la modularité de Drupal pour permettre de propulser des Micro Sites de nature différente

Les cas d'usage du module Micro Site (et de ses modules périphériques) sont multiples : des sites dédiés pour chaque département ou laboratoire d'une université, adosser au site institutionnel d'une entreprise des sites événementiels, des sites partenaires, des sites de marque, permettre à une fédération ou une association de proposer à ses membres un site Internet packagé prêt à l'emploi tout en facilitant les partages de contenu et disposer d'une base utilisateur commune, et de façon général permettre de propulser et gérer facilement et simplement une galaxie de sites Internet, de quelques dizaines à plusieurs centaines.

Architecture du module Micro Site

L'architecture des Micro Sites est extrêmement similaire au module Domain Access dans le sens où le système des droits d'accès bas niveau de Drupal 8 est utilisé pour séparer les contenus entre Micro Sites, mais diffère sur un point fondamental : tandis que Domain Access s'appuie sur des entités de configuration pour définir et créer les différents sites propulsés par une seule instance, le module Micro Site s'appuie quant à lui sur une entité de contenu qui va servir à fournir l'URL des Micro Sites et bien d'autres choses, comme par exemple donner la possibilité à des utilisateurs d'une instance Drupal 8, et qui n'en sont pas administrateur, de pouvoir créer et publier en toute indépendance un Micro Site.

En s'appuyant sur une entité de contenu, Micro Site permet nativement de pouvoir personnaliser à volonté, avec du simple site building et theming, en utilisant tout simplement la modularité offerte par Drupal 8, les différents types de Micro Site qu'on souhaite pouvoir propulser. Ainsi par exemple:

  • La page d'accueil d'un micro site est constitué par l'entité de contenu Site elle-même et peut donc être personnalisé à volonté sans aucune adhérence à une configuration générale de l'instance Maître Drupal.
  • Par un simple jeu de site building et de theming, tous les champs rajoutés sur une entité Micro Site peuvent être utilisés sur l'ensemble des contenus constituant le micro site. Ainsi le footer d'un micro Site peut être configuré en quelques clics, et une modification d'un template, par le simple ajout de quelques champs dédiés sur l'entité de contenu fournie par Micro Site.
  • Toute personnalisation, besoin métier complexe, pour un type de Micro Site peut être ajouté en utilisant tout simplement l'eco-système de Drupal 8. 

Micro Site, la solution qui fait même le café ?

Comme toute solution d'industrialisation, sauf à être la solution universelle ultime, le graal enfin trouvé, qui fait même le café, Micro Site a ses points forts et points faibles par rapport aux autres solutions d'industrialisation. Si l'architecture multi-sites native de Drupal 8, du fait que chaque instance de l'usine à site est un site Drupal 8 complet, indépendant, permet de bénéficier out of the box de tout l'écosystème des modules contribués de Drupal 8, cela est moins vrai avec une architecture basée sur Micro Site.

Certains modules pourront fonctionner out of the box, sans intégration spécifique, du fait de leur nature (un module qui fournit un widget de champ spécifique comme par exemple jQuery minicolors, ou encore le module Paragraphs), d'autres modules nécessiteront une intégration très légère, par une simple altération de leur configuration, comme par exemple le module Matomo, tandis que des modules fournissant des entités de contenus (comme le module Bibliography & Citation ou encore Simplenews) nécessiteront une intégration plus complète.

Les Micro Sites disposent nativement d'une gestion simplifiée des utilisateurs et de leurs droits afférents sur un Micro Site et ses contenus associés. L'idée étant de couvrir 80% des cas d'usage avec une solution immédiate, simple et efficace. Ainsi un Micro Site dispose en standard de 4 types d'utilisateur (outre le propriétaire du Micro Site) qui sont :

  • Les administrateurs : qui disposent de tous les droits
  • Les gestionnaires de contenu : qui disposent des droits de modification sur tous les contenus liés à un micro site
  • Les contributeurs : qui peuvent publier un contenu lié à un Micro site, et modifier leur propre contenu
  • Les membres : qui peuvent simplement consulter les contenus non encore publiés

Concernant des besoins plus complexes ou plus spécifiques, Micro site n'a pas vocation à les traiter nativement. Mais tout simplement, ces besoins pourront être traités au moyen de quelques altérations, ou encore l'ajout de champs spécifiques, et l'application de leur logique métier au moyen d'un module personnalisé.

Micro Site n'est donc pas la solution ultime qui pourra couvrir tous les cas d'usage en quelques clics. Par contre elle vous offre une architecture solide, un espace d'administration et les API nécessaires à toute altération pour atteindre le résultat  souhaité. Et pour les usages et besoins les plus courants, il est possible de créer et modifier ses Micro Sites de la même manière qu'on peut gérer différents types de contenu avec Drupal 8. 

L'écosystème de Micro Site

Micro Site est le module coeur, fournissant les entités Site, ainsi que les principales API. Néanmoins, avec le module Micro Site seul, nous ne sommes en capacité que de créer un micro site de type One Page, page unique qui sera constituée par l'entité Site elle-même. Mais plusieurs modules étendent les capacités des Micro Sites, permettant de dépasser le cadre d'un simple site One Page, dont les principaux sont les suivants.

Micro Node

Micro Node est le module qui permet d'intégrer les contenus au sein d'un Micro Site. Ainsi il permet de configurer au sein d'un instance Maître les différents types de contenus qui seront disponibles pour les Micro sites. Ces paramètres peuvent être alors modulés pour chaque type de Micro Site. Et nous pouvons publier des contenus sur un Micro Site, ou plusieurs Micro Sites, voire sur l'intégralité des Micro Sites. 

Micro Menu

Le module Micro Menu permet de créer un Menu et de l'allouer exclusivement à un Micro Site. En outre il permet une sélection automatique de ce menu lors de l'édition ou création d'un contenu, permettant d'associer directement un contenu à une entrée dans ce menu lorsqu'on est dans le contexte d'un Micro Site.

Micro Theme

Le module Micro Theme permet de déclarer pour chaque thème activé si celui-ci peut être utilisé par un Micro Site. Par défaut les Micro Site vont utiliser le thème par défaut, mais il est alors possible d'affecter à chaque Micro Site une thème différent selon les besoins. En outre le module Micro Theme propose une interface permettant de modifier dynamiquement certaines couleurs du thème, les polices de caractères utilisées, à l'instar de ce que l'on peut trouver avec le module Color du coeur. Cette interface propose par défaut un certain nombre de couleurs pouvant être paramétrées, variables qui peuvent être étendues, et pour lesquelles il conviendra de fournir un fichier CSS correspondant, permettant ainsi d'adapter cette interface à n'importe quel thème utilisé.

Micro Taxonomy

Le module Micro Taxonomy permet d'intégrer la taxonomie d'une instance Drupal 8 avec les Micro Sites. D'une part en permettant d'allouer un vocabulaire dédié à chaque Micro Site, mais aussi en pouvant rendre accessible des vocabulaires communs à des types de Micro Sites, leur permettant de consommer ou de créer des termes de taxonomy au sein de ces vocabulaires communs et partagés.

Micro Path

Le module Micro Path permet de gérer automatiquement des alias d'URL identiques sur plusieurs Micro Site. Ainsi deux contenus publiés sur deux Micro Sites différents peuvent disposer du même alias. En outre ce module permet également de créer des motifs d'alias automatique spécifiques par Micro Site, pour les types de contenus disponibles, permettant de modifier des motifs d'alias automatique configurés de façon générale sur l'instance Maître.

Micro SSO

Le module Micro SSO permet de mettre en place une authentification SSO depuis l'instance maître vers chaque Micro Site.

Micro User

Le module Micro User permet de contrôler au niveau de chaque Micro Site et/ou de l'instance Maître quel utilisateur peut se connecter sur un Micro Site ou sur l'instance Maître. Son périmètre fonctionnel est en attente de cas d'usage qui pourraient nécessiter une extension de ses fonctionnalités.

Micro Sitemap

Le module Micro Sitemap permet d'intégrer le module Sitemap dans le contexte de chaque Micro site, permettant la personnalisation d'un plan de site automatique depuis chaque Micro site.

Micro Contact

Le module Micro Contact permet d'intégrer le module Contact de Drupal 8 au sein de chaque Micro Site, avec la possibilité de paramétrer quel formulaire de contact, configuré sur l'instance Maître, utiliser pour chaque Micro Site. A noter que l'utilisation des formulaires Webform peut être réalisé avec une simple construction d'un Paragraph permettant de charger et rendre un formulaire Webform, et qu'à ce titre une intégration spécifique n'est pas nécessaire. 

Micro Simple Sitemap

Le module Micro Simple Sitemap permet de générer un fichier sitemap.xml pour chaque Micro site. A noter que ce module intègre le module Simple Sitemap dans sa courante version 2.x, et donc tous ses paramètres faits sur une instance maître, mais qu'il n'est pas exclut de recourir à une méthode plus simple, de façon autonome, pour générer des fichiers sitemap XML pour chaque Micro Site.

Micro Bibcite

Le module Micro Bibcite permet d'intégrer le module Bibliography & Citation avec un Micro Site. A ce jour seules les entités de contenu Référence fournies par ce module sont supportées.

Au final, ces différents modules permettent de pouvoir publier des micro sites pouvant répondre à de nombreux besoins éditoriaux.

Bref aperçu des fonctionnalités d'un Micro Site

En préambule, en raison de la permission "Outrepasser les droits d'accès" attribué automatiquement au User-1, il convient de ne pas utiliser cet utilisateur spécifique dans la gestion d'une instance Drupal avec le module Micro Site, et donc le rôle spécial Administrateur. Sans quoi, cet utilisateur aura la désagréable surprise de voir tous les contenus publiés sur tous les Micro Sites et tout ceci joyeusement mélangé. Il faut donc créer un nouveau Role, auquel vous pourrez attribuer tous les droits, sauf le droit Outrepasser les droits d'accès, et affecter à un administrateur ce rôle. Ceci tant que cette problématique Remove the special behavior of uid #1 n'aura pas été résolue.

Configuration générale

Le module Micro Site fournit l'architecture de base pour créer et publier un nouveau site, avec une nouvelle entité de contenu Site. Il fournit également une configuration générale de l'instance Maître. La première action à réaliser sera de configurer de façon globale l'URL de base de l'instance Maître propulsant les Micro Sites, ainsi que l'URL publique de cette instance (qui peut être la même que l'URL de base).

Micro site Settings

Nous pouvons configurer de façon globale quels seront les types de contenus qui pourront être utilisés par les Micro Sites. Ces paramètres peuvent être modulés par type de Micro Site.

Micro node settings

Nous pouvons également configurer quels seront les vocabulaires pouvant être utilisés par les Micro Sites. Ces paramètres peuvent être également modulés par type de Micro site.

Micro taxonomy settings

Création des types de Micro Site 

Ensuite il est possible de créer différents types de site (One Page, Générique, Evénementiel, Département, Marque, etc.) pour être en mesure ensuite de les configurer différemment.

Micro Site Types

Chaque type de site peut être configuré différemment, en fonction des options proposés par les modules contribués, notamment Micro Node ou encore Micro Taxonomy.

Micro Site Type Configuration

Ainsi il est bien sûr possible de rajouter autant de champs que nécessaire sur un type de site, à l'instar d'un type de contenu, mais également de configurer quelques options générales qui seront disponibles alors pour tous les Micro Sites de ce type qui seront créés. Nous pouvons configurer pour chaque type de site :

  • La création automatique d'un menu dédié pour chaque Micro site
  • La création automatique d'un vocabulaire dédié et réservé exclusivement à chaque Micro Site créé
  • La possibilité de gérer des utilisateurs et leurs différents profils sur chaque Micro site de ce type
  • Les différents types de contenus présents sur l'instance maître qui pourront être utilisés par chaque Micro Site
  • Les différents vocabulaires présents sur l'instance maître qui pourront être utilisés par chaque Micro site

Gestion et création des Micro Sites

Les Micro Sites peuvent ensuite être créés et gérés comme les types de contenu d'un site Drupal 8.

Sites list

Un Micro Site dispose de deux statuts : Enregistré et Publié. 

Le statut Enregistré va permettre de valider l'URL du Micro Site, ainsi que la présence d'un Virtual Host valide. Dès qu'un Micro Site est Enregistré, tout accès au Micro Site renvoie automatiquement sur l'URL du Micro Site. Le statut Enregistré conditionne l'accès aux menus de gestion et de création de contenus associés à un Micro Site. Autrement dit, il est impossible de commencer à créer des contenus associés à un Micro Site tant que celui-ci n' pas été enregistré.

Le statut Publié est quant à lui plus classique. Un site non publié sera uniquement visible par son auteur, ou ses membres (et s'ils disposent de la permission adéquate), ainsi que tout contenu associé à un Micro Site non publié.

Gestion d'un Micro site

L'idée maître est ici qu'un micro site puisse être administré de façon complètement indépendante de l'instance Maître, par de simples utilisateurs. A la limite, un gestionnaire d'un micro site pourrait même ne pas savoir que son site est hébergé sur une instance Drupal maître. Un Micro Site dispose d'un espace d'administration accessible depuis les Local Tasks présent sur la page d'accueil du Micro Site.

Site local tasks

Ainsi on peut personnaliser à volonté les différents écrans qui peuvent constituer l'administration d'un Micro Site vis à vis des différents champs qui lui ont été rattachés.

Dans l'exemple ci-dessous le formulaire par défaut d'un Micro Site permet de modifier et visualiser les éléments suivants :

  • Le nom et l'adresse Mail du Micro Site
  • Les statuts du Micro Site
  • Les différents champs permettant de renseigner le haut de page du Micro Site, sa Page d'accueil et son Pied de page (l'usage de paragraphes permet de disposer d'une grande souplesse quant au contenu de ces différents éléments)
  • Les informations des Metatags
  • L'URL du Micro site
  • Le Propriétaire du Micro Site
  • Le Logo et le Favicon du Micro site

Site edition default form

Et un autre mode de saisie, intitulé Configuration, a été créé et configuré (cf. Fournir un formulaire personnalisé aux entités de Drupal 8) pour regrouper d'autres champs permettant de configurer le comportement du Micro Site. Par exemple ci-dessous :

  • Les utilisateurs du Micro Site
  • La configuration de Matomo / Piwik pour ce Micro Site
  • La gestion des assets pour ce Micro Site (autrement dit la possibilité d'écrire quelques règles CSS spécifiques pour ce Micro Site)

Site edit configuration

 

Le module Micro Menu a ajouté un onglet permettant de gérer les entrées du menu dédié au Micro Site, directement depuis le Micro Site lui-même, sans devoir passer par le menu d'administration standard de Drupal.

Menu Micro Site

 

Le module Micro Node a ajouté un onglet Contenu permettant de gérer tous les contenus associés au Micro Site, de la même manière que sur une instance Drupal 8 classique

Site content

Le module Micro Taxonomy a quant à lui ajouté un onglet Taxonomie permettant de gérer le vocabulaire dédié au Micro Site, mais également tous les termes de taxonomie des vocabulaires partagés associés au Micro Site.

Site taxonomy

Nous disposons enfin d'un dernier onglet Paramètres qui peut servir à n'importe quel module contribué pour ajouter un écran de configuration spécifique à un Micro site. Par exemple ci-dessous la possibilité de créer un nouveau motif d'alias automatique spécifique à ce Micro Site.

Site settings pattern

Ce rapide survol / tour d'horizon de l'espace d'administration d'un Micro Site nous montre qu'un utilisateur peut ainsi administrer et gérer les contenus d'un Micro Site directement depuis cet espace, sans avoir besoin d'un accès d'administration à un quelconque paramètre sur l'instance Drupal Maître. Tout du moins sur les fonctions essentielles et nécessaires de gestion d'un Micro site.

Le design initial d'un Micro Site vise à permettre de publier et gérer d'innombrables sites Internet relativement simples, avec un espace de gestion dédié permettant d'opérer rapidement les opérations les plus courantes de gestion d'un site Internet. Un Micro site ne fait que regrouper au sein d'un espace unique un sous ensemble de fonctions d'administration de Drupal. Et il nous permet d'utiliser nativement, dans le contexte d'un Micro Site, les entités fournies par Drupal, sans altération ou presque. Nous pouvons ainsi bénéficier de toute la puissance de Drupal pour répondre à des besoins plus évolués si besoin. Besoin d'un Micro Site multilingue par exemple ? C'est tout simplement accessible sans effort, tout simplement en activant le multilinguisme sur l'instance Maître.

Micro Site est-il utilisable en production ?

La plupart des modules présentés ici sont encore en version alpha. Il reste assurément encore beaucoup de travail, tant au niveau de la consolidation des APIs, des différents cas d'usage à tester, que d'une couverture correcte en terme de tests automatisés, indispensable avant de pouvoir passer en version bêta. Et toute aide sera très certainement la bienvenue pour passer ce pallier.

Personnellement je les utilise déjà sur deux projets différents avec de très bons retours. La couverture fonctionnelle des modules de cet eco-système permet déjà de couvrir de nombreux besoins courants. Mais il existe très certainement des cas d'usage non encore couverts qui nécessiteront une intégration plus ou moins complexe.

Certains aspects interessants de Drupal nécessitent encore une intégration, comme la gestion des blocks et leur positionnement, au sein d'un Micro Site. Cette fonction peut bien sûr être géré au niveau de l'instance Drupal Maître elle-même en utilisant les paramètres de visibilité fournis par Micro Site, mais la question se pose de pouvoir déléguer ou pas cette fonction d'administration au sein d'un micro site. Toutefois, le recours aux Paragraphes, ou encore au nouveau module Layout Builder disponible avec le coeur de Drupal, permet dès maintenant de répondre à de nombreux besoins en terme d'agencement. Avec un zeste de site building pertinent, quelques retouches sur le theming et des templates adaptés aux différents types de site et le choix d'une architecture de contenu basé sur les Paragraphes, d'innombrables possibles sont déjà à portée de main sans devoir procéder à des altérations lourdes sur d'autres modules.

Quoi qu'il en soit, pour tout projet multi-sites envisagé sur un socle Drupal 8, Micro Site est une option supplémentaire à envisager sérieusement. A titre d'illustration, vous pouvez vous faire un rapide idée des possibilités offertes par Micro Site pour construire une usine à sites Drupal 8 qui propulse déjà quelques sites de nature différente comme par exemple celui-ci Freelance Drupal, un simple site One page, et d'autres encore. 

 

Commentaires

Soumis par gisles (non vérifié) le 29/12/2018 à 17:54 - Permalien

Bonjour,

J'ai testé les installations multisite de Drupal... Et je n'ai pas à ce jour mis en production ce type de propositions. Seulement, l'interface que vous proposez et la souplesse d'exécution de mise en œuvre est alléchante.

Mais voilà, je n'administre plus de serveur LAMP de A à Z depuis un bon bout de temps et je ne code plus également. Je suis donc un constructeur Drupal ou j'empile le moins de modules possibles... mais je teste parfois plus par curiosité et parfois par une ambition limitée à l'imbrication de modules.

J'en viens donc à l'objet de ce message. Mon hébergeur est Gandi.net. J'y gère mes noms de domaines et sous-domaine. Chaque sous-domaine créé par leur interface de gestion est lié à une création d'un répertoire à la racine de l'instance de l'hébergement simple. Le nom de domaine principale est donc au même niveau racine que celui de sous-domaine dans l'instance.

Il en vient ce problème de droit par ce message :
Le fichier temporary://fileoKcS1h n'a pas pu être déplacé/copié car le répertoire de destination /srv/data/web/vhosts/xxx.com/htdocs/sites/default/hosts n'est pas configuré correctement.

Est-il une astuce possible... ouverture de droits ?

Merci de votre réponse et joyeuses fêtes de fin d'années.

Gisles

Comme le spécifie le message d'erreur, le répertoire "hosts" doit être créé (sites/default/hosts) et Apache doit avoir les droits d'écriture dans ce répertoire. Quand vous enregistrez un nouveau micro site, le module écrit dans ce répertoire un fichier pour enregistrer le paramètre trusted host pattern correspondant à l'url du nouveau micro site. Cordialement.

Soumis par Raoh44 (non vérifié) le 07/01/2019 à 09:29 - Permalien

Bonjour,
Est ce qu'il est possible de choisir les langues autorisées par micro site ?

Merci pour votre réponse et bravo pour cette solution !

Merci pour votre réponse!
Est ce que le choix de la page d'accueil est administrable dans le BackOffice. Si oui merci de me transmettre le chemin de configuration de la page d'accueil pour chaque micro site.

Cordialement.

Soumis par Adam Carton de Wiart (non vérifié) le 27/07/2021 à 11:04 - Permalien

Bonjour est ce que micro site est encore maintenu et va-t-il être adapté pour Drupal 9 ?

Merci

Ajouter un commentaire