Das ist eine detaillierte Anleitung für einen manuellen Typo3 Serverumzug, verbunden mit einem Typo3 Update. Das ist sinnvoll, wenn man eine “saubere” neue Typo3 Version braucht, und nicht die Update-Funktion nutzen will. Die Schwierigkeiten liegen hier im Detail, deshalb beschreibe ich auch die auftretenden Kleinigkeiten und Fehlermeldungen.

Der Ablauf ist grundsätzlich:

  • aktuelle Typo3 Version auf neuem Server installieren
  • Datenbank Backup altes System
  • Datenbank Backup im neuen System einspielen
  • Files vom alten ins neue System kopieren
  • Extensions wieder installieren

Der grundsätzliche Ablauf ist hier gut beschrieben: Typo3 Backup Anleitung, ich beziehe mich darauf und beschreibe eher die ergänzenden Details. Mein Update war von 4.2.6 auf 4.4.5.

Backup im alten System

Es macht Sinn die Tabellen stückweise in Teil-Backupfiles zu schreiben, immer nur 3-5 Tabellen in ein zip. Erstens wegen Beschränkungen auf maximale Dateigröße und Skriptlaufzeit im phpmyadmin. Aber auch wegen den Problemen beim Importieren, dann kann man auch stückweise importieren.

Folgende Tabellen kann man weglassen:

  • alle Tabellen die mit cache_ beginnen
  • static_tsconfig_help (außer man will alte Hilfetexte behalten, dann muss man die Tabelle im neuen System leeren)
  • sys_lockedrecords – die Records an denen gerade andere User schreiben,
  • sys_history, sys_log: diese nur mitnehmen, wenn man die History und Log-Files behalten will (z.B. für Wiederherstellung)

Import im neuen System

Vor dem Import CHARSET überprüfen, alte System laufen oft noch mit latin-1, neue dagegen auf UTF-8. Am Ende von jedem CREATE TABLE Statement muss DEFAULT CHARSET=utf8 stehen, dann werden die Daten richtig eingetragen. Wenn doch Probleme mit Umlauten auftauchen, über die SQL-Datei ein Search/Replace mit HTML-Entities (ä und sowas) laufen lassen.

Beim Datenimport gibt es einige SQL Fehlermeldungen, da die Tabellen von der Installation aus nicht leer sind. Ich empfehle im neuen System die Tabellen-Liste erst einmal anzusehen, und jede Tabelle die nicht leer ist macht ziemlich sicher Probleme. Die kann man ja erst mal manuell abgleichen.

Bei mir waren das folgende Tabellen:

  • be_users: da gibt es einen doppelten Eintrag mit der ID 1, das ist der Admin Login ins neu installierte System. Die UID einfach in 100 ändern, oder löschen wenn man sich traut.
  • be_groups: bei mir gab es eine Default Backend-Gruppe, ich will aber die Backend-Gruppen vom neuen System beibehalten und habe sie daher gelöscht.
  • be_sessions: wenn da was drin steht ist gerade ein Backend-User im neuen Typo3 eingeloggt. Diesen ausloggen, und dann den Eintrag löschen.
  • static_tsconfig_help:  am besten gar nicht importieren
  • sys_history, sys_log: leeren, das sollten nur wenige Einträge sein (logging von der Installation)

Zusätzliche Tabelleneinträge anlegen

Viele Extension legen in bereits vorhandenen Tabellen neue Einträge an, die fehlen natürlich dann beim Datenimport. Erste Möglichkeit ist die betroffenen Tabellen zu löschen, dann werden sie neu angelegt.

Ich wollte aber die neuen Tabellen beibehalten und die fehlenden Tabelleneinträge nur ergänzen. Betroffene Tabellen sind üblicherweise pages, tt_content und sys_template. Das geht relativ einfach mit SQL:

Es gibt im Backup immer den CREATE table Eintrag, in diesem Beispiel sind die letzten 2 Einträge die von RealURL.


CREATE TABLE IF NOT EXISTS `pages` (

`uid` int(11) NOT NULL auto_increment,
`pid` int(11) NOT NULL default '0',
`t3ver_oid` int(11) NOT NULL default '0',
`t3ver_id` int(11) NOT NULL default '0',
`t3ver_wsid` int(11) NOT NULL default '0',
`t3ver_label` varchar(30) NOT NULL default '',
(...)
`l18n_cfg` tinyint(4) NOT NULL default '0',
`fe_login_mode` tinyint(4) NOT NULL default '0',
`tx_realurl_pathsegment` varchar(60) NOT NULL default '',
`tx_realurl_exclude` int(1) NOT NULL default '0',

PRIMARY KEY (`uid`)
(usw.)

Diese Einträge einfach mit ALTER table hinzufügen:

ALTER TABLE `pages` ADD `tx_realurl_pathsegment` varchar(60) NOT NULL default '';
ALTER TABLE `pages` ADD `tx_realurl_exclude` int(1) NOT NULL default '0';

Das gleiche Prinzip funktioniert auf für alle anderen Extensions und Tabellen.

Dateien hochladen

Im Hauptordner typo3conf gibt es eine wichtige Datei: localconf.php. Die muss auch aktualisiert werden, aber am besten manuell bzw. mit einem diff-Tool (z.B. WinMerge). Darin steht z.B. Username+Passwort zur Datenbank, und die ändert sich normalerweise bei einem Serverumzug.
Bitte localconf.php auf jedenfall vorher sichern, denn wenn die localconf.php Fehler hat (und da reicht ein falscher Strichpunkt), kann man sich nicht mal mehr ins Backend einloggen…

Folgende Ordner kann man unbesehen hochladen:

  • fileadmin
  • uploads
  • misc
  • typo3conf/ext

Der Ordner typo3temp wird evtl. für Extensions benötigt, Details dazu siehe hier

Dateiberechtigungen setzen

  • uploads: 777

Extensions wieder installieren

Die Liste der installierten Extensions steht in der localconf.php. Allerdings in dem Teil der vom Install-Skript automatisch erzeugt wird, ich habe die gelassen und einfach alle Extensions im Extension Manager neu hinzugefügt. Vorteil: Datenbanktabellen werden auch gleich nochmal überprüft und bei Bedarf ergänzt.

Achtung Fehlerquelle: shy Extensions anzeigen – sonst kann man eine Extension übersehen.