<!-- Hier den Titel einfügen -->T I T E L
mkberlin.com :: frühjahr 2018 :: progress in constructing
 

Schwerpunkt:: TYPO3 CMS - Versionsupgrade 6.2 auf 7

Update von Version 6.2 auf 7 - Schritt 1: v6.2 ist Pflicht!

Einleitung

Alle Jahre wieder läuft auch für die treueste TYPO3-Installation mit Langzeitunterstützung (LTS) der Support aus.
So auch für TYPO3 6.2 LTS, jetzt in diesem März.
Ein Upgrade auf Version 7 LTS bringt wieder Sicherheit bis November 2018 und natürlich auch einige neue Features und Verschönerungen, die in solchen neuen Releases TYPO3 noch besser machen.

TYPO3 mit all seinen Möglichkeiten ist nicht trivial, insofern ist solch ein Update nicht unbedingt im Vorbeigehen zu erledigen, sondern es sollte gut vorbereitet werden. Insbesondere wenn das CMS mit Extensions angereichert ist.

Ausgangspunkt für die Vorbereitung sollte zunächst eine Google-Suche zum Thema sein.
Um so eine Suche jetzt durchzuführen, hier klicken.

Immer wieder hervorragend geeignet für Recherchen zum Thema TYPO3 sind die Seiten von jweiland.net.
Zum Thema Update von 6 auf 7 finden sich hier gute Informationen.

Die neuesten Release-Informationen und Installations-Ressourcen finden sich im Downloadbereich von typo3.org, hier die Sprungmarke dorthin.
Ende Februar 2017 ist die Version 7.6.16 aktueller LTS-Release.

Älteres TYPO3 auf Version 6.2.30 upgraden

Zunächst sollte die bislang eingesetzte TYPO3-Installation auf die Version 6.2.30 aktualisiert werden. Das habe ich in den vergangenen Tagen bei drei meiner Installationen live im Webspace durchgeführt, zeitweise ging mir ganz schön die Muffe, weil die Websites anschließend weiße Flächen waren oder nur noch Fehlerblöcke mit SQL-Statements anzeigten. Mit etwas Pioniergeist und den richtigen Suchphrasen gelang mir die Operation.

Nur mit Netz und doppeltem Boden
Zur Sicherheit sollte zuvor in jedem Fall sowohl ein Backup der Verzeichnisstruktur, als der der zuständigen Datenbank erfolgen. Läuft etwas schief, dann kann der Status Quo des CMS wiederhergestellt werden. Für mich zumindest in der Theorie, praktisch habe ich es noch nicht probiert, es scheint mir jedoch aufgrund der Komplexität des Systems fast unglaublich, aus einer Archivdatei und einem SQL_Dump alles vollends problemfrei in dem leeren WebSpace eines Servers vollfunktional aufzuspannen. Diese Erfahrung fehlt mir noch.

Nestpflege vor dem Flug
Mal ehrlich gesagt, habe ich mich in den Jahren nach der Erstinstallation 2014 kaum um die Pflege und Aktualisierung der TYPO3-Kernanwendung und ihrer Erweiterungen bemüht.
So galt es eine Version 6.1.7, eine 6.1.8 und eine 6.2.12 zu aktualisieren.

Folgende Abläufe lese ich aus meinen Aufzeichnungen zu den Installationen:

  1. Im vorhandenen System das Install-Tool aufrufen und den Database-Analyzer ausführen.
    Nun wird es knifflig. Als Ergebnis dieses Aufrufs liefert TYPO3 eine Liste mit SQL-Statements, die die Datenstruktur einiger Datenbanktabellen modifiziert. Aber wie weiss ich welche Tabellen von TYPO3, welche von Drittanbieter- oder eigenen Extensions sind?
    Einem Wechsel der ENGINE von MyISAM auf InnoDB stimme ich vertrauensvoll zu.
    Eigene Extensions geben ihren Namen an Tabellen weiter. Daher sollten Tabellen mit entsprechenden Bezeichnungen (tx_NameMeinerExtension_domain_model_...) unbedingt erhalten bleiben. Die kennt der Wizard meistens nicht, daher sortiert er sie aus und bietet sie zum Löschen an. Nicht löschen!
    Ich bin dann mit Gefühl vorgegangen. Beim ersten Mal in Unkenntnis einfach angehakt und unbedarft umbenannt und sogar gedropt! Mein Backup rettete mir die CoolUri-Funktionalität einer Website durch Zurückspielen zweier Tabellen. Bei der letzten Aktualisierung wählte ich viel bedachter.
    Manche Tabellennamen sind einfach bekannt, wenn TYPO3 zum Leben gehört.

  2. Im Erweiterungsmanager des Backends sollte von Zeit zu Zeit unter dem Punkt Erweiterungen hinzufügen das TYPO3-Erweiterungs-Repository (TER) durch Klick auf die Schaltfläche Jetzt aktualisieren auf den neuesten Stand gebracht werden, das geht wohl nicht automatisch.
    Abschließend erscheinen nach Auswahl von Erweiterungen verwalten in der Liste alle installierten Erweiterungen. Die erste Spalte dieser Tabelle gibt Auskunft über verfügbare Updates zu jeder Extension. Die angezeigte Neueste muss jedoch nicht unbedingt die passende sein.
    Also Klicke ich auf den ersten Spaltenkopf Akt. und sortiere mir dadurch die potentiellen Update-Kandidaten in der Liste nach oben.

  3. Für jede zu aktualisierende Erweiterung kopiere ich mir den Schlüssel (z.B. extension_builder ), wechsele ins Modul Erweiterungen hinzufügen und füge dort den Schlüssel ins Suchfenster ein und lasse mir die Ergebnisse anzeigen. In der dann erscheinenden Liste klicke ich auf den zugehörigen Eintrag in der Spalte Version. Nun werden alle Informationen zur Erweiterung und deren Versionsreleases mit Kommentaren angezeigt.
    Im Kommentartext findet sich oftmals eine Angabe zur Kompatibilität mit TYPO3-Versionen. Hier die passende, höchste Versionsnummer auswählen und in der Spalte Aktionen die Extension importieren und installieren. Aufwändige Recherchen im Manual schreckten mich ebenfalls ab, diesen Versionssprung jetzt auf die Schnelle noch mitzunehmen. Bestenfalls dann nach jedem Update noch die Funktionalität der jeweiligen Erweiterung prüfen, ebenso wie eventuell erforderliche oder nun mögliche Konfigurationsanpassungen vornehmen. Das also für jede Erweiterungen der Liste.

  4. Der Upgrade-Wizard im Installations-Tool ist der nächste Gefährte auf dem Weg zum frischen TYPO3. Dieser kann in der Regel durchgeklickt werden und zeigt zum Abschluss keine Updateschritte mehr nötig, starte jetzt den Database-Analyzer.
    Dieser Datenbankanalyseassistent ist, wie schon oben erwähnt, mit Vorsicht zu geniessen.
    Nach diesen Vorbereitungsschritten kann jetzt das eigentliche Update auf Version 6.2.30 erfolgen.

Nicht mehr kleckern, sondern klotzen
Waren die letzten Schritte der Vorbereitung ziemlich speziell und auch zum Teil richtig heikel, so folgt nun der gröbere Teil des Updates und der ist relativ einfach. Mit Symlinks noch einfacher, doch soweit bin ich jetzt noch nicht.

Ran ans Werk mit einem FTP-Client, wie beispielsweise Filezilla.
Die Verzeichnisse t3lib und typo3 werden umbenannt (z.B. t3lib_server_bis_2017-03-04),
auch die index.php derart umbenennen (z.B. index.php_server_bis_2017-03-04.mybackup ).

Auf dem eigenen Computer gilt es nun lokal die Installationsressource typo3_src-6.2.30.zip zu Öffnen und zu entpacken.
Erforderlich sind der Ordner typo3 und die Datei index.php.
Diese beiden Verzeichnisobjekte werden nun mit Filezilla ins TYPO3-Installationsverzeichnis auf den Webspace hochgeladen. Sie ersetzen dort die umbenannten Objekte.
Das kann etwas dauern. Eleganter wäre eine Lösung direkt über die SSH-Shell, haben wir jetzt aber nicht.

Anschließend könnte die Internetpräsenz wieder funktionieren, das war's nämlich schon. Um die Unterbrechung während des Updates kenntlich zu machen, wäre es sinnvoll für die Dauer der Maßnahme ein entsprechendes Error-Dokument anzuzeigen. Oder erst die Objekte hochzuladen (unter anderen Namen) und dann kurzzeitig umzubenennen.

Und nochmal das Install-Tool
Zum Abschluss der Aktualisierung wird nochmal das Installations-Tool aufgerufen.
Der Upgrade-Wizard hilft hier wiederum bei den ersten Schritten, dann der Database-Analyzer, zu finden über Important Actions. Dort Compare current database with specifications klicken, und behutsam die Datenbankmanipulationen auswählen und durchführen.
Nun noch einen Check for broken exensions veranlassen und Clear all cache klicken.
Ein abschließendes Core-Update zeigt keine weiteren Updates an.

Damit ist das Wichtigste getan, TYPO3 kann nun auf Version 7 gehoben werden.
Unter System environment und Folder structure finden sich unter Umständen noch Hinweise zu Fehl- oder Falschkonfigurationen, die angepasst werden sollten.

Wahrscheinlich hatte ich Glück, dass erst im Frühjahr 2014 TYPO3 nach 2002 wieder meinen Weg kreuzte. Die Aktualisierungen von CMS-Veteranen vor der Version 6 sind wohl noch heikler und aufwandsintensiver.

Eine gute Anleitung zur Vorbereitung des Updates findet sich weitergehend noch hier.

Wie eine Kopie eines TYPO3-Projekt via SSH-Zugang erstellt werden kann steht hier.

Älteres TYPO3 auf Version 6.2.30 upgegraded

Update von Version 6.2 auf 7 - Schritt 2: Von jetzt ab mit Symlinks und Shell

Hast Du Shell, kannst Du zaubern ;-)

Die Eingabeaufforderung, der Prompt. Analog scheinende Tausendsassa mit verblüffender Wirkung.
Bei vielen Webhostern gibt es durchaus leistungsstarke Pakete zu günstigen Preisen, die unter Umständen mit einer Einschränkungen daherkommen, es gibt unter anderem keinen Shell-Zugang zum Webserver, der kann jedoch einfach nachgerüstet werden.

Ich installiere zunächst die PHPshell auf meinem WebSpace.
Dazu die PHP-Shell hier herunterladen und das Archiv entpacken.
Ein User muss mittels Editor in der Datei config.php im Abschnitt [users] angelegt werden.
Dazu die Zeile benutzername = "passwort" einsetzen. Benutzername und Passwort können natürlich frei gewählt werden.
Da die Software seit einiger Zeit nicht weiterentwickelt wird, enthält sie veraltete Befehle, die auf dem WebServer dazu führen, dass das Skript mit einer Fehlermeldung abgebrochen wird. Die Lösung liegt in der Bearbeitung des Skripts phpshell.php.
Dort muss an zwei Stellen vor ereg ein @-Zeichen eingefügt werden @ereg - einfache Lösung.
Jetzt den Inhalt aus dem auf dem Rechner entpackten Verzeichnis phpshell-2.1 in das Stammverzeichnis unseres Webspace hochladen. Dort sollte das Verzeichnis unverzüglich nach der Nutzung gelöscht werden, es stellt eine Sicherheitskrücke dar.

Aufgerufen wird die Shell über meine-domain.de/phpshell-2.1/phpshell.php.

Nun mit Benutzername und Kennwort anmelden und los kann's gehen.
Current Working Directory: /is/htdocs/wp1234567_XYZ2ABCDE2/www/phpshell-2.1

Die Arbeitsfläche findet sich neben dem $-Zeichen, oberhalb der Execute Command-Taste, dort wird geklickt und dann absolut exakt eingetippt, was im Folgenden fett markiert ist. Präzision ist immanent.
Die dabei kursiven Bereiche der Befehlsketten müssen an die individuellen Erfordernisse angepasst werden. Im Zweifel besser nichts ins Blaue probieren. Kommandos dieser Art sind kurz & knackig, ein falscher Buchstabe, ein vergessenes (Leer)Zeichen, Tippfehler - schon ist der Schlamassel da und im eigenen Webspace herrscht das Chaos, be very careful in knowing what You do!

Los geht es mit dem Wechsel ins Haupt-/Root-/Stammverzeichnis des WebServers
cd ..
übersetzt :: change directory .. geh' einen hoch
Ergebnis :: Current Working Directory: /is/htdocs/wp1234567_XYZ2ABCDE2/www

Kopie einer vorhandenen TYPO3-Installation erstellen und zugänglich machen

Das folgende Kommando erstellt eine komplette Kopie der TYPO3-Dateien und Ordner
cp -ar meinTYPO3/ kopieTYPO3/ 

Das später noch folgende Kommando erstellt eine komplette Kopie der mySQL-Datenbank von TYPO3 in eine neue Datenbank.

Die LocalConfiguration.php muss auch noch angepasst werden.

Jetzt fehlt noch eine Subdomain für den Zugang zum TYPO3-Klon, dann kann das Update losgehen.

Perfekt beschrieben hier.

TYPO3-Installationsressource zentral bereitstellen und symbolische Verknüpfungen erstellen

Das folgende Kommando lädt die neueste Version der TYPO3-Dateien und Ordner ins DocumentRoot des Webservers.
Nach dem Erstaufruf mit cd .. ins Hauptverzeichnis der Webservers wechseln.
wget get.typo3.org/7 -O typo3_src-7.6.16.tar.gz

Das folgende Kommando entpackt das neueste TYPO3-Installationsarchiv im DocumentRoot
tar xzf typo3_src-7.6.16.tar.gz

Mit folgendem Kommando in das DocumentRoot-Verzeichnis der - wie oben beschrieben - Kopie von TYPO3 wechseln.
cd kopieTYPO3/

Symbolische Links im DocumentRoot des neuen Projekts anlegen
ln -s ../typo3_src-7.6.16 typo3_src
ln -s typo3_src/index.php index.php
ln -s typo3_src/typo3 typo3