Submitted by Traven on
Bonjour à tous,
je suis actuellement en train de mettre en place une ferme Drupal, càd, une gestion multisites. De ce point de vue il n'y a pas de soucis, je maitrîse Apache2, MySQL etc. Je met juste après un mini tuto qui pourra aider, ma question est après pour ceux qui savent déjà faire.
Pour procéder, j'ai fais ceci , sous Ubuntu Server 11.10 :
(ce qui suit peut servir de mini tuto pour ceux qui tomberont sur le sujet, dans le cas on on travaille en local)
DL des sources puis extraction des sources de Drupal
sudo mkdir /home/data
cd /home/data
sudo chown -R www-data:www-data ../data
sudo chmod -R 777 ../data
wget -c http://ftp.drupal.org/files/projects/drupal-7.12.tar.gz
tar -xvf ./drupal-7.12.tar.gz
sudo mv ./drupal-7.12 ./drupal
sudo chmod -R 550 ../data
création d'un lien symbolique entre /var/www et /home/data/drupal
sudo ln -s /home/data/drupal /var/www
préparation du premier site
cd /home/data/drupal/sites
sudo cp -r ./default ./site1.domaine
cd ./site1.domaine
sudo cp ./default.settings.php ./settings.php
sudo chmod o+w ./settings.php
prépartion du host et du vhost
préparation du fichier hosts :
sudo nano /etc/hosts
rajoutez la ligne suivante puis sauvegardez (ctrl + X >> Y >> Entrée) :
127.0.0.1 site1.domain
prépation du vhost :
cd /etc/apache2/sites-available
sudo cp ./default ./site1
sudo nano ./site1
remplacez la ligne 'Document Root /var/www' par 'DocumentRoot /var/www/drupal/' puis 'Directory /var/www' par 'Directory /var/www/drupal'. Sauvegardez.
prise en compte du vhost et restart de apache2
sudo a2ensite site1
sudo apache2ctl -k restart
il ne reste plus qu'à terminer l'installation
allez sur http://site1.domain dans votre navigateur préféré, et complétez l'installation. Il existe pleins de tuto sur le net, pour ça. N'oubliez pas de remettre les bons droits sur le 'settings.php'.
sudo chmod o-w /home/data/drupal/sites/site1.domain/settings.php
A ce stade, on a un site fonctionnel, accessible via l'URL, site1.domain. On peut installer les modules qu'on veut, y mettre du contenu, etc.
Ma question:
Maintenant, passons à ma question, à proprement parlé. Je veux automatiser l'ouverture de sites, en prenant le premier site comme modèle. Voilà comment j'ai procédé :
- copie de /site1.domaine en /site2.domaine
- modification du fichier settings.php
- copie de la BBD associée
- modification de champs de la nouvelle BDD (site_name, etc)
- modification du /hosts et rajout du vhost
Cela fonctionne sans soucis, j'ai une parfaite copie, indépendante, du premier site, et avec un peu de scripting, je peux automatiser la procédure, et l'administration peut se faire ensuite avec drush.
L'avantage de ma méthode, est que je n'ai plus à aller sur le site au début pour réaliser l'installation. Pratique quand on veut ouvrir 20 sites en même temps (j'aurais ce cas de figure à gérer).
Ma méthode est-elle bonne? Je fais tout manuellement (ou via un script), ce qui peut amener à des surprises. Donc ne vaut-il pas mieux que je crée un profil d'installation (avec drush) d'après le premier site (le site modèle/template)?
Le problème alors est je n'ai pas trouvé comment faire pour éviter toute la phase d'installation en allant sur l'URL au début. De plus, je ne peux pas avoir un site avec du contenu par défaut contrairement à une copie de la BDD.
Merci d'avance, et n'hésitez pas si ma demande n'est pas claire.
Bonjour, dans ton cas,
Permalien Soumis par vincent59 le 23 Mars, 2012 - 10:57
Bonjour,
dans ton cas, drush-make pourrait être une bonne solution : il permet de définir un "makefile" avec la liste des modules à télécharger, et installe ainsi une arborescence complète.
J'ai également fait ce genre de script shell, qui crée la base de données, download tout ce qu'il faut via drush, modifie le settings.php.
Il me reste la partie virtualhost à faire.
L'approche est donc bonne.
Il reste cependant la partie Installation à faire. Ce qui est possible de faire c'est :
Tu peux aussi regarder du côté de Aegir (http://www.aegirproject.org/ ou http://drupalfrance.com/node/1036) qui permet de gérer plusieurs sites Drupal.
Bonjour vincent59 merci pour
Permalien Soumis par Traven le 23 Mars, 2012 - 15:55
Bonjour vincent59
merci pour ta réponse, je vois que je ne suis pas le seul à s'être posé des questions. Je suis en train de regarder du côté de drush et drush-make effectivement. Mon idée actuelle est de suivre le workflow suivant :
6° [Drush-Make] Création du .make et du .profile selon le premier site
7° [Shell] Création du répertoire du second site + copie du settings.php + création hosts et vhost
On recommence pour les autres à partir de l'étape 7
Maintenant, pour faire bien, il faut pouvoir installer et déployer Drupal (core + modules) (étape 1°) avec un make, les modules allant dans /sites/all. Comme cela ils seront accessibles à tous les sites, et pas besoin de les re-télécharger à chaque création d'instance. Mes sites auront tous les mêmes modules, car tous basés sur un template unique.
Avec cette solution, il n'y aura aucun contenu par défaut dans les sites, mais je trouve cela plus propre, car on part sur des BDD vierges et pas des copies. Si j'ai vraiment besoin de contenu, il y'a des fonctions Drush qui permettent d'ajouter cela.
Pour l'ajout des utilisateurs (j'aurai environ 150 comptes à créer par site, de manière automatisé, les authentifications se faisant après via un CAS, mais c'est une autre affaire), je passerai aussi par Drush.
Mon interrogation actuelle est : pour la création des BDD, le fais-je avec des 'drush sql-*' ou bien dans mon Shell en calant la requête MySQL au milieu. Ça change rien d'un point de vue global, mais je cherche à faire les choses le plus proprement possible.
Je penche pour le faire via Drush, pour la simple raison que je trouve plus logique de séparer ce qui concerne l'installation d'une instance, et la config du serveur (vhost, hosts).
Pour ceux que ça intéresse, une fois que j'aurai répondu à toutes mes questions et que tout sera clair pour moi (parce que mine de rien, je débute avec Drupal), je compléterai mon tuto de mon post précédent pour que ça devienne une vraie doc. J'ai eu beau chercher sur le net, je n'ai rien trouvé sur comment mettre en place du SaaS avec Drupal, les tutos expliquant comment installer Drupal via Drush sont nombreux, mais aucun ne traite du cas où on fait du multisites.
bonjour, j ai développer un
Permalien Soumis par ced_sdml le 23 Mars, 2012 - 16:07
bonjour, j ai développer un module d'authentification via SSO qui te permet d'associer des groupes de ton annuaire via le sso à un rôle drupal (un peu comme le module LDAP SSO mais en plus light).
le truc est qu on devait faire un authentification en allant chercher les info du sso sur un autre nom de domaine donc non fait par la communauté (le site a 2 nom de domaine 1 pour les anonymes et 1 pour récup des données SSO et retour sur nom de domaine1 avec authentification). Ca marche aussi si ton site est directement derrière le SSO.
=> pas besoin de gérer l'utilisateur, tu gère des groupes annuaire.
On pense peut être le rendre disponible à la communauté drupal.
Merci pour le conseil mais je
Permalien Soumis par Traven le 23 Mars, 2012 - 16:55
Merci pour le conseil mais je ne suis pas sûr que ça corresponde vraiment à mon cas de figure. Car en plus du rôle, je dois récupérer les informations du profil de l'user dans le LDAP. J'avoue ne pas m'être encore très penché sur le sujet. Merci en tout cas.
J’ai avancé mon script, il
Permalien Soumis par Traven le 31 Mars, 2012 - 20:00
J'ai avancé mon script, il est terminé à 90% je dirai, et j'arrive à tout faire sauf une étape, celle de l'installation d'un site avec Drush (c'est ballot... ^^).
Voilà la commande que je lance à la racine de Drupal (tout étant préparé avant, dossier, settings.php, BDD, etc) :
drush site-install standard --sites-subdir=monsite.mondomain --site-name=nom_de_mon_site --db-url=mysql://user_mysql:mdp_user_mysql@localhost/nom_BDD
L'installation a lieu, pas de soucis pour ça, mon soucis est que le nom de site que je renseigne pourtant dans ma ligne de commande n'est pas pris en compte. Je peux le changer via une requête SQL (même si modifier un BLOB à la main, c'est parfois bancale) ou bien en modifiant le settings.php pour qu'il override le contenu de site_name dans la table variable, mais je trouve ça pas propre. Et puis ça m'oblique à le coder. Savez-vous donc pourquoi Drush ne prend pas en compte ce paramètre?
Il me reste de plus à réaliser la création du user, l'admin premier.
Pour votre info, j'ai scripté en fabric (http://docs.fabfile.org/en/1.4.0/index.html), une librairie python faîtes pour l'administation de serveurs distants (tout passe en ssh, parce que le FTP c'est pas bien)
Je continue, mais sans
Permalien Soumis par Traven le 3 Avril, 2012 - 15:04
Je continue, mais sans question cette fois.
Je note ici mes trouvailles pour ceux qui chercheront dans le futur.
Pour être sûr qu'une installation via Drush fonctionne (pour avoir un site utilisable donc), il y'a deux pré-requis :
Pour avoir une installation via Drush directement en fr :