Installer Drupal 8 avec composer

Posté le Mercredi 25 novembre 2015 - 16:09
Dernière mise à jour le Mardi 22 novembre 2016 - 11:47

Il est maintenant possible de gérer son installation de Drupal directement avec composer, installation, ajout de module, update...

Prérequis

Pour cela évidement, il faut avoir composer d'installé, sous Debian/Ubuntu :

curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

Il aussi est nécessaire d'avoir l'extension php CURL, toujours sous Debian et dérivés installez-la avec :

sudo apt-get install php5-curl

Téléchargement

Placez-vous dans le dossier où vous souhaitez installer drupal 8 (il doit être vide) et lancez la commande suivante :

composer create-project drupal-composer/drupal-project:8.x-dev ./ --stability dev -vv 

Il se peut que vous obteniez un message de ce genre :

Could not fetch *************, please create a GitHub OAuth token to go over the API rate limit
Head to https://github.com/settings/tokens/new?scopes=repo&description=****************
to retrieve a token. It will be stored in "/home/********/.composer/auth.json" for future use by Composer.

C'est une protection mise en place par github pour éviter de se faire aspirer trop de contenu, il faut que vous généreriez un jeton chez eux, pour cela rendez-vous à l'adresse donnée et cliquez sur generate token :

Votre jeton se trouve à la page suivante :

Copiez-collez-le dans le terminal et faite Enter.

L'installation devrait se terminer correctement.

Structure

Votre dossier devrait maintenant ressembler à ça :

La racine de votre site est le dossier web, c'est sur lui que devra pointer votre virtual host.

Si vous allez dans le dossier web/sites/default vous vous rendrez compte que composer à déjà préparer l'installation du site avec le dossier files et les fichiers services.yml et settings.php, vous n'avez alors plus qu'a lancer votre navigateur sur l'adresse de votre virtual host afin de commencer l'installation de drupal en tant que tel.

Installation de modules contrib

Si vous souhaitez ajouter un module tiers, vous pouvez le faire, toujours avec composer via la commande suivante :

#téléchargement du module devel
composer require drupal/devel:"8.*"

#téléchargement du module token
composer require drupal/token:"8.*"

#téléchargement du module examples
composer require drupal/examples:"8.*"

Versionning et déploiment

Si vous observez le contenu du fichier .gitignore, vous verez qu'il demande à ne pas versionner les dossiers du core de drupal, les dépendances tierces ainsi que les modules contrib :

# Ignore directories generated by Composer
drush/contrib
vendor
web/core
web/modules/contrib
web/themes/contrib
web/profiles/contrib

# Ignore Drupal's file directory
web/sites/default/files

# Ignore files generated by PhpStorm
.idea

Pourquoi ? Car toutes la gestion de dépendance passe maintenant par composer et il n'y a donc aucun intérêt à stocker sous git ces éléments tiers. Le fichier composer.lock contient l'ensemble des dépendances avec la version précise nécessaire pour votre application.

Si vous clonez votre dépôt depuis un autre poste, il suffira de faire un composer install pour récupérer l'ensemble des dépendances dans leurs bonnes versions. Pareil pour le déploiement en prod qui doit ressembler à peu de chose prêt à ça :

#Récupération des dernières modifications
git pull origin master

#Téléchargement des éventuelles nouveaux modules ou encore mises à jours
composer install

#Reconstruction du cache (équivalent de cache-clear sous drupal 7)
drush cache-rebuild

#Migration de la base de données
drush update-db

Mise à jour core et modules

Pour mettre à jour le core et les modules, toujours avec composer :

composer update

Si vous vous rendez-compte que quelque chose c'est mal passé, faite un revert sur le fichier composer.lock puis composer install pour retourner dans l'état précédent.

 

Plus d'informations sur la page github de drupal-composer : https://github.com/drupal-composer/drupal-project.

 

Comments

albert

Posté le Mercredi 13 janvier 2016 - 15:07

C'est bien mais c'est quoi "composer" ?

Posté le Mercredi 13 janvier 2016 - 15:08

Composer est un gestionnaire de dépendances PHP, à l'image de npm pour le javascript.

albert

Posté le Jeudi 14 janvier 2016 - 11:22

Merci pour tes éclaircissements. Si c'est comme npm, je fuis donc...moi qui espérais la mort de PHP...

Posté le Jeudi 14 janvier 2016 - 11:24

Ahaha #troll.

"Comme NPM" c'était pour expliquer l'idée générale. Après composer est quand même une énorme avancée dans l'ecosystème PHP.

jean

Posté le Mardi 23 février 2016 - 15:48

trop coooooooooool

gatlin

Posté le Samedi 29 octobre 2016 - 21:43

Merci pour ce tuto.
Si je souhaite créer mon propre module de Drupal avec composer (mon_module par exemple), quelle est la procédure à suivre?
Merci d'avance.

Patman

Posté le Mercredi 21 décembre 2016 - 13:31

Slt,

sympas le tuto et pile poil pour moi, j'ai décider de passer sous ubuntu pour essayer de réaliser des sites et du dev drupal 8 et je viens de trouver ici une bonne base de config pour mon environnement de travail.

merci Kevin.
Pat.

muad1B

Posté le Samedi 7 janvier 2017 - 13:24

bonjour,
j'ai drupal8 d'installé en local dans un environnement debian pour faire du developpement multisite,
il semble que composer est deja dans le core
mais pas de drush... faut il faire une reinstal de composer manager par dessus ?

Ajouter un commentaire

Ne sera pas publié

HTML restreint

  • Balises HTML autorisées : <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Les adresses de pages web et les adresses courriel se transforment en liens automatiquement.
CAPTCHA
Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...