Présentation effectuée au Rencontres Mondiales du Logiciel Libre (RMLL) 2017 par Christophe Villeneuve sur "Automatisation des gestionnaires de contenus (CMS)".
Vous allez voir comment industrialiser et automatiser les CMS avec comme exemple le CMS Drupal
2. Qui ???
Christophe
Villeneuve
mozilla reps - firefox os - B2GOS - ausy - afup – lemug.fr – mysql – mariadb – drupal – demoscene – firefoxos – drupagora – phptour – forumphp – solutionlinux – Libre@toi – eyrolles – editions eni – programmez – linux pratique – webriver – phptv – elephpant - owasp -security
3. RMLL 2017 – 6 Juillet 2017
Les sites Webs à l'ancienne
4. RMLL 2017 – 6 Juillet 2017
Les sites Webs d'Aujourd'hui
5. RMLL 2017 – 6 Juillet 2017
Industrialisation
● = Usine à sites
● Répondre à 1 ou plusieurs objectifs
– Le temps
● Délais court → Mise en production
– Le coût
● Réduction du coût de fabrication
– La maintenance
● Réduction du coût de maintenance
– L'homogénéité
● Respect d'un catalogue de fonctionnalités
● Permettre une présence massive et cohérente
6. RMLL 2017 – 6 Juillet 2017
Les forces
● Ce n'est pas un outil de conception pour
→ Un seul et unique site
● Approche par couche
● Une gestion et utilisation simultanée pour plusieurs
sites
→ Plusieurs méthodes
→ Plusieurs architectures possibles
● Point clé
→ Pas nécessaire d'installer plusieurs Drupal
7. RMLL 2017 – 6 Juillet 2017
Implémentation du contrôle d'accès !!! (1/2)
● Un pilotage des sites est unique ou non
→ Quel autonomie doit disposer chacun des sites ?
● Un visuel pour un visiteur :
→ Un site à part
→ Faisant partie d'un site unique
8. RMLL 2017 – 6 Juillet 2017
Implémentation du contrôle d'accès !!! (2/2)
● Le thème et la mise en page des contenus
→ Suivre une ligne éditorial précise ou non
● Un processus de publication
→ Unique
● Le contenu devra être partagé ou pas
→ Entre les différentes sites
9. RMLL 2017 – 6 Juillet 2017
Cas 1 : Installations distinctes (1/2)
● Approche autonome
– Chaque utilisation
unique
– Contrôle complet ou
presque complet
● Possibilité d'avoir des
versions différentes du
CMS
● Utilisation différentes
● Un fonctionnement
différent
● Pas de mise à jour
centralisée
● Connexion unique pour
les modifications
● Impossible de partager
de le même contenu sur
plusieurs sites
Avantages Inconvénients
10. RMLL 2017 – 6 Juillet 2017
Cas 1 : Installations distinctes (2/2) : Réalisation
● Réplication des nœuds
● Implémentations pour le référencement (SEO)
● La gestion des droits
● La gestion des profils
● La synchronisation
● Gestion
– Noms de domaines distincts
– Sous domaines
11. RMLL 2017 – 6 Juillet 2017
Cas 2 : Installations distinctes par Features (1/2)
● Variation de
l'architecture
● Outil pour exporter la
configuration d'un site
● Approche en micro-
services
● Configuration mi-
chemin : entre
– Le contenu
– La configuration
Avantages Inconvénients
12. RMLL 2017 – 6 Juillet 2017
Cas 2 : Installations distinctes Features (2/2)
● Type de contenu
● Les vues
● La gestion des images
● La duplication de certaines fonctionnalités
13. RMLL 2017 – 6 Juillet 2017
Cas 3 :Multi-sites (1/3)
● 1 seul core
● Facilité la maintenance
● Economie au niveau
mémoire vive des
serveurs
● Une configuration
unique
Avantages Inconvénients
14. RMLL 2017 – 6 Juillet 2017
Cas 3 :Multi-sites (2/3) : Réalisations
15. RMLL 2017 – 6 Juillet 2017
Cas 3 : Multi-sites : Domain Access (1/3)
● 1 seul Drupal core
● Gestion unique
● Gestion des droits et
uniques
● Gestion de plusieurs
domaines
● Une seule structure
– Type de contenu
– Vues
● Les variations plus
délicates
Avantages Inconvénients
16. RMLL 2017 – 6 Juillet 2017
Cas 3 : Domain Access (2/3) : Réalisations
17.
18. RMLL 2017 – 6 Juillet 2017
Environnement
● Linux
– Debian, Ubuntu, Mint, CentOS, Redhat...
● Serveur :
– Apache / Nginx
● Langage :
– PHP 5.6 / PHP 7
● Base de données :
– MySQL / MariaDB / PostgreSQL
● Drupal
– 7 ou 8
● Cache externe :
– Varnish / Akamaï
19. RMLL 2017 – 6 Juillet 2017
Outils
● Drush
● Drupal Console
Drupal 7 et +
Drupal 8
20. RMLL 2017 – 6 Juillet 2017
Drupal : en lignes de commande
● Composer
● YML ou classique
● Makefile
● Mode console
● Méthode Synfony
$ drupal
generate:module
$ drupal
generate:controller
Drush Drupal Terminal
21. RMLL 2017 – 6 Juillet 2017
Install avec Drush (1/3)
> drush dl drupal
> cd drupal-8.2
> drush si standard -y
--db-url=mysql://login:PWD@localhost/drupal_bdd
--site-name="Drupal Ausy Nantes"
--account-name=admin
--account-pass=admin
--account-mail=mail@mail.com
22. RMLL 2017 – 6 Juillet 2017
Install avec Drush (2/3)
● Download
– Drupal
– Modules contrib
● Install Drupal
● Update Drupal and
contrib module
versions
● Run updatedb
● Clear the cache
● Run cron
● Run Drupal with a
lightweight web server
● Import, export and merge
configuration
● Add users and set their
roles
● Add permissions to roles
● Back up and restore Drupal
● Copy your database and
files to a remote server
● Compile twig templates
23. RMLL 2017 – 6 Juillet 2017
Install avec Drush (3/3)
Drupal 7 Drupal 8
24. RMLL 2017 – 6 Juillet 2017
Install avec Drupal console (1/3)
> curl -sS https://getcomposer.org/installer | php
> sudo mv composer.phar /usr/local/bin/composer
> sudo composer create-project
drupal-composer/drupal-project:$VERSION
$DIR --stability dev –no-interaction
> vendor/bin/drush si standard -y --db-url=$BDD_URL
--site-mail=$MAIL --site-name=$NOMSITE --sites-
subdir=$DIRMULTI
--account-name=$LOGIN --account-pass=$PASSWORD
--account-mail=$MAIL
25. RMLL 2017 – 6 Juillet 2017
Install avec Drupal Console (2/3)
● Installation à partir de
'composer'
● Produire du code
– Console command
– Content type
– Controller
– Entity
– Form alter hook
– Module
– Field type, widget and
formatter
– Image effect
– Rest resource
– Service
– Theme
26. RMLL 2017 – 6 Juillet 2017
Install avec Drupal Console (3/3)
Drupal 8
29. RMLL 2017 – 6 Juillet 2017
Behat Drive Développement (BDD)
● Framework de tests
● Axé sur le comportement
Feature: Function to test
description
Free text
Scenario: Scenario 1
Given preconditions
When actions
Then results
Scenario: Scenario 2
30. RMLL 2017 – 6 Juillet 2017
Behat : exemple
Scenario: Title
Given I am on the homepage
Then I should see "Drupal"
Scenario: Log in
Given I visit "/user"
# fill the username and password input fields,
and click submit
When I fill in "Username" with "admin"
And I fill in "Password" with "admin"
And I press the "Log in" button
Then I should get a "200" HTTP response
And I should see text matching "Log out"
31. RMLL 2017 – 6 Juillet 2017
Test Drive Développement (TDD)
● Écrivez un test
● Exécutez le test
● Laissez le test échouer
● Écrire assez de code
● Exécutez votre test à nouveau
● Refactorez / nettoyer le code
● Exécutez le test à nouveau
● Répéter
32. RMLL 2017 – 6 Juillet 2017
Pourquuoi l'utiliser ?
● Meilleure compréhension
→ de ce que vous allez écrire
● Force la politique d'écriture
→ Un peu mieux
● Accélère le développement
33. RMLL 2017 – 6 Juillet 2017
Avantages de TDD
● Code testable
● Design propre
● Peut être refactoré avec confiance
● Le code minimal
→ Nécessaire pour satisfaire la carte d'histoire
● Une spécification personnelle
→ De fonctionnement du code
● Capable de soutenir un rythme
→ Soutenable de nouvelles fonctionnalités