Bisher war es so, dass mit der Veröffentlichung einer neuen Drupal-Version die Unterstützung für die Vor-Vor-Version endet. Mit der bevorstehenden Version 8 wird dieser Prozess etwas angepasst, so dass es nun ein dreimonatiges Zeitfenster gibt, in der Drupal 6 noch unterstützt wird.
In jedem Fall sollte eine Drupal 6 Seite aktualisiert werden. Diese Anleitung beschreibt die notwendigen Schritte, um von Drupal 6 auf Drupal 7 zu aktualisieren. Auch wenn es eine direkte Upgrade-Möglichkeit von Drupal 6 auf 8 geben wird, kan nder Zwischenschritt über Version 7 sinnvoll sein: meist dauert es eine Weile, bis Drittmodule mit einer neuen Drupal-Version funktionieren. Solange wäre dann die spezifische Funktion des Moduls nicht verfügbar. Dies lässt sich mit dem Upgrade auf Version 7 beheben.
Inhaltsverzeichnis
- Begriffe und Variablen
- Seitenanalyse
- Wartungsmodus
- Alte Module aktualisieren
- Dateien sichern
- Drittmodule deaktivieren
- Standard-Theme aktivieren
- Clean-URLs deaktivieren
- Cache leeren
- Drupal 7 herunterladen und installieren
- sites-Verzeichnis kopieren und Upgrade ermöglichen
- Upgrade starten
- Seite überprüfen
- Drittmodule aktualisieren
Begriffe und Variablen
Variable |
Bedeutung |
Beispiel |
$USERNAME |
Nutzername des Mysql-Root-Nutzers |
root |
$PASSWORT |
Passwort des Mysql-Root-Nutzers |
|
$DATENBANK |
Name der Drupal6-Datenbank |
|
$DATENBANKKOPIE |
Datei der Datenbankkopie |
drupal6.sql |
$URL |
Webadresse der Seite |
Da viele Schritte mit Drush durchgeführt werden, setzt diese Anleitung entsprechende Kenntnisse voraus.
Seitenanalyse
Vor dem Upgrade solltest du mindestens ermitteln, welches Theme und welche Drittmodule verwendet werden. Auf dieser Drupal-Seite kannst du heraus finden, ob Theme und Module für die neue Version verfügbar sind. Sofern das nicht der Falls ist, schaue dich nach entsprechendem Ersatz um.
Wartungsmodus
Die Seite sollte zu Beginn in den Wartungsmodus versetzt werden, damit keine Änderungen (Kommentare etc.) mehr von Nutzern vorgenommen werden können:
drush vset site_offline 1 && drush cc all
Alte Module aktualisieren
Einige Module (bspw. xmlsitemap) müssen in einer aktualisierten Drupal6-Version vorliegen, da ansonsten die Aktualisierung auf die jeweilige Drupal7-Version scheitert. Deshalb sollten die Module auf die aktuellste Druapl6-Version aktualisiert werden:
drush pm-up
Anschließend und sicherheitshalber die Datenbank aktualisieren:
drush updatedb
Dateien sichern
Das Drupal-Installationsverzeichnis und die Datenbank sollten vor dem Upgrade gesichert werden. Wird Mysql als Datenbank verwendet, lässt sich eine Kopie so anfertigen:
mysqldump -u $USERNAME -p $PASSWORT $DATENBANK > $DATENBANKKOPIE
Drittmodule deaktivieren
Alle Drittmodule müssen vor dem Upgrade deaktiviert werden:
drush pml --no-core --type=module --status=enabled --pipe > modules.list for module in `cat modules.list`; do drush -y dis $module; done
Standard-Theme aktivieren
Weil das aktuelle Theme möglichweise nicht mehr unterstützt wird, sollte Garland als Standard-Theme aktiviert werden:
drush pm-enable garland -y && drush vset theme_default garland -y
Clean-URLs deaktivieren
Möglicherweise unterstützt die neue Drupal-Installation noch keine Clean-URLs. Damit die neue Seite bedienbar ist, sollte diese Funktion ebenfalls deaktiviert werden:
drush vset clean_url 0 -y
Cache leeren
Letzter Schritt in der alten Installation:
drush cc all
Drupal 7 herunterladen und installieren
Nun kann die neue Drupal-Version herunter geladen, entpackt und der Webserver (bspw. apache) entsprechende konfiguriert werden.
sites-Verzeichnis kopieren und Upgrade ermöglichen
Das alte sites-Verzeichnis der Drupal 6-Installation wird nun in das neue Drupal 7-Verzeichnis kopiert. Das bestehende Verzeichnis wird dabei überschrieben. Anschließend wird der Upgrade-Prozess per Weboberfläche aktiviert. Dazu muss die folgende Variable in der Datei settings.php im entsprechenden sites-Verzeichnis gesetzt werden:
$update_free_access = TRUE;
Upgrade starten
Der Update-Prozess kann nun per Browser unter der Adresse $URL/update.php gestartet werden. Der Browser-Tab darf dabei nicht geschlossen werden.
Nach erfolgreichen Upgrade muss die Upgrade-Möglichkeit per Browser wieder deaktiviert werden (siehe oben):
$update_free_access = FALSE;
Seite überprüfen
Nun kannst du überprüfen, ob sich deine Seite so verhält, wie du es erwartest. Dazu kannst du u.a. die Seite $URL?q=admin/reports/status aufrufen.
Anschließend den Wartungsmodus deaktivieren und ggf. Clean-URLs wieder aktivieren:
drush vset site_offline 0 && drush cc all & drush vset clean_url 1 -y && drush cc all
Drittmodule aktualisieren
Eventuell musst du benutzte Drittmodule aktualisieren. Dies ist mit drush pm-update recht einfach. Nach der Aktualisierung kannst du die Module mit Hilfe der erstellten Modulliste wieder aktivieren:
for module in `cat modules.list`; do drush -y en $module; done
Eventuell werden einige Module nicht für Drupal 7 verfügbar sein - entweder, weil ihre Funktionalität in der Kern integriert wurde, oder weil ihre Weiterentwicklung eingestellt wurde.
Image-Modul migrieren
Das alte Image-Modul wird nicht mehr unterstützt. Die entsprechenden Felder müssen migriert werden, was leider nicht automatisch erfolgt. Die Entwickler des alten Image-Moduls bieten ein Modul an, mit dem die Migration vorgenommen werden kann. Notwendig ist die Installation des Moduls Field-Convert.
im Drupal-sites/all/modules-Verzeichnis wird das Verzeichnis image_legacy angelegt
dort die folgenden drei Dateien speichern:
wget http://cgit.drupalcode.org/image/plain/image_legacy.field_convert.inc wget http://cgit.drupalcode.org/image/plain/image_legacy.info wget http://cgit.drupalcode.org/image/plain/image_legacy.module
Modul aktivieren
drush dl field_convert && drush en field_convert -y && drush en image_legacy -y
- nun kann über die Admin-Oberfläche die Konvertierung ausgeführt werden: $URL/?q=admin/content/field_convert
möglicherweise kommt es anschließend beim Bearbeiten von nodes zu einer Fehlermeldung: required in field_default_form() (line 61 of /../drupal/modules/field/field.form.inc). - mögliche Lösung
- falls image-styles aktiviert sind und Bilder nicht angezeigt werden, kann es helfen, clean urls abzuschalten.