Composer installeren
De site was in het begin niet opgezet met Composer. Vroeger of later kom je dan toch in de problemen. Ik moest eerst uitzoeken hoe je Composer installeert en hoe je de site kunt omzetten van niet- naar wel-composerized. Eén van de ingewikkeldste dingen maar uiteindelijk is het gelukt. Ik blijf voorlopig in de directory boven public_html. (pjella.nl): de project root. Eerst composer installeren.
Om Composer op te halen en te installeren, heb ik op de Command Line gezet:
curl -sS https://getcomposer.org/installer | php
Toen volgde:
Composer (version 2.4.4) successfully installed to: ........pjella.nl/composer.phar
Use it: php composer.phar
Om te voorkomen dat je telkens voor composer moet intypen: php composer.phar, tikte ik in:
alias composer='/..../composer.phar'
Daardoor kun je een commando beginnen met php composer .....
Composerize
Vervolgens moest mijn nog niet gecomposeriseerde site klaargemaakt voor werken met Composer.
Daarvoor ging ik naar https://github.com/grasmash/composerize-drupal voor de instructies van Composerize.
Ik vulde in, zoals daar wordt geschreven:
composer global require grasmash/composerize-drupal
Daardoor wordt in de public_html-directory de site geschikt gemaakt voor Composer. De vendor-directory wordt naar de directory gehaald waar ik bezig ben. En er wordt een composer.json-bestand gemaakt. Na
composer update "drupal/core-*" --with-all-dependencies
Wordt er ook een composer.lock-bestand gemaakt.
Composer.json
In het nieuwe composer.json-bestand in de project-root moet je nu alle modules nog aangeven die al geïnstalleerd zijn in jouw systeem:
"require": { "php": "^5.5.9|>=7.0.8", "composer/installers": "^1.2.0", "drupal/admin_toolbar": "^3.3", "drupal/adminimal_theme": "^1.6", "drupal/asset_injector": "^2.12", "drupal/block_class": "^1.3",
Als dat goed staat, moet je weer composer update "drupal/core-*" --with-all-dependencies doen en dan worden alle modules geupdatet.
Daarna heb ik Search API gedownload en geïnstalleerd met:
composer require 'drupal/search_api:^1.28'
Gelukt: het wordt toegevoegd aan het stukje 'require'.
Je kunt Composer zelf ook updaten met: composer self-update
Mijn fout was eerst dat ik in een verkeerde directory zat, nl. in de web-root i.p.v. in de project-root, en dan werd het juist niet in de web-root gezet.
Het kan zijn dat je door een te hoge php-versie niet kunt updaten. Dan kun je achter het commando typen: --ignore-platform-req=php+
Drush
Ik had drush nooit gebruikt, maar je kunt er op de command line wat handigheidjes mee en als je alles goed snapt, misschien wel meer.
Voor de installatie van drush, typ je composer require drush/drush.
Voor clear cache: ./vendor/bin/drush cache:rebuild
Voor updaten van de db: ./vendor/bin/drush updb
Overschrijven van htaccess
Voorkom overschrijven van htaccess
Iedere keer als je composer update uitvoert, worden diverse bestanden vervangen door de laatste versie. Ook als er in Drupal niets is veranderd aan htaccess, krijg je de composer-versie van htaccess geïnstalleerd en dat is onhandig als je een regel aan htaccess had toegevoegd. Om te voorkomen dat je dat telkens handmatig moet aanpassen kun je composer het ontbrekende deel erin laten zetten. Het duurde lang voordat ik het aan de praat had maar ik heb het nu in orde. In composer.json staat een gedeelte:
"extra": { "drupal-scaffold": { "locations": { "web-root": "./de-directory-die web-root-is/" } },
Daar moet een stukje tussen worden gezet dat ervoor zorgt dat er aan het einde van het htaccess-bestand een stukje wordt aangeplakt. Uiteindelijk ziet het er dan uit als:
"extra": { "drupal-scaffold": {
"locations": { "web-root": "./public_html/" },
"file-mapping": { "[web-root]/het-htaccessbestandje": { "append": "./patches/htaccess-toevoeging.txt" } } },
Vergeet het kommaatje voor "file-mapping" niet.
Het "append-stuk" zorgt voor het plakken van een stukje tekst uit ./patches/htaccess-toevoeging.txt. De dir ./patches staat in de project-root.