Message d'avertissement

The subscription service is currently unavailable. Please try again later.

Multi-domaine : c'est possible ?

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.

Hello,

Je voudrais mettre en place une seule installation de Drupal pour faire tourner plusieurs sites. L'idée est d'avoir une seule base de données, une seule copie de Drupal (avec ses modules et thèmes) sur mon serveur, mais plusieurs noms de domaine (www.siteA.com, www.siteB.com...) qui pointent tous vers cette installation.

Idéalement, chaque site serait complètement indépendant des autres, avec son propre thème, son propre contenu, ses propres utilisateurs...

1) Est-ce possible ?
2) Est-ce possible sans avoir plusieurs bases de données (ou sans devoir dupliquer+préfixer certaines tables) ?

Merci,
Vincent

PS. Je ne connais rien au multidomaine avec Drupal, mais mon pressentiment est que ça n'est possible qu'en dupliquant certaines tables de la BDD.

PS. Je ne connais rien au multidomaine avec Drupal, mais mon pressentiment est que ça n'est possible qu'en dupliquant certaines tables de la BDD.
Après avoir jeté un oeil sur la table users, aucun champ ne semble être prévu pour différencier les sites d'appartenance d'un utilisateur. Donc il y aurait au minimum duplication de cette table...

D'autres problèmes avec une telle architecture : la table variable, la table cache, le fait que les modules contribués ne sont pas conçus dans un esprit multisite notamment ceux qui créent des tables dans la base. Par exemple comment devrait se comporter un CCK, un scheduler, un views, un signwriter, un webform, un contemplate... ?

Tout à fait d'accord, Zigazou. Je pensais à la même chose : les nodes CCK. Les tables créées par CCK utilisent-elles le db_prefix du site en cours (s'il y en a un) ?...

Bref, à ce stade, la solution la plus viable me paraît de mettre en place un "parc" (farm) d'installations Drupal, et de trouver un moyen d'automatiser leurs mises à jour/synchronisation.

Le problème, c'est qu'il y a de plus en plus de réglages qui sont enregistrés dans la base de données (la définition des nodes CCK, les views...) et sont donc difficiles à porter d'un site à l'autre. Avant, quand on créait un custom module, il suffisait de le copier sur tous les sites où on en avait besoin. :)

Tout à fait d'accord, Zigazou. Je pensais à la même chose : les nodes CCK. Les tables créées par CCK utilisent-elles le db_prefix du site en cours (s'il y en a un) ?...
Je pense que oui.
Le db_prefix est ajouté par les fonctions db_query de Drupal quand tu mets le nom de la table entre accolades (ex. SELECT * FROM {node} n).

oui, CCK met bien les accolades autour de ses tables :-)

Plus généralement pour le multisite et le partage de tables, le fichier settings.php contient des infos sur la manière de préciser quelles tables utilisent quels préfixes - et donc quelles tables vont être partagées entre tes sites et quelles tables vont être présentes en un exemplaire par site.
Plus d'infos aussi sur http://drupal.org/node/2622

En revanche, c'est vrai que puisque CCK a des tables dynamiques, créées et supprimées selon les actions de l'admin sur ses types de contenus (c'est à ma connaissance le seul module qui ait cette caractéristique, tous les autres utilisent des tables définies une fois pour toutes), ca complique sans doute le réglage du settings.php sur ces tables dont tu ne connais pas le nom à l'avance.

Bon, globalement, CCK ou pas, bidouiller le partage des tables, c'est du haut vol, et c'est à toi de savoir ce que tu fais. Certains réglages peuvent avoir des conséquences étranges et/ou graves, et difficiles à débugger... donc le conseil de départ c'est quand même fonctionner avec deux bases distinctes si tu peux.

Après, par exemple si tes deux sites doivent parteger la table d'utilisateurs, tu as des liens intéressant là dedans : http://www.google.com/search?hl=fr&q=site%3Adrupal.org+share+users