Episode 34 - Réaliser une installation multi-sites avec Drupal 7

Découvrez comment tirer parti de la puissance de Drupal 7 pour réaliser une installation multi-sites qui partagera les fichiers du cœur de Drupal, mais aussi les modules et la base de données de votre choix le cas échéant.

Niveau: 
Confirmé

Tags:

Partager

Commentaires

Portrait de BFPV974

Suite à la précédente vidéo, j'ai utilisé Acquia pour installer une version 7 de Drupal.
Pour bénéficier de cette installation :
- J'ai créé un répertoire monsite2.localhost sous sites comme indiqué.
- Ajouté les lignes suivantes dans le fichier vhosts.conf :

ServerName monsite2.localhost
DocumentRoot "F:\www\drupal7"

Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all

- Arrêté Apache et MySql puis redemarré.
Mais impossible d'accéder à http://monsite2.localhost:8082/ --> Firefox me rajoute un www devant monsite2 et dit que l'adresse est introuvable.
J'ai loupé quelque chose ??

Portrait de DrupalFacile

Bonjour,

Pour Acquia Drupal c'est bien plus simple que pour une installation maison. Il suffit simplement de spécifier un nouveau nom de base de données et surtout un nouveau sous-domaine, puis l'outil se charge de faire tout le travail !

Aurélien

www.drupalfacile.org
Apprenez Drupal en vidéo et en français !

Portrait de BFPV974

En majuscules, parce que vous le valez bien ! ;-)
Je commençais déjà à lorgner vers WAMP...
Je précise qu'il faut passer par le choix Import et non pas Nouveau site pour pouvoir accéder au répertoire des fichiers Drupal 7.
Et effectivement Acquia se charge de tout y compris la création du répertoire sous sites.
Tous les modules additionnels sont présents, il ne reste plus qu'à les activer ;-)
Encore un big merci pour la rapidité de la réponse.

Portrait de jief

Bonjour,

Super intéressant comme tuto, merci.

Pour aller plus loin dans la gestion des multisites, est ce qu'il y a moyen de partager du contenu, des menus entre plusieurs sites d'une même instance de drupal ?

Merci

Jief

Portrait de DrupalFacile

Bonjour,

Ça va un peu loin là, non ? En tous cas je ne vois pas comment c'est faisable et l'intérêt derrière ? Vous voulez faire quoi au juste, dupliquer des sites ?

Aurélien

www.drupalfacile.org
Apprenez Drupal en vidéo et en français !

Portrait de jief

J'ai du, il y a deux ans développer une plateforme avec un site maître, qui contenait beaucoup de contenu et plusieurs centaines de petits sites satellites.

Ces petits sites satellites reprenaient en partie le contenu du site maître et avait en plus du contenu propre a eux ainsi que leurs propres templates et leur propre administrateur qui ne pouvait éditer que son propre contenu.

A l'époque j'ai fait çà avec un CMS développé en interne mais je voudrais savoir si c'était relativement simple de faire la même chose en Drupal.

J'ai vu que l'on pouvait, mais Drupal le déconseille, de partager plusieurs tables entre plusieurs instances.
Je ne sais pas si vous avez une expérience a ce sujet ?

Merci pour vos réponse

Jief

Portrait de DrupalFacile

OK je comprends. Là on rentre dans des configurations bien spécifiques et ça devient vite dangereux quand il faut partager des tables entre plusieurs instances.

Pour ma part je n'ai pas eu de projets en ce sens mais peut-être que vous devriez poser une question sur le forum Drupal pour avoir un retour d'expérience ?

Aurélien

www.drupalfacile.org
Apprenez Drupal en vidéo et en français !

Portrait de PasKalou

Bonjour,
je relance ce sujet concernant le partage de données entre plusieurs sites.
J'aimerai faire un site portail avec une demi-douzaines de site satellites autours. Tels Framasoft avec Framagora, Framakey, Framapad, etc., j'aimerai avoir en haut de ma page un bloc navigation commun.
Savez-vous si c'est facilement réalisable ?

Par avance, merci
Pascal.

ps : au fait, je ne t'ai pas félicité pour ton site. Aspect sommaire, mais quelle efficacité. Un vrai plaisir. Bravo pour les tutos et merci pour le temps passé.

Portrait de Sweb

Tes vidéos sont très utiles.
Merci de prendre le temps pour les produire.

Portrait de Sweb

Bonjour,

Doit-on mettre tous les sites en mode maintenance avant de faire la mise à jour d'un module dans une installation multi-sites?

Portrait de DrupalFacile

Bonjour,

La bonne pratique veut qu'on mette le site en mode maintenance dès qu'on met à jour un module qui impactera une installation. Le multi-sites n'est que la réplication de la procédure à l'ensemble d'un nombre X de sites.

En ce sens, si un module est mis à jour pour un site donné dans une installation multi-sites, pas la peine de le faire pour tous. Si par contre ce module s'applique à tous les sites, oui, il faudrait le faire (et sauvegarder la/les bases ainsi que les fichiers) dans le meilleur des mondes.

Aurélien

www.drupalfacile.org
Apprenez Drupal en vidéo et en français !

Portrait de JMG

Bonjour,
En multisites, pour un site en plusieurs langues, on ne peu pas activer Détection et Sélection de la langue avec l’URL : une boucle de redirection bloque le site (index.php dans le htaccess ?) ... est-ce un bug connu ?

Portrait de JMG

Réponse à mon commentaire précédent (ça peut être utile) :
Globalredirect est le fautif :
http://drupal.org/node/1034126
En se servant du patch, tout fonctionne

Portrait de did1979

Bonjour,

Tes vidéos sont vraiment très claires et très intéressantes. Le multi-sites me semblait être une vrai montagne avec Drupal6. Mais avec ta vidéo ça change tout.

Merci.
did1979

did1979

Portrait de Darkserbere

Bonjour,

Le tuto est super. Mais j'ai un petit problème, je veux installé mes sites de manière interne et de façon à avoir :
http://tata-php5.tata/demonstration/multi-sites-public
http://tata-php5.tata/demonstration/multi-sites-professionel
http://tata-php5.tata/demonstration/multi-sites-personnel

Je n'ai pas l'habitude de ce genre de gestion donc je ne sais ni comment configuré mon vhost, ni comment configuré Drupal. quelqu'un peu m'aidé.

Pour info, je récupère bien mes sites de démonstrations quand je pointe sur mon listing (http://tata-php5.tata/demonstration) et quand je pointe sur mon dossier multi-sites (qui replace mon nom de dossier drupal) j'ai bien accès à la pages d'instalation de mon drupal default.

Portrait de Darkserbere

Bonjour tout le monde,

Je n'ai toujours pas réussi sur la façon de me faire un miltisites avec ma structure de démonstration mais stratégie oblige j'ai installé mon multisite de la la forme:

http://multi-sites-public.tata-php5.tata
http://multi-sites-pro.tata-php5.tata

Le seul petit hic qui n'est pas expliqué dans le tuto c'est la mise en place de clean's url avec le multi-site qui demande l'alteration du fichier HTACCESS. Et je n'ai pas encore trouvé. Si quelqu'un à une idée à me donnée. à savoir que je vais surement utilisé en plus le modules pathauto pour l'ensemble de mes sites afin d'avoir des URL SEF.

Pour ceux qui veulent faire du milti sites sous Drupal avec du partage de table entre les différents sites
Sachez que c'est un jeu d'enfant si vous connaissez bien les interaction entre les tables.
il suffit que dans les fichiers settings de vos sites vous utilisé le systeme de prefix de la façon suivante:

$$ligne 181 => 203 $$

$databases = array (
'default' =>
array (
'default' =>
array (
'database' => 'ARNAUD_MULTI',
'username' => 'ARNAUD',
'password' => 'devils',
'host' => '192.168.1.186',
'port' => '',
'driver' => 'mysql',
'prefix' => array(
'default' => 'multisites_public_',
'authmap' => 'commun.',
'role' => 'commun.',
'role_permission' => 'commun.',
'sessions' => 'commun.',
'users' => 'commun.',
'users_roles' => 'commun.',
'[nom de base de la table]' => '[prefix appeler]'
)
),
),
);

il vous suffit juste de préalablement copier les tables dans votre base de donnée (dans le cas d'un multi BDD) ou de lui collez un prefix différent en la copiant dans votre BDD.

Portrait de Netek

Bonjour,
Tout d'abord un grand merci pour ces vidéos qui sont très utiles !

Est il possible de modifier ( ou d'ajouter ) le préfixe des table sur un site drupal déjà installé ?
En fait j'aimerai exporter plusieurs sites DrupalGardens et utiliser la même bdd. Il me faut donc ajouter un préfixe différent aux tables de chacun de ces sites.

Merci d'avance pour votre réponse :)

Portrait de DrupalFacile

Bonjour,

Méfiance avec les modifications sur le schéma de base de données, c'est le meilleur moyen d'être confronté à des problèmes importants.

Néanmoins, si vous savez ce que vous faites (et que vous sauvegardez tout avant d'entreprendre quoi que ce soit), vous pouvez renommer vos tables et changer la valeur "prefix" dans le fichier settings.php, à l'endroit même où sont renseignées vos informations utilisateur, mot de passe, hôte SQL etc...

Aurélien

www.drupalfacile.org
Apprenez Drupal en vidéo et en français !

Portrait de Martin vdb

Encore une fois MERCI ET BRAVO pour vos tutos et vidéos !!!!!!!!!!!!!!
Petite question : mon site est en développement mais déjà chez mon hébergeur (et donc pas en localhost).
Puis-je (et si oui .. comment) créer un multisite dans cette configuration?
Je ne vois nulle part de fichier vhosts.conf
Mille mercis d'avance
Amicalement
Martin

Portrait de DrupalFacile

Bonjour,

Passer un site installé en standalone vers une configuration multi-sites requiert des opérations assez délicates (base de données, chemins vers les fichiers) qui peuvent rendre le site inaccessible. Il est donc conseillé de ne faire les opérations que s'il y a un réel besoin derrière.

Aurélien

www.drupalfacile.org
Apprenez Drupal en vidéo et en français !

Portrait de Martin vdb

Bonjour Aurélien,
Si je vous comprends bien, il serait plus sage de refaire une installation Acquia Drupal en local, tout développer en local et seulement ensuite mettre le(s) site(s) en ligne.
Ai je bien compris ?
Merci² (au carré :-) )
Martin

Portrait de cep73

Bonjour,

J'ai suivi avec attention la présentation de cette installation (épisode 34), mais malgré tous mes efforts, je ne parviens qu'à installer un seul site, le site par défaut. Toute demande ensuite pointe sur ce site.

Je précise que je suis chez un hébergeur en mutualisé ; que je n'ai pas acccès à la configuration des virtual hosts.

Mon hébergeur m'a conseillé la note http://drupal.org/node/960934, mais ça ne change rien.

Pouvez-vous m'aider ? La présentation suppose qu'un fichier virtual host a été créé. Comment faut-il l'adapter dans un cadre mutualisé chez un hébergeur ?

Bien cordialement.
Pierre

Portrait de UlysseUlysse

Certains hébergements ne donnent pas l'accès à la Modification de la configuration Apache, cela limite l'utilisation de cette option pour beaucoup d'utilisateur, dommage...

Portrait de NDIAYE

Cette video est très utile, vraiment claire !
Mais est ce que cela est est possible avec drupal 6 ?
Merci d'avance !

Portrait de Look74

Merci pour ce superbe tuto comme d'habitude ! mais une question! On ne parle pas ici du fichier défault qui est modifié ou peut ter crée au début ? Je comprends pas d'ou il sort ou il faut le mettre ?

Portrait de Michel

Bonjour et merci pour tout ce travail de partage.

J'ai installé me sites sur serveur distant en suivant la hiérarchie préconisée sur le tuto :
serveur/drupal/sites/monsite1.ext/files/settings.php
serveur/drupal/sites/monsite2.ext/files/settings.php
serveur/drupal/sites/monsite3.ext/files/settings.php
etc...

Au final, mes fichiers images en dossier public ont des chemins redondants :
h##p://vvvvvv.monsite1.ext/sites/monsite1.ext/files/styles/thumbnail/public/toto/photo1.jpg
=> on note que monsite1.ext apparaît 2 fois dans l'URL.

PB : Dans la BDD, monsite1.ext est écrit en dur. Résultat, en cas de changement de nom de domaine ou travail préalable en local puis déploiement sur serveur distant, les fichiers images sont introuvables.

Faut-il paramétrer plus finement le chemin des fichiers publics que j'ai laissé par défaut à :
sites/monsite1.ext/files ?

Ce qui explique -1- la redondance et -2- l'écriture en dur du nom de domaine dans la BDD.

Portrait de Herlock

Bonjour, j'ai passé la journée a lire tout les tutos au moins 15 fois, en anglais en français enfin bref, je suis passé par tout et je pense avoir compris le problème dans mon cas :
Drupal n'est pas installé a la racine de mon EasyPHP ( -> /www/drupal/)

Bref sous easyPHP le fichier pour configurer le virtual host est externalisé (cad qu'il n'est pas dans httpd.conf mais httpd-vhosts.conf).
Pour infos, sous 7 le port 80 est occupé par un serveur Apache interne, pour le garder j'utilise le port 100 (pas de problème a ce sujet je l'ai configuré dans Apache).
J'ai aussi testé de configurer le $base_url dans le settings.php... Useless
Tout ce que j'ai au mieux c'est un accès au site principal >< (simple redirection quoi)

Bref voici le résumé de mes actions et ce que j'ai concrètement :

Tout d'abord j'ai déjà un premier site mais il n'a pas était crée dans un dossier a part cad qu'il se trouve dans le dossier default. Je ne compte pas faire ca aussi salement mais je veux au moins que ca marche pour reprendre proprement plus tard. Il est configuré le plus basiquement possible.

Pour le dossier de Drupal :

/www/
--/drupal/
----/sites/
-------/all/
---------/default/
-----------/site1.local.com/ (a savoir que je suis passé par 100.site1.local.com, site.local etc etc)
-------------/site2.local (pas utile a préciser mais bon j'étais lancé xD)

Pour le fichier permettant la configuration des "VirtualHost"

httpd-vhosts.conf :

ServerName site1.local.com
DocumentRoot "C:\Program Files (x86)\EasyPHP-5.4.0beta2\www\drupal"

Pour le fichier hosts :

127.0.0.1 w3.rayonnance.fr
127.0.0.1 w3.rayonnance-distribution.fr
127.0.0.1 site1.local.com (j'ai essayé en configurant des ports etc. Enfin je viens en dernier recours doit y avoir un blem niveau redirection c'est pas possible)

Bref je crois que c'est tout, je vous écris ca en rapide car je suis au boulot et j'ai d'autres soucis Drupal a régler ^^
(Demandez-moi les infos manquantes s'il y'en a)

Merci à vous tous!

Portrait de PROTIN Johan

Bonsoir,

La vidéo est excellente, après avoir créer mes deux site :
- site1.localhost
- site2.localhost

J'ai partagé dans settings.php de mon site2 les tables users et sessions afin de pourvoir me connecter facilement sur les deux sites avec le même user.

J'ai lu sur d'autres tutos, qu'il faut activer $cookie_domain pour que quand je me connecte sur site1.localhost, je vais sur site2 et je reste connecter.

étant en localhost sur Drupal 7 que faut-il mettre exactement dans cette variable $cookie_domain

parce que la connexion fonctionne sur site1.localhost et lors du switch vers site2 la connexion n'est pas maintenu.

Quelqu'un a une idée ?

Portrait de cpo

Contrairement à Drupal 6, est ce qu'avec drupal 7 on peut utiliser des noms de répertoires différents du nom de domaine
par exemple
site/monsite1 (pour www.AAA.com)
site/monsite2 (pour www.BBB.com)
merci

Portrait de Vince

Le multisite peut également être géré au travers d'un module, ou plus exactement de plusieurs sous-modules qui composent le projet Domain access. (http://drupal.org/project/domain). J'ai eu l'occasion de le tester sur Drupal 6, et il répondait pas mal à nos attentes:
- Gestion du contenu centralisée et publication sur un ou plusieurs sous-sites
- Gestion des users avec accès sur un ou plusieurs sous-sites
- Gestion de thèmes différents ou non selon le sous-site.
bref, un module plutôt pas mal !

Portrait de Steph

Ouvrez le fichier :
C:\Windows\System32\drivers\etc\hosts

Vous devriez lire vers la ligne 20 quelque chose comme ceci :

127.0.0.1 localhost
::1 localhost

Rajoutez la ligne :
127.0.0.1 site2.local
127.0.0.1 site1.local
Et enregistrez le fichier.
Remarque :
Si vous ne pouvez pas éditer le fichier, vérifiez que celui-ci n'est pas en lecture seule.
sinon Faites une copie du fichier sur votre bureau, mettez les droits d'écriture, faites la modification, remettez le fichier en lecture seule, et écrasez le fichier original.

Configuration de Apache
--------------------
Sous wamp, lorsque celui-ci est lancé, cliquez sur l'icone dans la barre des tâches, cliquez sur "Apache" et vous devriez voir dans les entrées du menu déroulant un fichier httpd.conf. Ouvrez ce fichier et nous allons faire les modifications nécessaires.
Vous pouvez retrouver ce fichier sous C:\wamp\bin\apache\apacheX.X.X\conf\httpd.conf.

#Include conf/extra/httpd-vhosts.conf
Supprimez simplement le symbole # qui sert de marqueur de commentaire

Listen *:80

#SITE1.LOCAL
NameVirtualHost site1.local

ServerAdmin
DocumentRoot "C:/wamp/www/drupal7/"
ServerName site1.local
ServerAlias site1.local
ErrorLog "logs/site1.local-error.log"
CustomLog "logs/site1.local-access.log" common

AllowOverride None
Options None
Order allow,deny
Allow from all

#SITE2.LOCAL
NameVirtualHost site2.local

ServerAdmin
DocumentRoot "C:/wamp/www/drupal7/"
ServerName site2.local
ServerAlias site2.local
ErrorLog "logs/site2.local-error.log"
CustomLog "logs/site2.local-access.log" common

AllowOverride None
Options None
Order allow,deny
Allow from all

Enregistrez-les puis redémarrez le serveur Apache.
Remarque :
Si une erreur est commise lors de la création d'un alias, il suffit de supprimer le fichier concerné pour retrouver la configuration d'origine

PS : http://site1.local No pas localhost/site1.local/

Portrait de Gilles

Salut,

Super la vidéo, très clair !

Juste une petite question pour le theming

J'ai créé un theme général dans sites/all/themes/basic.

Je veux que ce thème soit utilisé par les 2 autres sites que j'ai créé.
Pour ces 2 sites j'ai choisi dans apparence le theme basic.

Comment faire si je dois juste changer le logo et les css par exemple ?
Je trouve cela un peu dommage d'aller copier tout le thème dans mon site1/themes/ et mon site2/themes/

Créer un subtheme de basic ?

Merci pour cet éclaircissement.

Gilles

Portrait de DrupalFacile

Bonjour Gilles,

Oui, il faut passer par du sub-theming : http://drupal.org/node/225125 - C'est le principe du thème Zen qui à popularisé ce principe. On part d'un thème principal qu'on améliore régulièrement et les sous-thèmes en héritent les améliorations tout en gardant leur spécificité.

Aurélien

www.drupalfacile.org
Apprenez Drupal en vidéo et en français !

Portrait de Alain Lambert

Bonjour,

Vous ne faites pas allusion au fichier sites.php (example.php) ni àbase_url du fichier settings.
En quoi sont-ils utiles dans une installation multisite ?
Merci

Alain

Portrait de harrari

Bonjour tous le monde
avant tout je tien a dire que vos vidéo sont très réussi .
mais je me retrouve face à un problème.
voila nous somme 3 personnes a créer un site pour un client et nous travaillons sur 3 thermes différents
un générateur de blog
un générateur de forum
un générateur de fiche
c'est trois générateur sont sur le même site mais nous travaillons chacun de notre coté .
la question est : comment peut on réunir nos 3 projets en commun sur le même site ? en sachant que chacun travail à partir de cher lui sur un des générateurs

merci

Portrait de ZeD

comment personnaliser la page d'accueil du site web fait avec drupal 7, de telle sorte qu'elle soit carément différente du reste des pages du site?

Portrait de Orewan

Bonjour a tous,

Je viens de voir la question. Pour personnaliser la page d'accueil tu as le module front page:
http://drupal.org/project/front
Un autre méthode consiste a créer une page front page dans le code source.
(De mémoire blue master utilise cette methode: http://drupal.org/project/bluemasters/ )

Portrait de Orewan

Bonjour a tous,

Merci pour ce tuto, même si je n'ai pas compris comment faire les déclarations de virtual host tout de suite.
Après avoir vu de nombreux tutos en ligne et les réponses en commentaire je me retrouve bloque.

Ma configuration:
Windows 64 bit / Wamp 2.2
J'ai change le port de wamp sur 82 et non 80 a cause de skype.

J'ai installe drupal 7.14 et le premier site en principal avec default.
J'ai ensuite créer les sous-dossiers c:\wamp\www\monsitedrupal\sites\sitea
et c:\wamp\www\monsitedrupal\sites\example

Le fichier host a ete modifie (C:\Windows\System32\drivers\etc\host):
127.0.0.1:82 localhost
127.0.0.1:82 sitea
127.0.0.1:82 example

Sur Wamp, les fichier conf et vhost.conf ont ete modifies comme suit:
-----------------------------------------------
C:\wamp\bin\apache\Apache2.2.21\conf\httpd.conf

Activation de la ligne : (j'ai juste enlever le '#' pour activer la ligne)
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
--------------------------------------
C:\wamp\bin\apache\Apache2.2.21\conf\extra
Ajout des vrituals host:

ServerName example
DocumentRoot c:/wamp/www/monsitedrupal/sites/example

ServerName sitea.com
DocumentRoot c:/wamp/www/monsitedrupal/sites/sitea

---------------------------------------------

Pour les bases de donnees:
Les bases sitea et example sont crees sur phpmyadmin.

Pour les fichiers settings: (J'ai copiez/coller ce qui avait dans les commentaires puis enlever les "/*" pour activer les lignes.)
Example
array(
'driver' => 'mysql',
'database' => 'example',
'username' => 'root',
'password' => '',
'host' => 'localhost',
'port' => '',
'prefix' => '',
'collation' => 'utf8_general_ci',
);

Sitea:
array(
* 'driver' => 'mysql',
* 'database' => 'sitea',
* 'username' => 'root',
* 'password' => '',
* 'host' => 'localhost',
* 'port' => '',
* 'prefix' => '',
* 'collation' => 'utf8_general_ci',
* );

Lorsque je me rend sur l’adresse: "www.sitea.com:82" ou "example:82" le site ne s'installe pas et j'ai
comme erreur "Delai d'attente trop long".

Qu'elle est l'etape ou j'ai manque quelque chose ? Ma configuration est-elle mauvaise ?

Merci d'avance

Ps: (J'ai modifie le port en mettant : VirtualHost *:82 et NameVirtualHost *:82, je me retrouve avec "access
forbidden" au server.)

Ajouter un commentaire