Drupal, hoe moeilijk kan het zijn.

Submitted by admin on Mon, 12/17/2018 - 12:58

Zo'n 4 jaar geleden heb ik mijn eerste website gemaakt (http://www.yellowtwig.nl). Tot dan toe had ik voornamelijk webapplicaties en systemen achter een website geschreven. Een website is een stuk eenvoudiger dan een webapplicatie, dus ik dacht "hoe moeilijk kan het zijn?". Nou, dat viel eigenlijk best wel tegen. Ten eerste, welk CMS systeem ga je gebruiken voor je website? Een Content Management Systeem (CMS) is zeg maar de applicatie waarmee je de artikelen schrijft en publiceert.

Drupal

Uiteindelijk kwam ik uit bij Drupal. Zoals veel CMS systemen gebaseerd op PHP. Op Windows is dat wellicht snel te installeren, maar onder linux (zonder grafische schil) blijkt dat nog niet zo eenvoudig. Tenminste niet voor Drupal 8. Ik wilde de combo NGINX, Tomcat en Php maken. Maar wat een ellende van afhankelijkheden. De vrijheid in installatie opties (Linux, Windows, Apache, NGINX, MySql, PostGress, etc) zorgt er voor dat er geen goede installatie scripts zijn van Drupal. 

Hier en daar zijn er wel handleidingen, maar die gaan er vanuit dat PHP, NGINX en MySql al goed zijn ingesteld.

Amazon heeft wel een goede handleiding, maar dat is voor een profi website met bijbehorende kosten: https://aws.amazon.com/getting-started/projects/build-drupal-website/.

Ik zoek iets eenvoudigers want ik verwacht geen 10.000 bezoekers op mijn website. De handleiding op deze site https://www.pickaweb.co.uk/kb/install-and-setup-drupal-in-centos-via-command-line/ lijkt hoopvol. Het is voor Drupal 7, maar dat werkt vast ook voor Drupal 8.

Linux
Een AWS Linux instance is zo gestart. Ik kies voor AWS linux met long term support. Geen LAMP stack, want Drupal 8 vraagt nieuwere versies dan de versies die standaard met de AWS AMI meekomen. NGINX is zo geïnstalleerd :

>sudo amazon-linux-extras install nginx1.12

MySql
Ook MySql gaat redelijk eenvoudig (na wat Google werk en met dank aan https://tecadmin.net/install-mysql-on-centos-redhat-and-fedora/).

> sudo rpm -Uvh https://repo.mysql.com/mysql57-community-release-el7-11.noarch.rpm
> sudo yum --enablerepo=mysql80-community install mysql-community-server

Drupal
De officiële installatie handleiding :

> mv drupal-8.6.4/* drupal-8.6.4/.htaccess drupal-8.6.4/.csslintrc drupal-8.6.4/.editorconfig drupal-8.6.4/.eslintignore drupal-8.6.4/.eslintrc.json drupal-8.6.4/.gitattributes /usr/share/nginx/html

PHP
> sudo amazon-linux-extras install php7.2

SqlLite
Er lijkt bij de laatste update van MySql iets veranderd te zijn in de manier waarop wachtwoorden worden verwerkt. Het werkt niet. Dus dan maar overstappen op SqlLite

Dit gaat mij boven mijn pet

Tot dan alles OK. Maar Drupal blijkt afhankelijk van verschillende PHP libs en als die libs er niet zijn will de installer van Drupal niet verder.

>  sudo yum install php-opcache
> sudo yum install php-xml
> sudo yum install php-mbstring

Dit zouden alle dependencies moeten zijn. Helaas, de installer kan de packages niet vinden. PHP -m vindt dat alles is geïnstalleerd; Zal wel iets met php.ini of de locatie van de extension folder te maken hebben. Oh, ik moet php-fm herstarten (wist niet dat ik dat had geïnstalleerd...). Ok de hoofdpagina van de site laadt, hehe ik kan aan de slag. Ohtochniet. Alleen de landingspagina doet het, de rest niet. Ik ben al weer een halve dag bezig, veel geleerd dat wel, maar ik wil nu wel een keer een blog schrijven.

AWS marketplace
Op de marketplace van AWS kun je vrij veel images vinden met kant en klare oplossingen (zo'n beetje als OpenShift vroeger had). Er zijn 2 Drupal 8 oplossingen:

Bitnami : https://bitnami.com/stack/drupal
Jetware : http://jetware.io/appliances/jetware/drupal8_lapp7_g2-180531/profile

Ik kies voor Jetware omdat deze op CentOs is gebaseerd en "datkennik". Bitnami is op Ubuntu gebaseerd, zal ook werken, maar dan moet ik iets meer uitzoeken.

Jetware LAPP 

Het draait in een paar minuten. Echter, er komt meteen een melding dat er iets is met een core library. En dat kun je niet updaten met de admin pagina's van Drupal. Updaten kan alleen via een terminal https://www.drupal.org/docs/8/update/update-core-manually. Ik begrijp steeds beter waarom veel websites op basis van PHP niet veilig zijn; updaten is lastig met grote kans op storingen. Toch jammer dat ze dat bij Jetware niet meteen in de AMI hebben opgelost. Bitnami lijkt achteraf een betere keuze geweest te zijn (zij stellen dat de AMI'S regelmatig worden gepatched).

Secure website

Voeg onderstaande regel toe aan settings.php

/jet/app/drupal/sites/default/settings.php

$settings['trusted_host_patterns'] = array( '^www\.jouwsite.nl$', );

Drupal core update naar 8.6.4

!!!Maak eerste een backup van alle bestanden!!!!

1.De update vraagt om het verwijderen van de meeste Drupal bestanden:

cd cd /jet/app/drupal/
rm -rf core vendor
rm -f *.* .[a-z]*

 

2.De nieuwe versie downloaden

cd ~
mkdir ~/drupal8.6.4
cd ~/drupal8.6.4
wget https://ftp.drupal.org/files/projects/drupal-8.6.4.tar.gz
tar zxf drupal-8.6.4.tar.gz

3. Nieuwe bestanden kopiëren

cd drupal-8.6.4
cp -R core vendor
/jet/app/drupal/
cp *.* .[a-z]* /jet/app/drupal/

4. Run update

Als je settings.php aanpast wil Drupal de boel opnieuw gaan installeren!

Om dit te voorkomen:

 jouwsite.nl/update.php