TYPO3: So stellst du deine Installation von einer Symlink Struktur auf Composer um
Schritt 1: Composer installieren
Aber kommen wir nun zur Ausgangslage unserer TYPO3 Installation. Ich habe eine Installation in der Version 10.4 vorbereitet. Sie beinhaltet ein paar Extensions inklusive eines Sitepackage als Extension, dass das Template der Webseite beinhaltet. Als erstes stellen wir sicher, dass in unserem Hostingpaket auf der Konsole der Composer zur Verfügung steht. Das kann man am einfachsten mit composer -v prüfen. Erfolgt eine Ausgabe, wissen wir, dass der Composer installiert ist. Sollte das nicht der Fall sein, kann man ihn etwa bei Mittwald mit wenigen Klicks über das Kundencenter installieren.
Umstellung auf Composer
Aktuell befindet sich die Struktur unserer TYPO3 Installation in einem Unterordner unterhalb des Document Roots und sieht so aus:
fileadmin/
.htaccess
index.php -> typo3_src/index.php
typo3 -> typo3_src/typo3/
typo3cms -> typo3conf/ext/typo3_console/typo3cms*
typo3conf/
typo3_src -> typo3_src-10.4.30/
typo3_src-10.4.30/
typo3temp/
Nun starten wir mit der Migration auf Composer. Als erstes können wir die Symlinks index.php und typo3 löschen. Dafür führen wir rm -rf index.php && rm -rf typo3 aus.
composer.json erstellen
Die ersten Vorbereitungen sind hiermit abgeschlossen und wir können uns eine composer.json Datei mit allen Paketen erstellen oder erstellen lassen. Ich verwende dafür gerne das Base Distribution Package von TYPO3. Der Vorteil: Das Paket besitzt bereits eine Abhängigkeit für die TYPO3 Console, die du später nutzen kannst.
Mit composer require typo3/cms-base-distribution ^10.4 können wir uns das Paket für die Version 10.4 laden. Ich gehe bewusst nur auf Version 10.4 ein, da man so später sehr leicht auf die einzelnen Minor Versionen updaten kann.
Ist die Installation abgeschlossen, hat Composer für uns die neue Struktur erstellt. Alle Dateien, die der TYPO3 Core benötigt, sind geladen und installiert.
Extensions nachinstallieren
Nun müssen wir die Extensions nachinstallieren, die sich aktuell im Verzeichnis typo3conf/ext befinden. In meinem Fall sind das die folgenden:
- bootstrap_package
- cookieman
- news
- sitepackage
- typo3_console
Das sitepackage ist meine eigene Extension für Anpassungen am bootstrap_package. Die typo3_console haben wir bereits installiert.
Um zu schauen, ob die genutzten Extensions über eine Composer Version verfügen, kann man das TER (TYPO3 Extension Repository) zur Hilfe nehmen. Wo du den Extension Composer Key findest, kannst du in unserem FAQ-Artikel nachlesen.
Wie im FAQ-Artikel habe ich auch in meiner Installation zusätzlich News installiert und nutze dafür nun den Befehl composer req georgringer/news
So gehst du nun mit allen weiteren Extensions vor, die du im System installiert hast.
Melde dich zum Newsletter an!
Kommende Releases, neue Features und Tipps rund um dein Hosting − wir bringen dir das Wichtigste in dein Postfach. Abonniere unseren Newsletter und bleib auf dem Laufenden.
Sonderfall: Pakete, die nicht über packagist verfügbar sind
Pakete, die nicht über packagist (der Plattform hinter Composer) verfügbar sind, muss man etwas anders installieren. In meinem Fall möchte ich nicht, dass mein Sitepackage auf packagist verfügbar ist, und gehe wie folgt vor:
Wir erstellen das Verzeichnis packages. Der Name kann von jedem frei gewählt werden. Er sollte nur auf der gleichen Ebene wie public oder vendor sein. Wenn wir den Ordner mit mkdir packages erstellt haben, müssen wir den folgenden Code in unser composer.json an irgendeiner Stelle einfügen:
"repositories": {
[
"type": "path",
"url": "packages/*"
]
}
Des Weiteren benötigt die Extension noch eine funktionale composer.json Datei, um im nächsten Schritt installiert zu werden.
Die composer.json meines Sitepackage sieht wie folgt aus.
{
"name": "max-mustermann/sitepackage",
"type": "typo3-cms-extension",
"description": "",
"homepage": "https://www.mustermann.de",
"license": ["GPL-2.0-or-later"],
"keywords": ["TYPO3 CMS"],
"require": {
"bk2k/bootstrap-package": "^12.0"
},
"autoload": {
"psr-4": {
"MaxMustermann\\Sitepackage\\": "Classes/"
}
},
"extra": {
"typo3/cms": {
"extension-key": "sitepackage"
}
}
}
Um die Datei nun installieren zu können, benötigen wir wieder den require Befehl. Für meine Sitepackage wäre das composer req max-mustermann/sitepackage:@dev. Die Angabe des Pakets musst du für deine Extension oder Sitepackage anpassen. Dabei verwendest du den Namen, der in der composer.json steht.
Struktur angleichen
Nachdem wir nun alle Extensions und deren Abhängigkeiten installiert haben, müssen wir noch einige Dateien und Ordner verschieben (und/oder löschen), um sie an die Composer Struktur anzugleichen.
Als erstes löschen wir den ext Ordner unterhalb von typo3conf aus der alten TYPO3 Installation. Da wir schon beim Löschen sind, können wir nun auch den Symlink typo3_src sowie den TYPO3 Core Ordner entfernen. Letzterer ist in meinem Fall typo3_src-10.4.30.
Wie schon erwähnt: Es müssen noch einige Dateien und Ordner verschoben werden. Das machen wir nun im nächsten Schritt:
mv typo3conf/sites config/sites
mv typo3temp/var var
mv typo3conf/l10n var/labels
mv typo3conf/LocalConfiguration.php public/typo3conf/LocalConfiguration.php
Mv typo3conf/AdditionalConfiguration.php public/typo3conf/AdditionalConfiguration.php
Mv typo3conf/PackageStates.php public/typo3conf/PackageStates.php
Als vorletzten Schritt können noch die Verzeichnisse typo3conf und typo3temp gelöscht werden.
Zum Schluss: Testen
Um nun unsere auf Composer migrierte TYPO3 Installation zu testen, müssen wir das Ziel der Domain auf das neue public Verzeichnis einstellen. Anschließend kannst du die Webseite aufrufen. Mit etwas Glück funktioniert unsere Installation nun einwandfrei. Manchmal kann es sein, dass der Cache gelöscht werden muss oder auch noch Anpassungen an den Extensions vorzunehmen sind. Letzteres ist sehr individuell und von jeder Installation abhängig.
Meine Erfahrung: Eine 100%tige automatische Umstellung auf Composer ist derzeit leider fast nie möglich. Es setzt zumindest immer das Wissen der zu migrierenden TYPO3 Installation voraus. Einige Sachen kann man aber automatisieren, um einen möglichst reibungslosen Umstieg zu ermöglichen.
TYPO3 Know How
Buche jetzt dein TYPO3-Hosting und profitiere Philipps Fachwissen und auch dem, aller CMS-Profis im Kundenservice. Unser Support steht dir dabei 24/7 an 365 Tagen im Jahr zur Verfügung.
Kommentare
Sehr hilfreicher Beitrag! Vielen Dank dafür.