Contao aktualisieren

Wie die meisten Open-Source-Projekte wird auch Contao kontinuierlich weiterentwickelt. Mit jedem Update werden Komponenten aktualisiert, Fehler behoben, neue Funktionen hinzugefügt oder die Performance verbessert. Es wird daher empfohlen, immer eine aktuelle Version zu verwenden.

Der Contao-Update-Zyklus

Contao folgt für die Versionsbezeichnungen dem Konzept von Semantic Versioning. Das klingt etwas gar technisch weshalb wir uns schnell gemeinsam mit der verwendeten Terminologie vertraut machen:

Major-Release

Bei einem Major-Release handelt es sich um eine komplett neue Version der Software, bei der viele grundlegende Dinge geändert wurden und mit der bereits bestehende Seiten unter Umständen nicht mehr funktionieren. Die aktuelle Major-Version von Contao ist beim Schreiben dieser Zeilen die Version 4.

Minor-Release

Bei einem Minor-Release handelt es sich um eine Art Meilenstein auf dem Weg der Entwicklung, bei dem neue Funktionen hinzugefügt wurden. Kleinere Anpassungen bestehender Seiten können daher notwendig sein. Die aktuelle Minor-Version von Contao ist beim Schreiben dieser Zeilen die Version 4.8.

Bugfix-Release

Bei einem Bugfix-Release handelt es sich um ein Wartungsrelease, dessen primärer Zweck die Behebung von Fehlern ist. Die aktuelle Bugfix-Version von Contao ist beim Schreiben dieser Zeilen die Version 4.8.4.

Long-Term-Support-Versionen

Mit Version 2.11 wurde der Release-Zyklus von Contao angepasst und Long-Term-Support-Versionen (LTS) eingeführt, die 24 Monate lang unterstützt und mit Updates versorgt werden, auch wenn zwischenzeitlich schon neuere Contao-Versionen veröffentlicht wurden. Eine Übersicht aller Contao Versionen gibt es auf Wikipedia.

Aktualisierung mit dem Contao Manager

Vor der Aktualisierung von Contao wird empfohlen, ein Backup der composer.json, composer.lock sowie der Datenbank anzulegen.

Melde dich im Contao Manager an und starte ihn.

Bei einer Aktualisierung für ein Bugfix-Release genügt es auf »Pakete aktualisieren« zu klicken.

Besonderheit bei einer Aktualisierung für ein Minor-Release: Klicke bei »Contao Open Source CMS« auf das Zahnrad-Symbol und gebe die gewünschte Version ein. Durch einen Klick auf die Schaltfläche »Pakete aktualisieren« und danach »Änderungen anwenden« schiebst du die Aktualisierung an.

Aktualisierung für Minor-Release starten

Die Aktualisierung kann nun mehrere Minuten in Anspruch nehmen. Details zum Aktualisierungsprozess können durch Klick auf folgendes Symbol Konsolenausgabe anzeigen/verstecken angezeigt werden.

Aktualisierung für Minor-Release abgeschloßen

Datenbanktabellen aktualisieren

Öffne das Contao-Installtool, und überprüfe, ob nach der Aktualisierung irgendwelche Änderungen an deiner Datenbank notwendig sind. Führe gegebenenfalls die vorgeschlagenen Änderungen durch, und schließe dann das Installtool.

Deine Contao-Installation ist jetzt auf dem neuesten Stand.

Aktualisierung über die Kommandozeile

Um Contao über die Kommandozeile aktualisieren zu können, muss Composer installiert sein.

Vor der Aktualisierung von Contao empfehle ich dir ein Backup der composer.json, composer.lock sowie der Datenbank anzulegen.

Bei der Aktualisierung über die Kommandozeile wird ein composer update ausgeführt. Das wird bei einigen Hostern dazu führen, dass der Prozess wegen der zu hohen Systemanforderung nicht beendet werden kann und die Installation dadurch fehlschlägt. In diesem Fall solltest du den Contao Manager nutzen.

Du hast dich mit deinem Benutzernamen und deiner Domain auf deinem Server angemeldet.

$ ssh benutzername@example.com

Wechsle dann auf der Konsole in das Verzeichnis deiner zu aktualisierenden Contao-Installation.

$ cd www/example/

Bei einer Aktualisierung für ein Bugfix-Release genügt es, folgendes Kommando abzusetzen.

$ composer update

Bei einer Aktualisierung für ein Minor-Release muss die gewünschte Version des contao/manager-bundle in der composer.json eingetragen werden.

{
    
    "require": {
        "contao/manager-bundle": "4.8.*",
        
    },
    
}

Jetzt noch die Aktualisierung auf der Kommandozeile anstoßen.

$ composer update

Datenbanktabellen aktualisieren

Öffne das Contao-Installtool, und überprüfe, ob nach der Aktualisierung irgendwelche Änderungen an deiner Datenbank notwendig sind. Führe gegebenenfalls die vorgeschlagenen Änderungen durch, und schließe dann das Installtool.

Anstelle des Contao-Installtools kannst Du (ab Contao 4.9) zur Aktualisierung der Datenbanktabellen auf der Kommandozeile das Command

$ vendor/bin/contao-console contao:migrate

verwenden.

Deine Contao-Installation ist jetzt auf dem neuesten Stand.

Lokale Aktualisierung ohne die Composer Resolver Cloud

Die Vorgehensweisen, die oben in Aktualisierung über die Kommandozeile und Aktualisierung mit dem Contao Manager beschrieben wurden, kannst du auch lokal durchführen. Dies hat den Vorteil, dass du im Gegensatz zur Umgebung bei einem Hoster keine Probleme mit nicht erfüllten Systemanforderungen wie z. B. ungenügendem Arbeitsspeicher bekommst, denn du kannst die entsprechende Konfiguration selbst nach Bedarf anpassen.

Voraussetzungen bei Verwendung der Kommandozeile

Was benötigst du auf deinem Computer?

  • ein beliebiges Verzeichnis, in dem du arbeitest (dein Arbeitsverzeichnis)
  • PHP, idealerweise in der gleichen Version, wie sie auf deinem Hosting verwendet wird.
  • Composer (wir gehen hier davon aus, dass du Composer global installierst
  • Kopien der composer.json und composer.lock der Contao-Installation bei deinem Hoster

Was benötigst du nicht?

  • MySQL
  • Eine lokale Contao-Installation

Die Aktualisierung durchführen

Kopiere die composer.json und composer.lock von deinem Hosting in dein Arbeitsverzeichnis. Im Wesentlichen machst du dann das Gleiche, wie oben unter Aktualisierung über die Kommandozeile beschrieben:

Öffne ein Terminal und wechsle in das Arbeitsverzeichnis. Führe dort

$ composer update

aus. Nach dem erfolgreichen Abschluss der Aktualisierung kopierst du die aktualisierte composer.lock (und die composer.json, falls du dort Änderungen gemacht hast) zurück in die Contao-Installation auf deinem Hosting.

Danach meldest du dich entweder per ssh auf deinem Server (Hosting) an

$ ssh benutzername@example.com

und lässt Composer die aktualisierten Pakete installieren

$ composer install

oder du verwendest den Contao Manager. Dort wählst du unter »Systemwartung« den Punkt »Composer-Abhängigkeiten«, »Installer ausführen«.

composer install mit dem Contao-Manager

Zum Abschluss musst du noch die Datenbanktabellen aktualisieren.

Datenbanktabellen aktualisieren

Öffne das Contao-Installtool und überprüfe, ob nach der Aktualisierung Änderungen an deiner Datenbank notwendig sind. Führe gegebenenfalls die vorgeschlagenen Änderungen durch und schließe dann das Installtool.

Anstelle des Contao-Installtools kannst du (ab Contao 4.9) zur Aktualisierung der Datenbanktabellen auf der Kommandozeile das Command

$ vendor/bin/contao-console contao:migrate

verwenden.

Deine Contao-Installation ist jetzt auf dem neuesten Stand.

Verschiedene PHP-Versionen

Wenn die lokal verwendete PHP-Version eine andere ist, als bei deinem Hosting, musst du in der composer.json angeben, welche PHP-Version verwendet werden soll:

    ...
    "config": {
        "platform": {
            "php": "7.4.99"
        }
    },
    "require": {
        ...
    }
    ...

Lokale Updates mit dem Contao Manager

Du benötigst eine lokale Contao-Installation. In dieser installierst du den Contao Manager und führst das Update wie im Abschnitt Aktualisierung mit dem Contao Manager beschrieben durch.

Stelle zuvor jedoch sicher, daß die Composer Resolver Cloud nicht verwendet wird. Du benötigst sie nicht, da du auf deinem eigenen Server genügend Arbeitsspeicher bereitstellen kannst und entlastest so die Cloud.

Die Einstellung findest du in der »Systemprüfung« im Bereich »Serverkonfiguration«.

Deaktivierung der Composer Resolver Cloud

Nach dem erfolgreichen Update überträgst du wie im vorherigen Abschnitt beschrieben die composer.json und composer.lock zurück in die Contao-Installation auf deinem Hosting. Die weiteren Schritte auf deinem Hosting sind die gleichen wie oben beschrieben.