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
/jet/app/drupal/
cp -R core vendor
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