Update Manager in Drupal 7 (preview)

11 Dec

Screenshot of the Update manager update selection page
In de nieuwe release van Drupal 7 zit een zeer handige hulptool die vele Drupal-affeccionados zullen weten te appreciëren: de Update Manager.

Hoe werkt het

De module 'Update Status' die we kennen uit Drupal 6 is uit de core gegooid, ten voordele van de nieuwe module 'Update Manager'. Het eerdere 'Availabie Updates' rapportje dat we zo graag zien bestaat nog steeds, maar er zijn in de nieuwe D7 versie 2 nieuwe schermen, eentje voor je website up te daten, en een tweede om nieuwe modules of themes te installeren.

Updaten van bestaande modules en themes

Om bestaande modules en themes up te daten is er nu een pagina die enkel en alleen de ontbrekende updates oplijst, met bijhorende checkboxes (zie screenshot bovenaan deze pagina). Na selectie download de nieuwe Update Manager automatisch (!) de nieuwe versies van de modules en/of themes, pakt ze uit in een temp folder, en doet een security check. Als alles goed is verlopen krijg je onderstaand scherm te zien:

Screenshot of the Update manager landing page before upgrading
Bevestig dat je klaar bent om te updaten, en je wordt daarna doorgestuurd naar een nieuwe authorize.php script die de eigenlijke updates uitvoert (zie verder).

Installeren van nieuwe modules en themes

De andere nieuwe interface van de Update Manager is de pagina om nieuwe modules en themes te installeren:

Screenshot of the Update manager new installation page
Na opladen van het archiefbestand of de url naar de juiste download in te URL balk, zal de Update Manager de nieuwe module of theme downloaden, extracten, verifiën, en doorsturen naar het authorize.php script voor de effectieve installatie.

Het nieuwe authorize.php script

Het authorize.php script kan je terugvinden bovenaan de web root directory (om en bij index.php, update.php, etc) en speelt een kritieke rol in de workflow van de nieuwe Update Maanger. De eerste keer dat je dit script uitvoert, vraagt het om de connectiegegevens voor de website in te geven (via SSH of FTP), zodat het de nodige updates kan uitvoeren. Deze gegevens worden nooit opgeslagen, en worden enkel gebruikt terwijl authorize.php de nieuwe releases op zijn plaats zet. Als je gebruik maakt van OSX krijg je in de meeste gevallen ook de vraag voorgeschoteld om je administrator paswoord in te geven.

Screenshot of the authorize.php connect settings page
Andere belangrijke zaak om weten is dat authorize.php op een zeer laag bootstrap level draait, wat betekent dat er slechts een handvol van de core functionaliteiten wordt geladen, en dat er geen enkel contrib module wordt ingeladen. Op die manier zorgt de Update Manager ervoor dat, wanneer een nieuwe release corrupt zou zijn, dat hij nog altijd verder kan met de uitvoering van zijn script, en je zelfs nog mogelijks kan helpen met de recovery van een mislukte update. Het is bovendien een veiliger manier, omdat het quasi onmogelijk wordt om zo jouw systeem's SSH/FTP credentials te ontfutselen via cross site scripting.

Eenmaal je de Update Manager de goedkeuring hebt gegeven om de site te updaten, connecteert 'ie met het filesysteem, schuift alles op zijn plaats, en krijg je een landingspagina die je vertelt wat er gebeurt is, en of er errors zijn.

Hoe skippen?

Alhoewel deze feature een enorme tijdswinst zal opleveren voor zeer veel gebruikers met een single site op shared hosting, toch is de nieuwe Update Manager een kleine ramp als een productie site hebt met development, staging en workflows. Werk je via Aegir of drush, dan wil je waarschijnlijk ook liever deze Update Manager uitschakelen. Daarvoor werd een handige lijn achteraan in de settings.php gestopt, die je eenvoudig kan aanpassen:

$conf['allow_authorize_operations'] = FALSE;

Als deze op FALSE staat, dat is nog wel het 'Available Updates' rapport beschikbaar, maar niets meer van de nieuwe 'Update Manager' functionaliteiten. Die worden gestript over de volledige site, zelfs uit de navigatie. Zelfs de super user account (user ID 1) krijgt via deze weg een 'access denied'.

Ik kijk er alvast naar uit!

bron: 3281d Consulting