- Werbung -

Hat ein Softwarerelease das Ende seines Lebenszyklus erreicht, wird es Zeit, sich Gedanken über ein Upgrade auf eine neue Version zu machen. Das ist bei dem beliebten CMS Drupal nicht anders als beispielsweise bei Windows oder Mac OS. Nachdem Anfang 2011 das neue Drupal 7 erschienen ist, hat sozusagen das letzte Stündlein für Drupal 5 geschlagen. Denn dieses wird nun nicht länger unterstützt und erhält keinerlei Updates mehr. Das gleiche gilt dementsprechend für die Erweiterungsmodule der Drittanbieter. Auch wenn kein Grund für Panik besteht, sollte man sich überlegen, ob es nicht langsam an der Zeit ist, die eigene Drupal-Webseit auf die Version 6 upzugraden. Oder sollte es gar gleich Version 7 sein? Der folgende Artikel soll hierzu ein paar Entscheidungshilfen geben.

Wann ist ein Upgrade sinnvoll?

Wer eine Seite betreibt, auf der sich fremde User anmelden können, um Inhalte zu posten, muss sehr viel mehr auf die Sicherheit seiner Installation achten, als der Betreiber einer Seite, auf die nur wenige, bekannte User - z.B. Angestellte - Zugriff haben. Die künftig fehlenden Sicherheitsupdates werden dann unter Umständen schnell zum Problem und legen ein baldiges Upgrade nahe. Ein anderer Grund für einen Umstieg kann aber auch der Wunsch nach neuen Funktionen auf der bisherigen Webseite sein. Zur Zeit gibt es das größte Modulangebot für Drupal 6 mit fast 6.000 Modulen, die, im Gegensatz zu ihren Drupal5-Versionen, in der Regel gut gepflegt werden. Damit wären wir dann auch gleich bei den Gründen, die gegen ein Umstieg auf die aktuellste Version Drupal 7 sprechen: Hierfür ist das Modulangebot noch sehr viel geringer. Die Drupal-Homepage listet gerade mal etwas mehr als 2.000 Stück auf. Wer also ein Drupal-Upgrade plant, sollte als allererstes die Modulverfügbarkeit unter Drupal 6 und 7 prüfen. Kann man die gewünschten Funktionen mit Hilfe von Drupal 7 realisieren, spricht dies dafür, gleich zwei Versionen hochzurüsten. Allerdings ist die Modulverfügbarkeit nur ein Aspekt. Ein zweiter kann die Verfügbarkeit des benutzten Templates sein. Auf auge.de verwenden wir beispielsweise das YAML-Framework. Das gibt es derzeit für Drupal 5 und 6. Für Drupal 7 ist es laut Aussagen des Programmierers zwar in Arbeit, aber ein konkretes Releasedatum erfährt man nicht. Ein Grund gegen ein Upgrade auf Drupal 7 - wobei man sich angesichts von so wenig Verlässlichkeit auch fragen kann, ob man bei der Gelegenheit nicht das Template wechselt. Hat man die Modul- und Templatefrage geklärt, kann man das Upgrade vorbereiten. Im folgenden wird davon ausgegangen, dass das Upgrade mit einer Drupal5-Installation zunächst auf Drupal 6 und dann auf Version 7 stattfindet.

Schritt für Schritt

Bevor es losgeht noch ein Hinweis: Nach jedem Arbeitsschritt sollte man ein Backup der Webseite und Datenbank machen. So kann man, im Falle dass etwas schiefgeht, jederzeit auf den vorherigen Stand zurückkehren und den Schritt wiederholen.

  1. Als erstes besorgt man die jeweils neueste Drupal-Version und zwar für Drupal 5, 6 und 7. Und auch die jeweils neuesten Versionen aller Module, die auf der derzeitigen Live-Seite im Einsatz sind - auch hier wieder für die Versionen 5, 6 und 7! Module, für die es kein Upgrade gibt, werden durch Alternativ-Module ersetzt - beispielsweise Workflow NG durch Rules. Module, die künftig nicht mehr benötigt werden und auch keinen Nachfolger brauchen - z.B. weil ihre Funktion mittlerweile vom Core übernommen wurde - werden vor dem Upgrade deinstalliert.
  2. Dann legt man eine vollständige Kopie der Webseite auf einem neuen Webspace an - das kann natürlich auch ein Unterverzeichnis im vorhandenen Webspace sein. An der Live-Webseite sollten nun keine Änderungen mehr vorgenommen werden, da diese nach dem Upgrade verloren sind. D.h. man muss dafür sorgen, dass die User keine Beiträge (Artikel, Kommentare, Forumposts) mehr verfassen können. Lesende Zugriffe können dagegen weiterhin erfolgen.
  3. Jetzt werden alle Module, die künftig nicht mehr verwendet werden, deinstalliert. Alle anderen Module und der Drupal Core werden auf die aktuelle Version upgedatet.
  4. Nun wird auf ein Standard-Drupal-Theme umgeschaltet. Bitte dabei prüfen, ob der Block mit dem Navigationsmenü dort eingeblendet ist, da andernfalls Admin-Funktionen nicht mehr zugänglich sind.
  5. Als nächstes werden alle Nicht-Core-Module deaktiviert. Hierfür sind meistens mehrere Durchgänge erforderlich, da Abhängigkeiten nicht von Drupal selber gelöst werden können. Jetzt ist ein Backup in jedem Falle erforderlich, bevor man mit dem nächsten Schritt weitermacht.
  6. Jetzt löscht man alle Drupal-Dateien vom Server. Das gilt auch für die Dateien im Webserver-Root-Verzeichnis und die Unterverzeichnisse.
  7. Dann lädt man die aktuelle Drupal6-Version hoch. Anschließend werden die Verzeichnisse (und deren Unterverzeichnisse) ../files und - falls vorhanden - die Domain spezifischen Unterordner von ../sites wieder angelegt und die alten Inhalte zurück gespielt. In den Dateien settings.php, .htaccess und robots.txt werden nun noch die ursprünglichen Modifikationen wieder eintragen - bei settings.php insbesondere die Zugangsdaten zur Datenbank, multilinguale Variablen oder shared Tables bei einer Multisite-Installation.
    Achtung: Das Unterverzeichnis ../sites/modules darf auf keinen Fall mehr die alten D5-Module enthalten, bevor wir mit dem nächsten Schritt fortfahren! Wer ein eigenes Theme für die Seite benutzt, spielt auch dieses jetzt ein. Wie üblich kommen eigenen Themes in den Ordner ../sites/all/themes.
  8. Zu diesem Zeitpunkt dürfen noch keine Drittmodule aktiviert sein. Am besten man lädt sie erst in den Ordner ../sites/modules nachdem dieser Schritt erfolgreich abgeschlossen wurde. Dazu setzt man in der settings.php die Variable $update_free_access auf TRUE (damit kann man update.php ausführen ohne als User 1 eingeloggt zu sein). Anschließen führt update.php (http://meine-domain.xy/update.php) aus. Es kann sein, dass hierbei Fehler auftreten. In der Regel genügt ein erneutes Ausführen von update.php, um diese verschwinden zu lassen. Jetzt setzt man die Variable $update_free_access wieder zurück auf FALSE (und speichert die settings.php natürlich auch wieder ab ;-)).
  9. Ist der letzte Schritt zuletzt fehlerfrei durchgelaufen, werden nun zunächst die Dritt-Module installiert, für die es spezielle Upgrade-Instruktionen gibt. Dies ist beispielsweise bei CCK, Views und Rules der Fall. Entsprechende Anweisungen geben die Module in ihrer Dokumentation. Erst danach werden alle anderen Module installiert und aktiviert - auch solche, die jetzt neu zum Einsatz kommen.
  10. Änderungen bei Inhaltstypen, Menüstruktur oder der Taxonomy sollten jetzt durchgeführt werden.
  11. Test, ob alles läuft, wie es soll.
  12. Soll gleich noch ein Upgrade auf Drupal 7 durchgeführt werden. So ist jetzt der Zeitpunkt hierfür gekommen. Dazu werden - nach vorherigem Backup natürlich - die Schritte 5 bis 9 wiederholt. Dieses mal aber mit den jeweils neuesten Drupal7-Core- und Moduldateien.
  13. Einschalten des neuen Templates, denn bisher läuft ja noch ein Standard-Drupal-Theme.
  14. Test der Seite. Läuft alles einwandfrei, kann die alte Live-Seite jetzt vom Netz genommen und die neue Seite stattdessen eingespielt werden.
War's das?

Mehr oder weniger. Bei Änderungen an der Seitenstruktur und geänderter Taxonomy kann es sein, dass die Pfade bestimmter Inhalte sich geändert haben. Wer den Suchmaschinen (aber auch anderen Seitenbesuchern) die in solchen Fällen üblichen 404-Fehler ersparen möchte, kann in der .htaccess die alten URLs per Redirect-Anweisung in die neuen umschreiben lassen. Ob einem dieser Aufwand wert ist sollte man genau prüfen, denn der Aufwand kann beträchtlich sein.

Links

Drupal Upgrade (englisch): https://www.drupal.org/upgrade
Download Drupal-Core (englisch): https://www.drupal.org/project/drupal
Download Drupal-Core (deutsch): http://www.drupalcenter.de
Download Drupal Dritt-Module (englisch): https://www.drupal.org/project/project_module

Stichworte: