usine à sitesavec
DrupalDrupal Meetup Strasbourg
19-06-2014
Nicolas LOYEJürgen PECHER
@ACTENCY
Quoi, qui et comment ?
J / JN
Le programme
Première mi-temps :
○ Intro / Présentation
○ Usine à sites – les besoins
○ Architectures et exemples
○ Comment choisir ?
○ Les solutions Drupal
○ Questions & réponses
Deuxième mi-temps :
○ Installation profiles
○ Drush
○ Organic groups
○ Domain access
○ Aegir
JN / N
Présentation - Nicolas
Chef de projet technique & Lead Développeur Drupal @ Actency
Drupal-addict depuis 2006
Projets professionnels sur Drupal 4.5 à 7
Distrib standard / Pressflow / Commerce kickstart / Open Atrium
Module contrib Drupal 8
Présence régulière en Drupalcon
Patch, module & translation contribs & reviews.
Jeux de rôles, jeux vidéos, heavy metal.N / J
Présentation - Jürgen
Directeur Technique @ Actency
Drupal-addict depuis 2006.
J’ai piloté des projets de D4.6 à D7, des petits aux grands, de 5K€ à plus d’1M€.
Je porte les casquettes de Capitaine, Navigateur, Architecte, Consultant et éternel insatisfait.
J’aime l’esprit Open Source de la communauté Drupal, j’adore les DrupalCon’s.
Et pour prendre un break, je pratique la plongée, le fitness et je suis fan de Metal...
Mais il me reste toujours suffisamment d’énergie pour mon ultime passion :
Drupal bien sûr… ;-)
J / J
Pourquoi une usine à sites?
J / J
La promesse … ?!?
J / J
Pourquoi une usine à sites?
Les besoins - client :
○ Temps - Mise en production dans un délai plus court
○ Réduction du coût de fabrication
○ Réduction du coût de maintenance
○ Respect d’un catalogue de fonctionnalités et de layout communs
○ “Recyclage” d’un site existant
J / N
Pourquoi une usine à sites?
Les besoins - agence :
○ Temps -
Mise en production dans un délai plus
court
○ Utilisation d’un catalogue de
fonctionnalités et layouts testés, validés
et approuvés
○ Réduction du coût de fabrication
N / J
Les architectures potentielles
J / J
Les architectures potentielles
Sur la base de ces éléments Code + base de données
on distingue trois types d’architecture :
1. Sites 100 % indépendants - chaque site dispose de son propre code- chaque site dispose de sa propre base de données
2. Sites 50% indépendants- les sites partagent le même code- chaque site dispose de sa propre base de données
3. Sites 0% indépendants- les sites partagent le même code et la même base de données
J / N
Exemple 01Sites 100 % indépendants
Socle des sites de productionune agence / drupal-shop
Chaque nouveau projet se base sur le même set de modules, de configurations, de themes… qui ont été validés et représentent le socle de chaque nouveau site.
Le site évoluera ensuite (enrichissement du code, configurations différenciées) et aura sa propre base de données.
N / N
Exemple 02Sites 50 % indépendants
Sites d’administration / portail avec microsites
○ Ensemble de sites ayant leurs fonctionnalités propres mais partageant des éléments (configurations, contenus, utilisateurs.)
○ Code base commune, les mises à jour du code sont partagées, le même thème peut être utilisé sur tous les sites, etc.
○ Configurations indépendantes, modules actifs différents.
○ Possibilité de partager tout ou partie de la base entre les différentes instances.
N / J
Exemple 03Sites 0 % indépendants
Site d’une école nationale
○ Une présentation commune (home-page, pages institutionnelles)
○ Des sections dédiées à chaque école avec leur propres contenus, publication-workflows, fonctionnalités, administrateurs et permissions d’utilisateur. (CRUD)
○ Les différentes sections des sites sont définies dans l’url-pattern comme par exemple :http://www.epitech.eu/strasbourg/ecole-informatique-
strasbourg.aspx
J / J
Les solutions Drupal
J / J
Solutions drupal
Sites 100% indépendants
○ Installation profiles + outils de deployment
Sites 50% indépendants
○ Multi-sites + Installation profiles+ outils de deployment
Sites 0% indépendants
○ Organic groups + modules d’extension
○ Domain access + modules d’extension
J / N
Installation profiles+ outils de deployment
Les profils d’installation de Drupal …
... offrent des caractéristiques et fonctionnalités pour un type spécifique de site packagé en une seule code base contenant Drupal, les modules, thèmes et configurations prédéfinies souhaitées.
Ils permettent de mettre en place rapidement un site complexe d'utilisation spécifique en moins d'étapes que si l'installation et la configuration des éléments étaient faits individuellement.
N / N
Profile d’installation + outils de deployment
N / J
Multi-sitesLa promesse :
Si vous utilisez plus d'un site Drupal, vous pouvez simplifier la gestion et la mise à niveau de vos sites en utilisant l’architecture multi-site.
Multi-site vous permet de partager une seule installation Drupal (la code base, les modules contrib et thèmes) entre plusieurs sites.
J / J
Multi-sitesLe concept
Site unique : Multi-sites
J / J
Multi-sites“The good, the bad and the ugly”
J / J
Multi-sites“des instances distincts … THE GOOD, … ”
J / N
Multi-sites“… le partage de certaines tables ... THE BAD ”
Exemple :Le site 02 partage certaines tables de la base de données du site 01. Cette configuration sera définie dans le fichier settings.php du site 02.
Des erreurs multiples sont possibles :○ Désynchronisation de la
configuration et du fichier settings.php.
○ Certains custom hooks peuvent ne plus fonctionner comme attendu.
○ Problèmes de caching.
$databases = array (
'default' =>
array (
'default' =>
array (
'database' => 'dev_xxxx_xxxxxxxx',
'username' => 'xxxx-xxxx-user',
'password' => '***************',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => array(
'default' => '',
//user_tables shared
'users' => 'dev_xxxx_public.',
'sessions' => 'dev_xxxx_public.',
'role' => 'dev_xxxx_public.',
'users_roles' => 'dev_xxxx_public.',
// user authentification tokens shared
'tokenauth_tokens' => 'dev_xxxx_public.',
//user_fields shared
...
N / N
Multi-sites“Connection temporaire à une autre base de données... THE UGLY”
Exemple :Le site 02 se connecte temporairement à une autre base de données.
Des erreurs multiples sont possibles :○ Désynchronisation de la
configuration et du fichier settings.php.
○ Certains custom hooks peuvent ne plus fonctionner comme attendu.
○ Le code custom contient un risque supplémentaire : requêter la “mauvaise” table/base de données.
○ Problèmes de caching.
Dans le fichier settings.php :<?php$databases = array();$databases['default']['default'] = array( // Drupal's default credentials here. // This is where the Drupal core will store its data.);$databases['my_other_db']['default'] = array( // Your secondary database's credentials here. // You will be able to explicitly connect to this database from your modules.);?>
Dans votre module custom :<?php// Use the database we set up earlierdb_set_active('my_other_db');// Run some queries, process some data// ...// Go back to the default database,// otherwise Drupal will not be able to access its own data later on.db_set_active();?>
N / N
Domain access + modules d’extension
Le projet Domain Access est une suite de modules qui fournissent des outils pour l'exécution de groupes de sites affiliés au sein d'une installation Drupal avec code et base de données uniques.
Par défaut, ces sites partagent toutes les tables de l’installation Drupal.
Toutes les différences de configuration sont assignées à des contextes basés sur des domaines différents.
N / N
Domain access + modules d’extension
N / N
Domain access + modules d’extension - création d’un “site”
N / N
Domain access + modules d’extension - settings per “site”
N / J
Organic Groups+ modules d’extension
Cette suite de modules permet aux utilisateurs de créer et de gérer leurs propres «groupes».
Un groupe est créé par un utilisateur propriétaire unique, qui dispose de permissions spéciales, y compris la possibilité de supprimer le groupe.
Les administrateurs de groupe ont également des permissions spéciales, mais ne peuvent pas supprimer le groupe, sauf s'ils sont définis comme propriétaires du groupe.
J / J
Organic Groups+ modules d’extension
J / J
Organic Groups+ modules d’extension - création d’une “site”
J / J
Organic Groups+ modules d’extension -settings per “site”
J / J
Les critères de choix
J / J
Comparaison :
Indépendance sites 100% 50% 0%
Partage du code non oui oui
Partage de la bdd non non oui
Facilité de création d’un nouveau site non non oui/non
Facilité de maintenance non oui/non oui
SSO “par défaut” non non oui
Partage des utilisateurs “par défaut” non non oui
Partage des contenus “par défaut” non non oui
Partage des configurations “par défaut” non non oui
BO/administration partagée non non oui
Indépendance de code et déploiement oui non non
Indépendance d’hébergement oui non non
Pas de “single point of failure” oui non non
J / J
Organic Groups VS. Domain Access
Fonctionnalités OrganicGroups
DomainAccess
Facilité de création d’un nouveau “site” oui non
Chaque site possède sa propre URL non oui
Rôles et permissions spécifiques oui oui
Chaque site peut utiliser son propre theme oui oui
Intégration d’un Variable realm oui oui
Intégration de workbench moderation oui oui
Intégration i18n oui oui
Vocabularies dédiés oui oui
Menus dédiés oui oui
Block-visibilité par “site” oui oui
J / J
Vos questions ...
Deuxième mi-temps ...
J / N
Installation profiles ...
N / N
Installation profiles
Le profil embarque toutes les configurations et modules testés et validés dont vous avez besoin.
Permet de modifier les formulaires d’installation standards pour adapter la configuration aux inputs fournis.
Des contenus pré-définis peuvent être créés dès l’installation.
N / N
Installation profiles
Fichier .info > identique à un module
1. name = MyDrupalProfile
2. description = Install my most commonly used modules and configurations.
3. version = VERSION
4. core = 7.x
5. ; STANDARD
6. dependencies[] = block
7. dependencies[] = color
8. dependencies[] = comment
9. ; CUSTOM
10. dependencies[] = my_module
N / N
Installation profiles
Fichier .install > identique à un module
Mêmes opérations qu’un .install standard :
○ Création de schemas customs
○ Modifications de configs
○ Création de contenus
○ Définitions de permissions
○ Possibilité de définir des hook_update_N()
○ Etc.
N / N
Installation profiles
Fichier .profile
Opérations spécifiques réalisées pendant l’installation :
○ Modification des étapes de l’installation en soi (ajout/altération des étapes de l’install)
○ Altération des formulaires présentés à l’utilisateur pendant l’install
○ Autres modifications diverses
N / J
Drush ...
J / J
Drush
En quelques mots :
○ Drush ou “drupal shell” est un outil de ligne de commandes qui facilite la création de site et les processus de maintenance.
○ Package de commandes CLI spécifiques Drupal.
○ Gain de temps.
○ Extensible par simple écriture de hooks.
○ Accès à des fonctionnalités avancées de Drupal.
○ Cool & rock’n’roll !
J / N
Drush
N / N
Drush / make
Fichier .make / Dites à Drush quoi installer
1. ; This file was auto-generated by drush make
2. core = 7.x
3. api = 2
4. defaults[projects][subdir] = contrib
5. projects[drupal][version] = 7.28
6. ; Modules
7. projects[] = views_bulk_operations
8. projects[admin_menu][version] = 3.0-rc4
9. projects[admin_menu][patch][1961178] = "http://drupal.org/files/admin_menu-ie6detect-1961178-1.patch"
10. projects[] = views
11. projects[] = backup_migrate
12. projects[] = ctools
13. projects[] = content_access
N / N
Drush / make
Installation rapide et personnalisée
drush site-install drupency --db-url="mysql://USER:PASS@localhost/DB_NAME" --site-name="My drupal site" --account-name="hodor" --account-pass="hodor" -y
Projet information for drupal retrieved.[ok]
Projet information for views_bulk_operations retrieved.[ok]
Projet information for admin_menu retrieved.[ok]
Projet information for views retrieved.[ok]
Projet information for backup_migrate retrieved.[ok]
Projet information for ctools retrieved.[ok]
Projet information for content_access retrieved.[ok]
drupal download from http://ftp.drupal.org/files/projects/XXXX[ok]
views_bulk_operations download from http://ftp.drupal.org/files/projects/XXXX [ok]
admin_menu download from http://ftp.drupal.org/files/projects/XXXX[ok]
N / J
Drush / Core-quick-install
Génère une instance Drupal standard dans un dossier avec la base de données associée.
○ Installation rapide
○ Permet de spécifier un profil d’installation
○ Plusieurs arguments permettent de customiser l’installation.
drush qd -y
Starting drupal installation. This takes a few seconds ...
J / J
Variables realm ...
J / J
Variable API 011. /**
2. * Implements hook_variable_info().
3. */
4. function mymodule_variable_info($options) {
5. $variable['needed_variable'] = array(
6. 'title' => t('my needed variable', array(), $options),
7. 'description' => t('myneeded_variable for the og and ad realms', array(), $options),
8. 'type' => 'properties',
9. 'default callback' => 'color_bartik_variable_defaults',
10. 'group' => 'meetup_demo',
11. 'localize' => TRUE,
12. 'multidomain' => TRUE,
13. );
14. ;
15. );
16. return $variable;
17. }
18. /**
19. * Callback for default theme settings
20. */
21. function color_bartik_variable_defaults($variable, $options) {
22. return array(
23. 'taa' => ‘’,
24. 'bb' => ‘’,
25. }
26. );
27. }
J / J
Variable API 02function mymodule_variable_group_info() {
$groups['meetup_demo'] = array(
'title' => t('Meetup Demo'),
'description' => t('variables made accessible by a custom module using the variable API'),
'access' => 'administer site configuration',
);
return $groups;
}
J / N
Variable API 03
J / N
Aegir ...
N / N
Aegir
Logiciel de gestion de déploiement et de maintenance d’instances drupal.
○ Gestion de plusieurs versions / distrib du core.
○ Gestion des updates de modules et du core (spécification de la version de destination pour chaque update).
○ Contrôle des code base et bases de données.
○ Gestion des queues, batch, cron, etc.
○ Compatible drush.
○ Requiert une infrastructure assez spécifique.
N / N
Aegir
N
Merci de votre attentionVos questions ...
Top Related