Installer Drupal 8 avec composer

Installer Drupal 8 avec composer

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.

Commentaires

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

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

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

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.

trop coooooooooool

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.

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.

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 ?

Bonjour,
Merci pour ce super tuto, grâce à toi j'ai enfin pu installer Composer correctement et Drupal sous ubuntu 16.04. Mais, car évidemment il y a un "mais", je n'ai pas dû l'installer si bien que ça car maintenant, si je veux installer un module via Composer j'ai ce message d'erreur (exemple avec token) :Your requirements could not be resolved to an installable set of packages.
Problem 1
- The requested package drupal/token 8.* exists as drupal/token[dev-1.x, 1.x-dev, 1.0.0, 1.0.0-rc1, 1.0.0-beta2, 1.0.0-beta1, 1.0.0-alpha2, 1.0.0-alpha1] but these are rejected by your constraint.
Installation failed, reverting ./composer.json to its original content.
"

Je n'ai rien trouvé sur le net qui m'aide, c'est pourquoi je viens vers toi
Merci d'avance
Papoulepaps

Bonjour, suite à des déboires avec des mises à jours de drupal 8 sur mon environnement de production en serveur mutualisé, je repasse en dev sur mon serveur wamp local sous acquia. Drush est déjà préinstallé. J'ai besoin d'utiliser composer pour régler des problèmes de mise à jour de modules et dépendances (swiftmailer par ex.) mais je ne sais pas ou mettre composer. Dois-je mettre quelque chose dans le répertoire racine du site en dev pour pouvoir faire fonctionner composer? merci pour votre aide. (je ne suis pas une grande experte de drupal ni de php en profondeur...)

Ajouter un commentaire

Ne sera pas publié
CAPTCHA
Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...