usines à site avec drupal - meetup drupal strasbourg

56
usine à sites avec Drupal Drupal Meetup Strasbourg 19-06-2014 Nicolas LOYE Jürgen PECHER @ ACTENCY

Upload: actency

Post on 21-Jun-2015

1.143 views

Category:

Technology


3 download

DESCRIPTION

"Usine à sites avec Drupal : comment choisir la meilleure approche ?" Slides de la présentation de Nicolas Loye et Jurgen Pecher au premier Meetup Drupal de l'Est, 19/06/2014, Strasbourg. Une usine à site permet de créer plusieurs sites sur le même serveur avec la même installation Drupal, et de pouvoir les dupliquer pour les adapter facilement à un nouveau besoin.

TRANSCRIPT

Page 1: Usines à site avec Drupal - Meetup Drupal Strasbourg

usine à sitesavec

DrupalDrupal Meetup Strasbourg

19-06-2014

Nicolas LOYEJürgen PECHER

@ACTENCY

Page 2: Usines à site avec Drupal - Meetup Drupal Strasbourg

Quoi, qui et comment ?

J / JN

Page 3: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 4: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 5: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 6: Usines à site avec Drupal - Meetup Drupal Strasbourg

Pourquoi une usine à sites?

J / J

Page 7: Usines à site avec Drupal - Meetup Drupal Strasbourg

La promesse … ?!?

J / J

Page 8: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 9: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 10: Usines à site avec Drupal - Meetup Drupal Strasbourg

Les architectures potentielles

J / J

Page 11: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 12: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 13: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 14: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Nicolas Loye
L'exemple donné ici est pas logique. On parle de sites 0% indépendants mais on ne démontre pas la dépendance, au contraire on parle uniquement de contenus séparés.
Page 15: Usines à site avec Drupal - Meetup Drupal Strasbourg

Les solutions Drupal

J / J

Page 16: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 17: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 18: Usines à site avec Drupal - Meetup Drupal Strasbourg

Profile d’installation + outils de deployment

N / J

Page 19: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 20: Usines à site avec Drupal - Meetup Drupal Strasbourg

Multi-sitesLe concept

Site unique : Multi-sites

J / J

Page 21: Usines à site avec Drupal - Meetup Drupal Strasbourg

Multi-sites“The good, the bad and the ugly”

J / J

Page 22: Usines à site avec Drupal - Meetup Drupal Strasbourg

Multi-sites“des instances distincts … THE GOOD, … ”

J / N

Page 23: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 24: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 25: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 26: Usines à site avec Drupal - Meetup Drupal Strasbourg

Domain access + modules d’extension

N / N

Page 27: Usines à site avec Drupal - Meetup Drupal Strasbourg

Domain access + modules d’extension - création d’un “site”

N / N

Page 28: Usines à site avec Drupal - Meetup Drupal Strasbourg

Domain access + modules d’extension - settings per “site”

N / J

Page 29: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Nicolas Loye
Fais, relire pour vérifier le sens.
Juergen Pecher
@Nico peux-tu corriger le text stp?
Page 30: Usines à site avec Drupal - Meetup Drupal Strasbourg

Organic Groups+ modules d’extension

J / J

Page 31: Usines à site avec Drupal - Meetup Drupal Strasbourg

Organic Groups+ modules d’extension - création d’une “site”

J / J

Page 32: Usines à site avec Drupal - Meetup Drupal Strasbourg

Organic Groups+ modules d’extension -settings per “site”

J / J

Page 33: Usines à site avec Drupal - Meetup Drupal Strasbourg

Les critères de choix

J / J

Page 34: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 35: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 36: Usines à site avec Drupal - Meetup Drupal Strasbourg

Vos questions ...

Nicolas Loye
Il faudrait corriger ce visuel, le texte ne s'intègre pas terrible.
Juergen Pecher
@Guillaume a cool photo ?!
Page 37: Usines à site avec Drupal - Meetup Drupal Strasbourg

Deuxième mi-temps ...

J / N

Page 38: Usines à site avec Drupal - Meetup Drupal Strasbourg

Installation profiles ...

N / N

Page 39: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 40: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 41: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 42: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 43: Usines à site avec Drupal - Meetup Drupal Strasbourg

Drush ...

J / J

Page 44: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 45: Usines à site avec Drupal - Meetup Drupal Strasbourg

Drush

N / N

Page 46: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 47: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 48: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 49: Usines à site avec Drupal - Meetup Drupal Strasbourg

Variables realm ...

J / J

Page 50: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 51: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 52: Usines à site avec Drupal - Meetup Drupal Strasbourg

Variable API 03

J / N

Page 53: Usines à site avec Drupal - Meetup Drupal Strasbourg

Aegir ...

N / N

Page 54: Usines à site avec Drupal - Meetup Drupal Strasbourg

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

Page 55: Usines à site avec Drupal - Meetup Drupal Strasbourg

Aegir

N

Page 56: Usines à site avec Drupal - Meetup Drupal Strasbourg

Merci de votre attentionVos questions ...