TYPO3-Projekt für Upgrade vorbereiten

Dieser Artikel ist ursprünglich am 06. 07. 2011 erschienen.
Das ist eine ganze Weile her. Der Inhalt ist wahrscheinlich nicht mehr aktuell.

Ein Redaktionssystem wie TYPO3 möchte in regelmäßigen Abständen aktualisiert werden, sonst leidet die Performance und vor allem die Sicherheit. Regelmäßige Upgrades sind also Pflicht.

1. Möglichkeit: Operation am lebenden System

Eine Möglichkeit ist, das Live-System direkt zu aktualisieren. Man lädt die neue TYPO3-Version hoch, setzt den Link auf den neuen Sourcecode, kopiert die neue index.php in das Verzeichnis des Projekts und aktualisiert  im Install-Tool die Datenbank-Tabellen. (Vorher sollte man unbedingt ein Backup erstellen und alle Extensions auf den neuesten Stand bringen.)
Das ist die Methode, die wahrscheinlich am häufigsten benutzt wird.

Was aber, wenn ein sehr umfangreiches Upgrade ansteht? Wenn man absolut sicher gehen möchte, dass die Website sich nicht für ein paar Stunden verabschiedet, während man hektisch im Hintergrund versucht, das Backend wieder sichtbar zu machen und Bugs zu finden?
Die .htaccess und localconf.php im Live-Betrieb hinzubiegen ist jedenfalls nichts für schwache Nerven.

2. Möglichkeit: Schattensystem einrichten

Wer keine Lust auf diesen Spaß hat und ohne Zeitdruck Probleme beheben und Fehler suchen möchte, dem sei empfohlen, ein Schattensystem, also eine Kopie des aktuellen Projekts zu erstellen. Das ist nicht schwierig, aber natürlich mit etwas Arbeit verbunden.

Aufräumarbeiten

Zunächst einmal geht es ans Aufräumen.
Die Datenmengen, die sich mit der Zeit angesammelt haben, können ziemlich groß sein. Daher ist es sinnvoll, den typo3temp-Ordner zu leeren. In den neueren TYPO3-Versionen bietet das Install-Tool den Unterpunkt „clean up“ an.
Dann bereiten wir das Schattensystem vor.

Für unsere Kopie brauchen wir

  • eine (neue) Subdomain
  • eine leere Datenbank
    (Namen, Passwort, Benutzername und Host notieren!)
  • ein neues Verzeichnis mit einer Kopie des TYPO3-Projekts

Eine neue Subdomain einrichten

Bei einigen Providern kann man eine neue Subdomain selbst im Kundenmenü einrichten. Es dauert normalerweise höchstens ein, zwei Stunden, bis die Subdomain ansprechbar ist.
In anderen Fällen muss man den Provider beauftragen, eine Subdomain anzulegen. Das kostet in der Regel eine Gebühr und es dauert meist etwas länger.
Ehe wir weitermachen, müssen wir also erst einmal abklären, ob eine Subdomain vorhanden und ansprechbar ist.

Datenbank-Dump erstellen

Zum Erstellen eines Backups über MySQL brauchen wir den Namen, Benutzernamen, Host und Passwort für die aktuell genutzte Datenbank. Diese Daten finden sich zum Beispiel im TYPO3-Install-Tool unseres Projekts.

Um das Install-Tool zu aktivieren, erzeugt man unter
Benutzerwerkzeuge >Einstellungen > Adminfunktionen
die Aktivierungsdatei* („ENABLE_INSTALL_TOOL“)
*bitte später auch wieder löschen!

Nun ist das Install-Tool zugänglich. Unter Basic Configuration sehe ich, ob alles soweit funktioniert (viele grüne Felder ). Weiter unten finden sich auch die Einstellungen zur Datenbank. Einzig das Passwort kann ich (bei den neueren TYPO3-Versionen) hier nicht einsehen.

Per ssh führe ich folgenden Befehl aus:

mysqldump --opt -h host -u username -pPasswort dbname > backup.sql

[Achtung, bitte alle grün markierten Namen ersetzen durch die jeweiligen Bezeichnungen für die Datenbank!]
Den Namen für meine Backup-Datei kann ich mir aussuchen. Nun habe ich also eine Datenbank-Dump namens backup.sql erzeugt.

DB-Dump in neue Datenbank einlesen

Dieses Backup lese ich in meine neu erstellte Datenbank ein:

mysql -h host -u username -pPasswort neue_dbname < backup.sql

[Dass zwischen p und Passwort keine Leerstelle ist und an anderen Stellen schon, ist übrigens kein Tippfehler.]

Kopie des TYPO3-Projekts

Nun lege ich in meiner Verzeichnisstruktur ein neues Verzeichnis für die Kopie meines Projekts an. In meinem Verzeichnis befinden sich folgende Verzeichnisse, Dateien und Links:

TYPO3 Ordnerstruktur

[Anmerkung: Die _.htaccess ist natürlich nicht nötig und auch die *.txt-Dateien braucht Ihr nicht zu kopieren, genauso, wie .mc und .magick nicht direkt zum TYPO3-Projekt gehören.]

Nun weise ich in meinem Kundenmenü der Subdomain den Pfad dem Verzeichnis zu, in dem sich mein kopiertes Projekt befindet.

Manche Provider legen für die Subdomain einen eigenen Pfad in der Verzeichnisstruktur an. In dem Fall muss die Kopie natürlich im Verzeichnis der Subdomain abgelegt werden.

Erster Aufruf des Install-Tools

Zuerst erstelle ich im Ordner typo3conf des kopierten Systems die Aktivierungsdatei fürs Install-Tool (ich arbeite hier gern mit ssh):

touch ENABLE_INSTALL_TOOL

Nun kann ich das Install-Tool über die Subdomain im Browser aufrufen. Im Install-Tool gehe ich zu Basic Configuration.

Unter dem Punkt Update localconf.php kann ich den Benutzernamen für die neue Datenbank eingeben (oft identisch mit dem Namen der Datenbank) und das neue Passwort.
Unten auf der Seite Update localconf.php anklicken, um die neuen Daten zu speichern.
Dann noch einmal zum Punkt Update localconf.php und jetzt die neu eingerichtete Datenbank auswählen. Wieder speichern, fertig.
Erst jetzt ist unsere Kopie tatsächlich unabhängig von unserem Original-System.

Alles okay?

Als nächstes rufe ich Frontend und Backend auf und klicke mich durch die Website.
Funktioniert alles? Sieht es genauso aus wie beim Original?

Wenn alles passt, kann ich ohne Bauchschmerzen Upgrades durchführen, neue Elemente einbauen und so weiter. Das Original-System wird nicht in Mitleidenschaft gezogen.
Sobald ich zufrieden bin, setze ich das kopierte System an die Stelle des Originals.