Das smartere WordPress-Upgrade

Seit ich WordPress für die gelegentliche Bloggerei nutze, habe ich auch immer brav alle Versions-Updates mitgemacht, um bekannte Sicherheitslücken schnell zu stopfen. Eine große Hilfe sind dabei die Upgrade-Pakete von WordPress Deutschland: Die Leute dort haben sich die Mühe gemacht, nur die wirklich erneuerten Dateien zusammenzustellen, so dass die Aktualisierung flotter zu bewerkstelligen ist. Bei einem größeren Versionssprung wie nun auf 2.3 gibt es aber keine mundgerechten Upgrade-Versionen. Bleibt nur, das komplette Paket zu beziehen. Außerdem wird dabei die Datenbank aktualisiert. Wenn man sich nun aber an die empfohlene Upgrade-Prozedur hält und keine weiteren Vorkehrungen trifft, dann ist WordPress während der Aktualisierung „broken“, kaputt: Vorbeisurfende User bekommen hässliche Fehlermeldungen zu sehen. Böswillige Menschen können das sogar ausnutzen.Eine smartere Upgrade-Methode muss also her. Die Methode, die ich hier Schritt für Schritt beschreibe, ist nicht besonders geeky oder trickreich und erfordert gewiss keine Expertenkenntnisse. Im Gegenteil: Sie geht davon aus, dass die WordPress-Installation bei einem durchschnittlichen Shared-Hosting-Service liegt, auf den man nur per (S)FTP Zugriff hat. Voraussetzung ist außerdem die Verwendung der deutschen Installationspakete, die bereits eine deutsche Sprachdatei sowie ein angepasstes Standardthema (“default-de”) enthalten.

Ziel ist es, dass das eigene Blog während der Aktualisierung keine Fehlermeldungen ausspuckt. So etwas sieht nicht nur blöd aus; je nachdem, wie Ihr Webserver und das darauf laufende PHP konfiguriert sind (bzw. von Ihrem Web-Hoster konfiguriert wurden), verraten die Fehlermeldungen auch etwas über die Server-Konfiguration und die Pfade zu den Dateien. Beides ist aus Sicherheitsgründen unbedingt zu vermeiden.

Natürlich gibt es immer noch die Leute mit der „Augen zu und durch“-Mentalität: Schnell mal eben frei nach Howard Carpendale („Nachts, wenn alles schläft“) die Dateien auf den Server hochjagen, dann noch das upgrade.php-Skript für die Datenbank abfeuern – fertig. Aber so schnell geht es eben nicht bei über 3 MB Paketgröße. Selbst wenn Sie über Ihren eigenen Server gebieten und die Dateien erst auf dem Server entpacken brauchen, bleibt WordPress für eine kurze Zeitspanne defekt. Also lasst es sein, Leute.

Die einfache Lösung für diese Probleme ist eine Übergangs-Version der Datei index.php im Wurzelverzeichnis der WordPress-Installation. (Achtung: Auch in den einzelnen Themes gibt es eine Datei namens index.php, bitte nicht damit verwechseln.) Die Original-index.php enthält zwar nur ein paar Zeilen

/* Short and sweet */
<? php
define('WP_USE_THEMES', true);
require('./wp-blog-header.php');
?>

Aber ein require reicht, um den Aufruf sämtlicher von WordPress generierter Seiten zu initiieren – egal, ob Sie für Ihr Blog umgeschriebene Permalinks benutzen oder nicht. Mit anderen Worten: Alles läuft über die index.php – ohne sie ist Ihr Blog lahmgelegt. Genau das wollen wir hier ausnahmsweise erreichen: Während der Aktualisierung soll WordPress eben nicht laufen, weil es sonst nur Fehlermeldungen produzieren würde.

Ein leere Übergangs-index.php würde diesen Zweck schon erfüllen. Damit der User trotzdem etwas sieht, schreiben wir in die Übergangs-Version eine kleine Botschaft. Bei mir sieht die Übergangs-index.php zum Beispiel so aus:

<html>
  <h2>Kurze Pause.</h2>
  <p>Der Privatstrand wird gerade geharkt und ist für ein paar Minuten geschlossen.</p>
</html>

Nicht. Mehr. Als. Das. Natürlich lässt sich das je nach Wunsch noch durch „under construction“-Grafiken, eine dem Blog-Layout angepasste Seiten-Gestaltung oder sonstige Botschaften aufhübschen.

So viel zur Übergangs-index.php. Meine weitere Update-Strategie sieht kurz gesagt so aus: Alle Dateien der bisherigen WordPress-Installation bis auf die persönlichen Dateien werden via (S)FTP auf dem Server gelöscht und die neuen Versionen hochgeladen. Okay, richtig smart wäre es, all dies auf der Kommandozeile zu erledigen. Aber diese Anleitung soll ja erstens ohne Expertenkenntnisse nachvollziehbar sein und zweitens auch mit Shared-Hosting-Paketen funktionieren, die keinen Shell-Zugang besitzen.

Warum die Löscherei, warum nicht einfach die alten mit den neuen Dateien überschreiben? Ganz einfach. Nachdem mein WordPress einmal Amok lief, weil ich so „schlau“ war, mein FTP-Programm anzuweisen, anhand das Datums selbst zu entscheiden, ob eine Datei aktualisiert werden soll oder nicht, lösche ich lieber erst einmal alles weg. Auf diese Weise entledigt man sich auch Dateileichen, die gar nicht mehr verwendet werden.

Was ist mit “persönliche Dateien” gemeint, die nicht gelöscht werden dürfen? Ich meine damit alle Dateien und Verzeichnisse, die nicht in einem WordPress-Installationspaket enthalten sind, weil sie vom Blog-Admin angelegt oder angepasst werden müssen:

  • wp-config.php
    Das ist die WordPress-Konfigurationdatei, in der Sie die Daten und Pfade für Ihre Website angepasst haben.
  • eigene Themes
    Wenn Sie eine eigene Gestaltung für ihr Blog verwenden, dann haben Sie dafür hoffentlich ein eigenes Theme angelegt. Die Dateien für dieses theme liegen in wp-content/themes/namedesthemes.
  • Datei-Uploads
    Bilder und Anhänge, die Sie als WordPress-Redakteur mit der Upload-Funktion zu Ihren Beiträgen gestellt haben. Standardmäßig werden diese Dateien in wp-content abgelegt (jedenfalls ist das bei mir so).

Nun mal Butter bei die Fische. Hier ist meine Schritt-für-Schritt-Methode für ein smarteres WordPress-Update. Sie sollte mit jedem (S)FTP-Programm funktionieren, da Sonderfunktionen wie Verzeichnis-Synchronisation hier nicht verlangt werden.

Vorarbeiten:
Laden Sie sich die neue WordPress-Installation hier herunter. Wenn Sie keine Lust auf Überraschungen haben, lesen Sie die Liste der Änderungen (Changelog) , um schon im Vorhinein auf eventuelle Neuerungen/Inkompatibilitäten bei Themes und Plugins, die Sie möglicherweise verwenden, vorbereitet zu sein (vgl. Schritt 2 und 7).

Schritt 1: Backups ziehen
Sowohl der bisherige Stand der Datenbank als auch die Dateien der WordPress-Installation müssen gesichert werden. In der Regel bietet dazu der eigene Web-Hoster im Administrationsbereich Backup-Skripte oder zumindest Hilfestellungen an. Sonst: Hoster wechseln! Wer wirklich noch nie ein Backup angefertigt hat, bekommt zudem hier ein paar Hinweise.

Schritt 2: Standard-Theme einschalten und Plugins deaktivieren
Auch wenn Sie ein viel schöneres eigenes theme verwenden, sollten Sie jetzt im WordPress-Adminbereich das vorgefertigte Default_de-Theme einschalten, das wir gleich mit aktualisieren werden. Damit ist sichergestellt, dass Ihr Blog nach dem Upgrade zumindest mit dem Standard-Theme fehlerlos läuft. Mit der Deaktivierung der Plugins greifen wir eventuellen Inkompatibiltäten vor.

Schritt 3: Übergangs-index.php hochladen
… und damit die Original-index.php im WordPress-Wurzelverzeichnis auf dem Server ersetzen. Der Besucher sieht jetzt nur noch die Pausen-Benachrichtigung, so dass wir ungestört ans Upgrade gehen können.

Schritt 4: Dateien/Verzeichnisse löschen und neue Version hochladen
Um die Übersicht zu behalten, sollte man sich Verzeichnis für Verzeichnis vornehmen:

  • Alle wp-…-Ordner mit Ausnahme von wp-content löschen und in der neuen Version hochladen
  • Im Ordner wp-content folgende Dateien/Verzeichnisse löschen:
    wp-content/index.php
    wp-content/plugins/*.*
    wp-content/plugins/akismet
  • Im Ordner wp-content/plugins/themes alle Theme-Ordner löschen, die nicht von Ihnen erstellte/angepasste Themes enthalten. In der Regel sind dies die Ordner der vorgegebenen Themen classic, default und default_de

Schritt 5: Datenbank-Update ausführen
Das erledigt das upgrade.php-Skript, das Sie unter der (für Ihre Domain angepassten) Adresse http://meinedomain/wp-admin/upgrade.php aufrufen.

Schritt 6: Übergangs-index.php ersetzen
Zum Abschluss des Updates wird die Übergangs-index.php wieder durch Upload der Original-index.php aus dem neuen WordPress-Paket ersetzt. Damit ist das aktualisierte Blog wieder für Besucher sichtbar.

Schritt 7: Eigenes Theme und Plugins reaktivieren
Wenn das Blog ordentlich läuft, können Sie schließlich nacheinander im Admin-Bereich Ihr eigenes Theme und die einzelnen Plugins wieder einschalten. Bei jedem Schritt sollten Sie überprüfen, ob noch alles wie zuvor aussieht und funktioniert. Wenn nicht, dann können Sie unter der Prämisse auf Fehlersuche gehen, dass zwar die neue Software-Version läuft, dass aber das alte Theme oder Plugin noch angepasst werden muss.

Wenn Sie ein eigenes Theme verwenden, dann ist beim Update auf WordPress 2.3 eine Ergänzung der Datei wp-content/themes/eigenes-theme/index.php notwendig, um die neueingebauten WordPress-Tags anzuzeigen. Das erledigt der Aufruf

<?php the_tags('Tags: ', ', ', '<br />'); ?>

Wenn Sie wie ich für Ihr Theme nur die Standard-Dateien angepasst haben, dann können Sie diesen Code-Schnippsel bequem in der Datei wp-content/themes/default_de/index.php lokalisieren und an derselben Stelle auch in Ihrem Theme einfügen.

Schreibe einen Kommentar