Update von 2.11 auf 3.5 - Schritt für Schritt
Leider hat man immer wieder beratungsresistente Kunden. Meine Empfehlungen zum Update von einer potentiell unsicheren alten Contao 2.11 Installation auf eine sichere LTS-Version stoßen bei manchen Kunden auf taube Ohren. Da der Feature-Wunsch "responsive Design" aufkam, stand jetzt (endlich) der große Sprung von 2.11 auf 3.5 an. Da ausgerechnet zum Wochenende der FTP-Server beim Provider gestört war (der Upload brach ständig ab und war langsam), kam ein schrittweises Update nicht in Frage.
Da mich das Update heute sehr viel Zeit für Recherche und Experimente gekostet hat, hier eine Zusammenfassung des Vorgehens als Schritt-für-Schritt Liste.
Mit folgenden Fallstricken müsst ihr rechnen:
- Die Dateiendung für Templates hat sich unter Umständen geändert.
- User-Dateien liegen jetzt nicht mehr in /tl_files, sondern in /files.
[Man kann eine Contao-Installation zwar prinzipiell mit einem beliebigen Upload-Ordner betreiben und könnte somit auch bei /tl_files bleiben. Da die Ordner-Umbenennung den neuen Standard darstellt, scheint es mir sinnvoll aus Kompatibilitätsgründen auch beim Update diesen Schritt mitzugehen.] - Contao verwendet jetzt eine datenbank-basierte Dateiverwaltung.
- Das Layout wurde auf Holy-Grail umgestellt.
- Manche Erweiterungen laufen nicht mehr unter 3.5! Vorher unbedingt recherchieren!
Generell würde ich euch empfehlen, wenn ihr nicht unbedingt bestimmte neue Features braucht, immer bei den LTS-Versionen (Long Time Support) zu bleiben. Der Release Plan wurde jetzt für die LTS-Versionen auf ein 2/4-Modell umgestellt (alle 2 Jahre eine neue LTS Version mit jeweils 4 Jahren Sicherheits-Support) - eine absolut super-coole Entscheidung für Kunden und Entwickler!!!! Damit habt ihr Planungssicherheit und der ständige Update-Stress kann vermieden werden.
Quellen:
Neben den Anleitungen von Nina habe ich die gute Zusammenfassung von blu.plane für den Umstieg auf 3.2 als Basis genommen und ergänzt. Dazu noch das Posting von Leo zum Umstieg der Contao-Seite von 2.11 auf 3.0 und die Update Hinweise in der Release-Ankündigung.
Schritt-für-Schritt Update von Contao 2.11 auf Contao 3.5.x
- In der alten 2.11 Installation alle Erweiterungen aktualisieren.
- Über die Systemwartung die ganzen Cache-Dateien löschen.
- Jetzt das Backup der alten 2.11 Installation machen.
- Ganz wichtig: da beim Umstieg einiges schief gehen kann, unbedingt ein Backup der Datenbank machen!
- Um ganz sicher zu gehen, sollte man das Update mit einer neuen Datenbank machen. Will oder kann man keine neue Datenbank erstellen, dann muss man 100% sicher sein, dass das Rückspielen des Backups auf jeden Fall klappt!
Wenn ihr euch nicht genau an die Reihenfolge haltet und kein Backup habt, lauft ihr sonst Gefahr, dass nachher alle Dateiverlinkungen (Bilder etc) weg sind! Ihr seid gewarnt!
[Ich musste heute vier Mal das Backup einspielen, bis ich den richtigen Ablauf gefunden hatte...] - Ihr ladet die aktuelle Contao-Version hoch. Wie gesagt, ich empfehle euch immer die LTS-Version zu nehmen.
Da beim Umstieg von 2.11.x auf 3.x.x viele Dateien weggefallen sind, sollte man die neue Version in einen leeren Ordner installieren, sonst hat man eine Menge Datei-Leichen die bei manchen Nutzern Probleme gemacht haben. - Ihr legt euch bei eurem Provider eine Subdomain für den neuen Ordner an.
- Da sich die .htaccess Datei sehr stark geändert hat, solltet ihr die Datei .htaccess.default wie von Nina empfohlen in .htaccess umbenennen und eventuelle spezielle Anpassungen in die neue Version übertragen.
- Folgende Dateien ladet ihr aus dem Backup in die neue Installation hoch:
- Den kompletten Ordner /tl_files
- Alles aus dem Ordner "templates", ggfls. Dateiendungen anpassen (.tpl > .html5)
- Aus dem Ordner "system/config": dcaconfig.php, langconfig.php, localconfig.php
- Aus dem Ordner "system/modules" alle Erweiterungen
- Wer auf den /files Ordner umsteigen will: Da es in einem Github Ticket Probleme beim Update gab, als sowohl der Ordner /files, als auch /tl_files vorhanden waren, habe ich den ganzen Inhalt von /files in /tl_files kopiert und den Ordner /files sicherheitshalber erstmal gelöscht (bzw. umbenannt).
- Wenn man eine neue Datenbank erstellt hat, sollte man die Daten jetzt in /system/config/localconfig.php eintragen oder die Korrektur über das Install-Tool machen.
- Jetzt startet man das Install-Tool und macht das Datenbank-Upgrade in vielen Schritten erst auf v3.0, dann auf 3.1 bis 3.5.
- Ganz am Schluss des DB-Upgrades kommen die Lösch-Änderungen an der alten Datenbankstruktur: hier genau darauf achten, dass DROP TABLE Befehle die Erweiterungen betreffen noch nicht ausgeführt werden.
- Wenn ihr den Pfad für Uploaddateien auf /files ändern wollt, solltet ihr jetzt in /system/config/localconfig.php den Eintrag für $GLOBALS['TL_CONFIG']['uploadPath'] anpassen: statt "tl_files" sollte jetzt "files" eingetragen werden.
- Ihr macht euch die Fehlsuche einfacher, wenn ihr in der config $GLOBALS['TL_CONFIG']['displayErrors'] = true setzt. Falls es Fehler gibt, bekommt ihr die Fehlermeldung gleich angezeigt.
- Wichtig: jetzt /tl_files in /files umbennen
- Danach ladet ihr euch die modifiziert Version von Leos modifizierter Version des Update Skripts herunter und legt die Datei in /contao. Mit dem Aufruf von MEINEDOMAIN.TLD/contao/contao-db-update.php startet ihr das Skript.
Wichtig: Wenn ihr die Reihenfolge nicht einhaltet, fehlen nachher alle Dateireferenzen, z.B. habt ihr dann keine Bilder mehr in News oder Artikeln! - Jetzt könnt ihr euch ins Backend einloggen. In der Dateiverwaltung nehmt ihr zur Sicherheit nochmals eine Synchronisierung vor. Falls ihr euch nicht einloggen könnt, bitte hier weiter lesen.
- Danach prüft ihr, ob eure Erweiterungen nochmals aktualisiert werden müssen (z.B. wenn es neue Versionen extra für 3.5 gibt).
- Wahrscheinlich müsst ihr im Seitenstartpunkt erst einmal ein Layout zuweisen.
- Jetzt kommt der umfassende Check:
- Jetzt prüft ihr erst einmal das Frontend: passt das Layout noch? Beim Umstieg von 2.11 kann es wüste Effekte geben, da viele margin / padding Kombinationen mit dem Holy Grail Ansatz überarbeitet werden müssen. Bei der CSS-Anpassung kann noch erheblich Arbeit auf euch zu kommen! Bei mir hat es bei einer Seite das Layout völlig zerlegt, was sich allerdings mit angepassten paddings regeln ließ.
Es lohnt sich auf jeden Fall den Thread für das 3.0 Update durchzusehen. Nina hat in diesem Post einige Threads zu Holy Grail zusammen gefasst. - Jetzt schaut euch alle Bereich an, bei denen ihr die Templates angepasst habt. Funktioniert noch alles? Es lohnt sich zu prüfen, ob das entsprechende Basis-Template inzwischen angepasst wurde und gegebenenfalls die Änderungen zu übertragen.
- Funktionieren noch alle Erweiterungen?
- Wenn alles stimmt, könnt ihr eventuell noch ausstehende DROP TABLE Befehle über das Install-Tool ausführen.
- Jetzt konfiguriert ihr euren Webspace, dass eure Domain auf den neuen Ordnern zeigt.
- Und nicht vergessen: in den Systemeinstellungen unter "Sicherheit" die Fehlermeldungen wieder abschalten!
- Zum Schluss: wenn ihr die Google Suchkonsole (ex Google Webmaster Tools) nutzt, solltet ihr den Pfad der XML-Sitemap Dateien prüfen. In meiner 2.11 Installation lagen die Daten im Root-Verzeichnis. Mit 3.5 liegen sie jetzt unter /share. ?Die Änderung müsst ihr direkt in der Suchkonsole machen.
Mögliche Fehler/Probleme:
- Wenn ihr euch nicht mehr in das Install-Tool einloggen könnt: in der localconfig einfach 'installPassword' auf leer setzen.
- Kein Backen Login mit bekanntem Passwort: Ab Contao 3.5.36 wird eine neue Verschlüsselungsmethode genutzt. Das bedeutet, das eure gespeicherten Hashes ungültig sind. Alle Passwörter müssen neu vergeben werden. Wie ihr wieder ins Backend kommt, lest ihr hier.
- Wenn ihr beim Aufruf des Install-Tools eine Fehlermeldung bekommt:
Zitat:
Fatal error: Uncaught exception Error with message Call to undefined function Contao\Database\mysql_connect() thrown in system/modules/core/library/Contao/Database/Mysql.php on line 47
solltet ihr den Datenbanktreiber in der localconfig auf "MySQLi" ändern:
PHP-Code:
$GLOBALS['TL_CONFIG']['dbDriver'] = 'MySQLi';
Wenn ihr noch Ergänzungen oder Korrekturen habt, würde ich diese hier im Eingangspost nachtragen. Da ich demnächst wegen einer Kreuzband-OP ausgeknockt bin, kann es aber etwas dauern ;-)
Update von 2.11 auf 3.5 inkl. Serverwechsel
Hallo,
erst einmal vielen Dank für die ausführliche Anleitung. Wunderbar !!!
Ich möchte eine Contao 2.11-Seite auf einen anderen Server umziehen.
Gleichzeitig möchte ich gerne auf 3.5 updaten.
Leider komme ich nach mehreren Varianten, die ich proboert habe, nicht weiter und habe mal mein Vorgehen aufgeschrieben:
1. vollständiges Backup von Contao 2.11 mittels ftp und auch der Datenbank
2. Contao 3.5 auf 1&1 unlimited Paket installiert, inkl. Erstellung einer neuen leeren DB.
(Webserver Apache/2.2.22, MySQL 5.5.54, PHP-Erweiterung: mysqli)
3. Folgende Uploads aus dem Backup von Contao 2.11 vorgenommen:
- Kompletten Ordner /tl_files
- Alle Dateien aus /templates in vorhandenen Ordner /templates
- Folgende Dateien aus dem Ordner system/config:
dcaconfig.php, langconfig.php, localconfig.php
- Aus Ordner "system/modules" folgende komplette Ordner:
\backend
\frontend
\imageslider
\rep_base
\rep_client
\rss_reader
\tasks
\tpl_editor
4. Inhalt von /files in /tl_files kopiert und anschl. Ordner /files gelöscht
Bis hierhin konnte ich der Anleitung folgen.
Jetzt heißt es in der Anleitung, dass man die neuen "Datenbank-Zugangsdaten" in /system/config/localconfig.php eintragen oder die Korrektur über das Install-Tool machen soll.
Nun habe ich viele Fragen:
Muss ich in der localconfig.php neben den Einträgen (DB_Name, DB-Host, DB-Benutzer, DB-PWD) auch den Eintrag "mysql" auf "mysqli" umstellen?
Wann muss ich über phpmyadmin die Datenbankinhalte, die ich aus contao 2.11 exportiert habe, in 3.5 importieren?
Wie gehe ich am Besten vor?
Ich würde mich über Unterstützung sehr freuen.
Viele Grüße,
Billy
3.5.x Update von 2.11 auf 3.5 - Schritt für Schritt
Hallo Shania,
hallo tab,
hallo Zusammen,
vielen Dank für Eure prompten Antworten.
Leider bin ich erst heute abend wieder dazu gekommen, um an der Problematik weiter zu arbeiten....
Daher habe ich mich ganz dolle über Eure Antworten gefreut !!!
In der Tat hatte ich immer die install.php durchgeführt, bevor ich die
Daten aus 2.11 in die neue Datenbank importiert habe.
Daher habe ich quasi noch einmal von vorne angefangen,
auf dem neuen Server ALLES gelöscht und folgendes gemacht:
1. leere DB auf neuem Server erstellt
2. exportierte Daten aus 2.11-DB in neue DB importiert
3. Contao 3.5-Ordner auf Server transferiert
4. Folgende Uploads aus dem Backup von Contao 2.11 vorgenommen:
- Kompletten Ordner /tl_files
- Alle Dateien aus /templates in vorhandenen Ordner /templates
- Folgende Dateien aus dem Ordner system/config:
dcaconfig.php, langconfig.php, localconfig.php
- Aus Ordner "system/modules" folgende komplette Ordner:
\backend
\frontend
\imageslider
\rep_base
\rep_client
\rss_reader
\tasks
\tpl_editor
5. Inhalt von /files in /tl_files kopiert und anschl. Ordner /files gelöscht
6.
localconfig.php editiert (mit den neuen FTP- und DB-Nutzerdaten)
7.
Aufruf von www.url.de/contao/install.php
Dort wurde ich dann nach dem Installtool-PWD gefragt, was ich nicht habe.
Daher habe ich in der localconfig.php die Zeile $GLOBALS['TL_CONFIG']['installPassword'] entfernt
und ein neues Installtool-PW vergeben.
8.
Nach Aufruf von www.url.de/contao/install.php
und Eingabe des neu vergebenen Installtool-PWD kommt nun leider folgende Meldung:
Fatal error: Uncaught exception Error with message Call to undefined function Contao\Database\mysql_connect() thrown in system/modules/core/library/Contao/Database/Mysql.php on line 47
#0 system/modules/core/library/Contao/Database.php(81): Contao\Database\Mysql->connect()
#1 system/modules/core/library/Contao/Database.php(165): Contao\Database->__construct(Array)
#2 [internal function]: Contao\Database::getInstance()
#3 system/modules/core/library/Contao/System.php(140): call_user_func(Array)
#4 system/modules/core/controllers/BackendInstall.php(479): Contao\System->import('Database')
#5 system/modules/core/controllers/BackendInstall.php(168): Contao\BackendInstall->setUpDatabaseConnection()
#6 contao/install.php(24): Contao\BackendInstall->run()
#7 {main}
Was mache ich falsch?
Sollte man evtl. Punkt 4 nach dem Aufruf der install.php ausführen?
Liebe Grüße sendet Euch,
Billy
Liste der Anhänge anzeigen (Anzahl: 1)
zu früh gefreut...
nachdem ich im Installtool in mehreren Schritten von 2.9 - 3.5 updaten konnte,
kam ganz zum Schluß folgende Meldung:
Fatal error: Uncaught exception Exception with message Query error: Duplicate entry '87405ae8d7bd9edd0c8d59bd36ca991f-23' for key 'checksum_pid' (ALTER TABLE `tl_search` ADD UNIQUE KEY `checksum_pid` (`checksum`, `pid`);) thrown in system/modules/core/library/Contao/Database/Statement.php on line 295
#0 system/modules/core/library/Contao/Database.php(207): Contao\Database\Statement->query('ALTER TABLE `tl...')
#1 system/modules/core/controllers/BackendInstall.php(616): Contao\Database->query('ALTER TABLE `tl...')
#2 system/modules/core/controllers/BackendInstall.php(177): Contao\BackendInstall->adjustDatabaseTables()
#3 contao/install.php(24): Contao\BackendInstall->run()
#4 {main}
Wenn ich erneut die install.php öffne, wird mir gesagt, dass man die Tabellen prüfen muss.
Bei Klick auf den Button: "Datenbank aktualisieren" kommt wieder die obige Meldung.
Was kann das denn nun sein?
Hat das was mit dem tl_files bzw. files-Ordner zu tun?
Liebe Grüße
Mark