Bonusdag: Drupal core en modules updaten

Op het moment dat je huidige Drupal versie is verouderd verschijnt er een behoorlijk opdringerig waarschuwingsbericht op de administratie pagina's. Grote kans dat je er hier inmiddels al mee te maken hebt gehad. Deze waarschuwing is er niet voor niets want een verouderde versie bevat potentiële beveiligingslekken waar malavide software en gebruikers misbruik van kunnen maken.

Er komen dan ook geregeld updates uit voor Drupal en haar modules om de boel veilig te houden. In deze bonusdag gaan we leren hoe we die updates kunnen installeren.

De Drupal core updaten

Drupal core updates komen in twee smaken: bug fixes en security releases. Bug fixes verhelpen kleine foutjes of voegen soms ook nieuwe features toe. Security releases lossen beveiligingsproblemen op. Vooral security releases dienen zo snel mogelijk toegepast te worden, zeker indien je website gevoelige gegevens bevat.

De eerste woensdag van de maand is gereserveerd voor bug fixes en de derde woensdag van de maand voor beveilingsupdates. Dat betekent niet dat er ook elke maand een nieuwe versie verschijnt, dit gebeurd alleen als er veel en/of grote problemen zijn gevonden. Gemiddeld kun je uitgaan van 1 keer per 2 maanden, wat maakt dat we aan het einde van dit jaar ongeveer op Drupal 7.26 zitten.

Op de hoogte blijven

Onderaan de pagina vind je overigens een RSS feed, mocht je op die manier op de hoogte willen blijven. De RSS Feed van de Drupal Security pagina geeft je meer informatie over het veiligheidsriciso en de gevonden kwetsbaarheden. Zo weet je precies of een update zo snel mogelijk moet plaatsvinden of nog wel eventjes kan blijven liggen.

Wil je via een e-mail op de hoogte gehouden worden van nieuwe versies? Ga dan naar Beheer > Rapportages > Beschikbare updates. Hier zie je precies of er updates beschikbaar zijn voor de Drupal Core en/of modules. Klik op rechtsboven op het tabblad Instellingen en vul jouw e-mail adres in in het tekstveld.

 

 

1. De nieuwste Drupal versie downloaden

Nieuwe versies worden uiteraard op de Drupal downloadpagina van Drupal.org vrijgegeven. Download hier onder het kopje Recommended releases het *.tar.gz met de laatste versie van Drupal 7. Het maakt niet uit of je Drupal bijwerkt van 7.16 naar 7.20 of van 7.19 naar 7.20. 

2. Een backup maken van de bestanden

Mocht er iets mis gaan (en dat zal een keer gebeuren) dan kun je niet zomaar teruggaan naar de vorige Drupal versie. Je zult dan een backup moeten terugzetten van je bestanden en database. Maak daarom altijd eerst een backup.

Om een backup te maken van onze bestanden moeten we inloggen op de FTP server (dit kan eventueel ook via bijvoorbeeld CPANEL, vraag je webhost om hulp als je dit wilt proberen). We laten Filezilla dit keer links liggen want hiermee kunnen we niet via SCP inloggen. WinSCP, ook gratis, biedt die optie wel. Door via SCP in te loggen kunnen we op de server bestanden inpakken en uitpakken en dat is wel zo makkelijk want het maakt dat we geen duizenden bestanden hoeven te up- en downloaden iedere keer als we Drupal moeten bijwerken.

Download en installeer eerst WinSCP. Start het programma op, vul je FTP gegevens in en zet het bestandsprotocol op SCP.

Voor Linux gebruikers: WinSCP werkt bij mij probleemloos via Wine.

Log vervolgens in en blader naar de root folder van Drupal. Selecteer nu alle bestanden en folders die bij Drupal horen, klik dan met de rechtermuisknop op één van de bestanden/folders en ga naar Eigen opdrachten > Tar/GZip. Kies een duidelijke naam voor het backup bestand en klik op OK. Op de server worden nu alle Drupal folders en bestanden gekopieerd naar dit archief bestand, dit duurt enkele minuten.

Het is normaal dat je al snel een waarschuwing krijgt van WinSCP dat de server niet meer reageert. Indien dit gebeurd kun je het beste een nieuwe WinSCP sessie starten en opnieuw inloggen.

Je zal zien dat in de root folder het bewuste archief bestand is aangemaakt. Controleer of de grootte van de backup niet meer stijgt door op de vernieuwen knop rechtsboven (zie afbeelding hieronder) te klikken.

Kopieer het zojuist aangemaakte bestand nu naar jouw eigen PC en/of maak een "backups" mapje buiten de root folder waar je hem in plaatst.

De bestanden zijn nu veiliggesteld. Nu is de database aan de buurt. Maar laat WinSCP ondertussen openstaan want we gaan hier straks nog mee verder!

3. Een backup maken van de database

Een backup van je database kun je op meerdere wijzen maken. Een van de meer gangbare manieren is om dit via phpMyAdmin te doen (vraag eventueel je hostingspartner hoe phpMyAdmin te openen). Inloggen in phpMyAdmin gebeurd met de databasenaam en wachtwoord zoals gebruikt op dag 2 en 3. De database gegevens kun je zo nodig terugvinden in het "/sites/default/settings.php" bestand (bovenaan het bestand, na de regels met de "*" ervoor).

Eenmaal ingelogd klik je aan de linkerkant op de database waar Drupal aan gekoppeld is (let op: het kan zijn dat jouw phpMyAdmin interface er anders uitziet vanwege verschillen tussen versies, kom je er niet uit laat het dan weten).

Vervolgens krijg je een overzicht van alle Drupal tabellen, leuk om je eens in te verdiepen, maar om de backup te maken klik je op export (exporteren).

Klik dan op custom, zorg dat alle tabellen geselecteerd zijn, en kies als compression voor gzipped om het bestand zo klein mogelijk in te laten pakken.

Optioneel: selecteer verderop het Add DROP TABLE statement. Dit maakt dat je bij het terugzetten van een backup niet eerst handmatig de oude tabellen hoeft te verwijderen. Dit kun je echter ook prima zelf doen en zijn maar twee extra stappen.

Klik ten slotte helemaal onderaan op Go (verzenden). Na enkele seconden kun je database backup opslaan op jouw pc.

Zoals ik al zei zijn er meerdere manieren om een backup te maken. Zo is er in CPanel en Directadmin meestal de optie aanwezig om direct een backup te maken (of te herstellen) van een database zonder eerst te hoeven inloggen in phpMyAdmin. Verder is er de Backup and Migrate module waarmee je direct vanuit de Drupal administratie een backup kunt maken en herstellen, in een komende artikel zullen we hier wellicht meer aandacht aan schenken.

Indien jouw ingepakte database bestand richting de 8 mb kruipt zal phpMyAdmin meer moeite krijgen met het exporteren en vooral terugzetten van backups. Een (gratis) programma als Mysqldumper, dat met zeer grote databases om kan gaan, biedt dan uitkomst. Indien je hulp nodig hebt bij de installatie van dit programma, of met het maken van een backup in het algemeen, laat dan een reactie achter.

We hebben nu een backup van onze bestanden en eentje van onze database en kunnen met een gerust hart de verdere stappen doorlopen in de wetenschap dat we het meeste werk achter de rug hebben.

4. De website in onderhoudsmodus zetten

Log in op het adminstratie gedeelte van Drupal en navigeer in het hoofdmenu naar instellingen. Onder het kopje Ontwikkeling klik je op Onderhoudsmodus.

Activeer hier het vinkje voor Website in onderhoudsmodus zetten en klik op Instellingen opslaan.

Je begrijpt, de website is vanaf dit moment tijdelijk niet meer toegankelijk voor normale bezoekers. Gebruik eventueel Google Analytics om het beste moment (lees: de daluren) te bepalen voor het bijwerken van Drupal.

5. De oude bestanden verwijderen via FTP

We keren weer terug bij WinSCP. Volgens de instructies op Drupal.org is het de bedoeling dat je voor een update eerste alle Drupal bestanden verwijderd, behalve de /sites/* folder (de /sites folder bevat immers al jouw persoonlijke modules, thema's, bestanden en aanpassingen).

Je kunt het op de voorgeschreven wijze doen, maar zelf heb ik, ondanks de aanwezig backup, altijd wat moeite met deze definitieve handeling. Ik maak dan ook liever eerst een nieuwe folder aan met als naam iets als "tijdelijk". Dan selecteer ik alle Drupal bestanden, inclusief de /sites/ folder en plaats alles in de zojuist gemaakte /tijdelijk folder.

Mijn root folder bevat nu geen enkel bestand meer dat deel uitmaakt van een standaard Drupal installatie. Alleen de "/sites/" folder inclusief alle inhoud blijft over, de rest bevindt zich in de tijdelijk folder. Bezoekers krijgen op dit moment geen bericht meer voorgeschoteld dat de website onderhoud ondergaat. Laten we hun geduld niet op de proef stellen en snel door gaan.

6. De nieuwe bestanden uitpakken op de server

Aan de linkerzijde van het WinSCP scherm kunnen we net als in Filezilla door onze eigen PC bladeren. Navigeer naar de locatie van het eerder gedownloade Drupal-7.xx.tar.gz bestand en sleep deze naar de root folder. Klik nu, aan de kant van de server, met de rechtmuisknop op dit bestand. In plaats van de Tar/Gzip opdracht kiezen we nu juist voor de Untar/Gzip opdracht om het bestand te laten uitpakken.

In het pop-up venster mag je vervolgens op OK drukken. Het bestand zal dan uitgepakt worden in de huidige folder, in de submap /Drupal-7.xx.

Is dit eenmaal gebeurd open dan de /Drupal-7.xx folder met de nieuwe Drupal bestanden. Selecteer alles BEHALVE:

  • de "/sites" folder
  • het .htacces bestand
  • het robots.txt bestand

Sleep nu de geselecteerde folders en bestanden naar de bovenliggende folder (het bovenste mapje met het pijltje naar boven), zodat ze in de root terechtkomen.

Nu dat is gebeurd blader je terug naar de root folder, waar als het goed is de bestanden van de laaste Drupal versie nu aanwezig zijn, minus de /sites folder en het .htaccess en robots.txt bestand.

Vervolgens duik je in de /tijdelijk folder. Hier selecteer je juist ALLEEN de /sites folder, het .htaccess en het robots.txt bestand. Sleep deze op dezelfde manier naar de bovenliggende root folder.

En zo is Drupal weer compleet. De bron bestanden zijn nu up-to-date zonder dat onze persoonlijke items in de /sites folder (en in het .htaccess en robots.txt bestand) zijn overschreven.

Voor de veiligheid is het beter om de bestanden die alleen nodig zijn voor de installatie van Drupal te verwijderen. Het gaat om de volgende bestanden die allemaal in de root folder staan:

  • install.php
  • CHANGELOG.txt
  • INSTALL.txt
  • INSTALL.mysql.txt
  • INSTALL.pgsql.txt
  • LICENSE.txt
  • MAINTAINERS.txt
  • UPGRADE.txt

Laat voor de zekerheid WinSCP nog even openstaan tot nadat we de laatste stappen hebben voltooid.

Update: er is tegenwoordig een github pagina waar je de meeste recente Drupal 7 release kunt downloaden, maar dan afgesptript van alle niet noodzakelijke bestanden.

7. Het update script draaien

Type in de adresbalk van jouw webbrowser het adres in van jouw website en voeg hierachter /update.php, dus http://www.jouwdrupalwebsite.nl/update.php.

De stappen die we zojuist hebben doorlopen worden nog een keer op een rij gezet. Ga na of je niks bent vergeten en klik op continue. Indien de database moet worden geüpdatet, wat lang niet altijd het geval is, krijg je vervolgens een scherm met de voorgestelde wijzigingen. Klik dan onderaan op Apply. Zijn er geen updates dan word je hiervan op de hoogte gebracht en kun je gelijk door naar het administratie gedeelte om de website te controleren ...of werk eerst nog even de modules bij.

6. Modules updaten

Nu je toch bezig bent, en backups hebt gemaakt, kun je ook gelijk je modules updaten. Dit hoeft natuurlijk niet tijdens de overgang naar een nieuwe Drupal versie maar kan op elk moment, zowel voor als na een update. Zorg natuurlijk wel altijd voor een goede backup van database en bestanden.

Navigeer in het menu naar de Modules pagina en klik hier aangekomen rechtsbovenin op het tabblad Bijwerken.

Hier vind je een lijst van alle modules waarvoor updates beschikbaar zijn. Selecteer diegene die je wilt bijwerken en klik op "deze updates downloaden".

Na het downloaden bevestig je de installatie van de modules. Hierna word je automatisch opnieuw naar het update script verwezen welke je nogmaals doorloopt. We zijn nu bijna aan het einde gekomen.

8. De website controleren en onderhoudsmodus uitzetten

Neem de verschillende onderdelen aan de voor- en achterkant van de website door. Maak de cache een keer leeg, sla een nieuw artikel op en verwijder deze weer, navigeer door de menu's op de website en controleer of pagina's werken en blokken op de juiste positie staan, etc. Ben je er gerust op ga dan opnieuw naar instellingen > onderhoudsmodus om de onderhoudsmodus uit te vinken. Sla de verandering op om je bezoekers weer toegang te verlenen.

Een backup terugzetten?

Oh nee, er is iets misgegaan en je website is niet meer bereikbaar. Log dan direct in met WinSCP, verwijder alle Drupal bestanden, zet het backup bestand terug in de root folder en pak deze uit met de Untar opdracht. Log vervolgens in met phpMyAdmin en ga nu niet naar export maar naar het Import tabblad. Klik op de browse knop en blader naar de eerder gemaakte database backup.

Klik nu onderaan op Go en doe een schietgebedje. Hopelijk is je website nu weer bereikbaar.

Krijg je een "cant create table" error? Ga dan eerst naar het tabblad structure, scroll helemaal tot onder de tabellen en klik hier op Check all. In het uitklapmenu ernaast kies je bij "with selected" voor DROP. Bevestig dit in het volgende venster. Probeer hierna nogmaals de backup te importeren.

 

Conclusie

Drupal bijwerken vereist al met al aardig wat stappen maar wanneer je het eenmaal wat vaker hebt gedaan zul je er vanzelf sneller in worden. Het is iets wat je op de koop toe moet nemen voor de extra veiligheid en complexiteit die Drupal biedt ten opzichte van bijvoorbeeld Wordpress, waar het updaten een kwestie is van letterlijk 5 minuten en niet meer dan 4 muisklikjes.

Is er onverhoopt iets misgegaan? Laat het hieronder weten zodat wij je wellicht kunnen helpen om de boel te herstellen.

Laatst gewijzigd op: