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.
Le mieux pour ça est de voir un module existant et de prendre "modèle" dessus.
Par exemple j'en ai publié un récement : https://github.com/kgaut/drupal-ckeditor-responsive-plugin/tree/8.x-1.x et https://www.drupal.org/project/ckeditor_responsive_plugin
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,
Pour installer drush : https://kgaut.net/journal/2014/installer-drush-sous-linux-via-composer…
Il est possible aussi d'utiliser des templates type ( https://github.com/woprrr/drupal8_composer ) pour une gestion plus simple de ses projets / configs
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