Multi-site avec domain access

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour à tous!
Je me suis lancé dans la partie multi-sitede drupal.
J'ai vite trouvé le module domain access qui est assez étonnant de par sa puissance.

Il permet notamment de partager certaines informations parmi tous le sites, de dupliquer certaines informations ou bien d'exclure et de séparer les tables entre les domaines (chaque domaine possède ses propres données).

Ce module permet pour un utilisateur donné de lui assigner un site et de publier exclusivement pour ce site.

Quelqu'un a-t-il déjç utilisé ce module ou bien sa propre solution pour faire du multisite?? Comment avez-vous géré les droits d'accès, car le multisite complique encore plus la gestion des droits...

Ce post est ouvert, toute contribution sera la bienvenue!! Le multi-site reste encore méconnu...

Forum : 
Version de Drupal : 

Pour la plupart des fonctionnalités que tu cites, un module supplémentaire n'est pas nécessaire ; tu peux configurer les fichiers settings.php de telle sorte que plusieurs sites partagent la même bdd, certaines tables étant préfixées (celles qui sont spécifiques à chaque site) et d'autres pas (celles qui contiennent les infos communes) ; par exemple tu peux définir des rôles communs mais avoir des utilisateurs distincts sur chaque site (ils ne peuvent donc écrire que sur un site) : role et permission ne sont pas préfixées, users et users_roles le sont.

Il faut examiner la bdd pour déterminer quelles tables doivent être préfixées, selon ton besoin.

En revanche je n'arrive pas à partager des types de contenus (enfin, les types de contenu eux-mêmes si, mais pas les champs personnalisés qui ne sont accessibles que sur le site principal, ce qui n'a pas grand intérêt). Le CCK semble avoir une façon "à lui" de gérer les préfixes ; si quelqu'un connaît une solution, je prends.

Je vais regarder ce module Domain access, mais a priori il ne fait pas ce que je veux.

(http://drupal.org/node/201673 pour la petite manip : comment paramétrer plusieurs sites sur une même bdd. écrit pour D5, mais la logique est la même pour D6)

edit : toujours dans la doc de drupal.org (qu'elle est mal organisée, grands dieux !) Share a single database across multiple sites et les pages enfant.

Je m'incruste sur le fil, ma problématique est connexe. Il est en théorie possible de partager des choses en utilisant des bdd différentes. Mais je n'y suis jamais arrivé. J'héberge une petite série de sites drupal en multisite, et j'utilise un outil tiers pour les sauvegardes et restaurations (mysqldumper, pour ceux que ça intéresse). Et à chaque fois je me tartine les traductions, qui font une quantité impressionnantes d'entrées (10.000 environ) et qui pourraient largement être partagées. Plus quelques autres trucs...

Si quelqu'un y est arrivé, je suis preneur.

Cordialement,

Philippe LAGARDE

Il est en théorie possible de partager des choses en utilisant des bdd différentes.

Non, il faut utiliser la même base de données, en préfixant certaines tables ; c'est le système expliqué dans la page que j'ai indiquée sur drupal.org ; le module Domain Access te permet aussi de faire beaucoup de choses.

Par "je n'y suis jamais arrivé", entends-tu que cela pose problème à long terme (ce sur quoi je n'ai aucune visibilité) ?

Salut tout le monde,

Je suis en plein dans le sujet, je me suis lancé dans le multisite avec subdomaines, à BDD distinctes mais utilisateurs partagés.
J'ai suivi la méthode citée par imageum à qui je dis tout de suite que ça n'est pas vraiment compliqué, je l'ai achevée avec des BDD non-vierges et PHPMyAdmin. N'importe quelle table peut-être partagée.
Dans mon cas, les utilisateurs ayant le rôle suffisant pour créer ou éditer du contenu particulier dans un domaines ne sont désormais que des utilisateurs authentifiés dans les autres.

Par ailleurs si Marie-Hélène écrit Non, il faut utiliser la même base de données, en préfixant certaines tables, je lui réponds que ça n'est pas une nécéssité et que dans certains cas une BDD/domaine est préférable pour des raisons de performances et de sécurité ( Avec une seule BDD pour tous les domaines tu risques de perdre plus qu'avec une BDD/domaine )
Cela dit je suis d'accord avec Marie-Hélène sur le point suivant lequel un module n'est pas nécéssaire, en jouant avec le préfixage ou les BDD distinctes avec tables partagée on peut faire mieux qu'avec Domaine Access qui a des limites telles que si on autorise la création d'un contenu particulier à un utilisateur dans plus d'un domaine, il pourra le faire dans tous les domaines.

J'oubliais,

Une petite info qui peut servir, je voulais que mes utilisateurs qui se loguent dans un domaine le soient dans tous, il est dit à la fin de la méthode citée par imageum qu'il faut utiliser le module Shared Single Signon, mais après quelques recherches, il s'avère qu'un module n'est pas nécéssaire, il suffit de décommenter et de compléter la ligne $cookie_domain = 'example.com'; dans le fichier settings.php de chaque site.
La magie Drupal ;-)

bonjour à tous, je viens rajouter ma petite pierre à l'édifice, avec une petite interrogation tout de même ;) !

En gros j'ai suivi les procédure décrites dans les liens donnés ci-dessus en faisant une espèce de mixup. Mon objectif pour le moment est d'avoir un multi-site, partageant uniquement les utilisateur avec une seule bdd et une connexion unique.

  • installation classique d'un site principal (avec la mise en place d'un domaine dans le fichier hosts et d'un virtualhost. nommons le principal.com)

  • Mise en place de l'infrastructure serveur pour l'installation d'un sous-sites (modif du fichier hosts et d'un second virtualhost avec un nom du style sous-sites.principal.com)

  • Création du répertoire sous-sites.principal.com dans le répertoire sites/ du site principal.

  • Lancement de la procédure d'installation du sous-site en renseignant la champ préfixe de table de manière classique et création de la base (ici disons par soussite_).

  • Modif du fichier dans sites/sous-sitesettings.php en remplaçant

$db_prefix = 'soussite_';

par :

$db_prefix = array(
'default' => 'soussite_',
'users' => '',
'sessions' => '',
      );

et la ligne

#$cookie_domain = 'example.com';

par

$cookie_domain = 'principal.com';

(cette dernière modif signalée juste au-dessus par willzzz permet la connexion unique sur tous les domaines et sous domaines appartant à principal.com. comme c'est préciser dans son post il faut la réaliser dans le fichiers settings.php de chaque site)

  • Suppression des tables soussite_users et soussite_sessions
  • fin de l'install dans le navigateur en renseignant les champs admin du site et mot de passe par les mêmes données que mon site précédent.

C'est là que j'ai une petite question :

comme il semble que l'utilisateur dont l'uid est 1 dans une table partagée users , est-ce que procéder jusqu'au bout de l'install sans se prendre la tête comme je le fais à aller modifier le fichier settings.php en cours de route, et ne faire ces modifs que à la fin (ainsi que la suppressions des tables et donc des admin des sous-sites) permet tout de même à l'admin du site principal d'être identifié en tant que tel sur tous les sites ?

(euh je sais pas si c'est bien clair comme question....)

Merci à ce qui la comprennent ;)... s'il faut reformuler la question dîtes-le moi !

... 10 mois plus tard ...

je confirme, concernant la dernière question et pour l'avoir fait à l'instant, que l'on peut aller jusqu'à la fin de la procédure d'installation et faire les modifications dans le fichier settings.php ainsi que les suppressions de tables dans un second temps.

Merci à tous.

Après autant de temps, j'imagine que chacun à eu sa réponse.
Néanmoins, nous avons utilisé Domain Access pour un site pour lequel notre client souaitait avoir 2 sous domaines distinct pointant sur 2 parties du sites complètement différentes : et cela fonctionne parfaitement !

Il est même possible avec ce module d'associer certains points de paramétrage à un domaine en particulier. On s'est par exemple rendu compte hier qu'il était possible d'indiquer à Drupal que les nouveaux utilisateurs devaient être validés par un administrateur lorsqu'ils créaient leur compte sur un sous domaine, et qu'ils devaient être automatiquement validés au moment de la création de leur compte sur l'autre sous domaine.

Ce module peut être très utile si vous devez fonctionner avec plusieurs sous domaine et une seule base de données (par exemple pour faire des consolidations de données, pour n'avoir qu'une seule zone d'administration, etc.).

Cordialement,