Ich habe gestern die 17 WordPress-Installationen, auf die ich Zugriff habe, auf die neueste Version 2.8.2 aktualisiert. Da mir das Ganze über den Browser, das Backend und die dortige "autoupgrade" Funktion zu lange dauert, obendrein bei allen Installationen die deutsche WordPress-Version von wordpress-deutschland.org zum Einsatz kommt und einige der Installationen schon mehrere grosse Versionsprünge hintendran waren, habe ich die Aktualisierungen manuell per FTP gemacht. Ich habe da schon länger eine Methode, die sich bislang als sehr stressfrei und stabil erwiesen hat, diese möchte ich heute mal vorstellen.

Wie bei allen Updates gilt: Backups machen. Vorher. Umfassend. Datenbank, Theme-Dateien, Uploads, eigene Modifikationen. Nicht, dass hinterher das Geschrei groß ist, gelle?

Den Ablauf, den ich beschreibe, gilt prototypisch und muss gegebenenfalls an die eigene Installation angepasst werden. So habe ich zb hier im Blog diverse php.ini und .htaccess Dateien in den Vereichnissen wp-admin und wp-includes, die natürlich mit in die neue Version umziehen müssen.

Weiterhin ist es so, dass alle WordPress-Installationen, mit denen ich hier zu tun habe, in eigenen Verzeichnissen "leben" auf dem Server und nicht das WordPress-Verzeichnis selbst schon die htroot des Servers ist. Wie ich gleich zeigen werde, erleichtert diese Verzeichnisgeschichte das Aktualisieren ungemein, gerade, wenn man über mehrere große Versionssprünge hinweg aktualisiert.

Los gehts:

  1. Neueste Version runterladen und auf den Server hochladen. Entweder, man entpackt das Archiv lokal und lädt das entpackte Verzeichnis auf den Server, oder man hat die Möglichkeit auf dem Server zu entpacken, was das Warten auf die Übertragung der Dateien wesentlich abkürzt. :-)
  2. Ich habe mir angewöhnt, dass neu hochgeladene Verzeichnis so zu benennen, wie das Verzeichnis, in dem WordPress momentan lebt, und die Versionsnummer anzuhängen. Also angenommen, dass WordPress-Verzeichnis heisst "wordpress", dann lade ich die neue Version parallel dazu und benenne es "wordpress-282".
  3. Als nächsten Schritt werden alle Dateien, die für das eigene Blog nötig sind und/oder modifiziert wurden, auf dem Server verschoben, und zwar vom alten Standort innerhalb "wordpress" auf den neuen Standort "wordpress-282". In der Regel sind das:

    ./.htaccess
    ./wp-config.php
    ./wp-content/uploads/*.*
    ./wp-content/themes/[verwendetesThemeVerzeichnis]/*.*
    ./wp-content/plugins/*.*

    Hier müsst Ihr selbst wissen, welche anderen Dateien evtl. noch dazukommen. Bei verwendung eines Cache Plugins gibt es zb. innerhalb von /wp-content/ noch andere Verzeichnisse, die verschoben werden sollten.
  4. Danach wird "wordpress" in "wordpress-281" (also die Versionsnummer, die bislang verwendet wurde) umbenannt, und aus "wordpress-282" wird "wordpress"
  5. Besucht das Blog im Frontend und schaut, ob alles noch so aussieht, wie gehabt. Im Quelltext sollte nun bei "meta name='generator'" die neue Versionsnummer auftauchen.
  6. Besucht die wp-admin Seite unter blogurl.domain/wp-admin/ oder blogurl.domain/wordpress/wp-admin/ (je nachdem, wie Euer Blog konfiguriert ist). Bei größeren Versionssprüngen (aber auch manchmal bei den Kleinen) kommt statt des erwarteten Login-Screen ein Dialog, der zum Aktualisieren der Datenbank dient. Diesen durchziehen und das Update ist fertig.
  7. Zuletzt lohnt sich, die ./wordpress/config-sample.php mit der verschobenen ./wordpress/config.php zu Vergleichen, um zu sehen ob/welche neuen Optionen (zb die Secret-Keys) aufgenommen werden sollten.

Das Schöne an dieser Methode ist, dass nur die paar Dateien, die individuell für das Blog zuständig sind, in die neue Version übernommen werden und alles andere frisch und unverbastelt ist.

Angenommen, man muss von Version 2.3.3 auf Version 2.8.2 aktualisieren. Die Wahrscheinlichkeit, dass man damit an die Wand fährt, wenn man es wie oben beschrieben macht, ist relativ groß, weil die Versionen zu weit auseinanderliegen und somit das Datenbankmodell, was die neue Version aktualisieren will, noch garnicht vorhanden ist. Macht bumm, wahrscheinlich.

Deshalb lädt man nicht nur die neueste Version auf den Server, sondern die jeweils letzten der Versionen zwischen der installierten und der neuesten auch. Alle Versionen findet man zb im Archiv der wordpress-deutschland.org Seite.
Wenn man vor dem Upload die Verzeichnisse schon wie oben beschrieben umbenennt, dann hat man, nachdem alle Verzeichnisse hochgeladen wurden, sowas:

/wordpress/
/wordpress-251/
/wordpress-265/
/wordpress-271/
/wordpress-282/

auf dem Server.

Nun verschiebt man, wie oben beschrieben, auf die nächst höhere Version, benennt diese dann in "wordpress", die alte in "wordpress-233", macht die Frontendbesuche wie oben beschrieben und wiederholt das Ganze für die nächste höhere Version, usw ... das klingt umständlich, ist aber relativ schnell gemacht.

Der hier beschriebene Fall hat bei mir ca. eine viertel Stunde gedauert, davon ging die meiste Zeit mit warten auf den Abschluss der FTP-Datenübertragung auf den Server drauf.

Happy Updating! :-)