Bevor man überhaupt starten kann, braucht es ein laufendes Neos. Richten wir also eine lokale Neos-Instanz ein. Diese Anleitung funktioniert übrigens auf jedem Betriebssystem.
Jedes Webprojekt benötigt irgendeine Art von Tech-Stack um funktionieren zu können. Diese könnten unter anderem eine Datenbank, ein Webserver, eine bestimmte Laufzeitumgebung, Bibliotheken oder ein ganzes Betriebssystem enthalten. Um solch ein Projekt lokal entwickeln zu können, müssen diese Sachen entsprechend auch lokal vorhanden sein. Bevor man also mit der eigentlichen Arbeit anfangen kann, muss zuerst eine Entwicklungsumgebung vorhanden sein. Natürlich ist das bei Neos nicht anders. Für diesen Zweck sind Docker zusammen mit Ddev extrem praktisch und die vermutlich komfortabelste Weise ein laufendes Neos zum Entwickeln herbei zu zaubern.
Um Ddev nutzen zu können, benötigen wir Docker. Glücklicherweise bietet Docker eine ausführliche Installationsanleitung, mit der, solange man sich alles sorgfältig durchliest, auch alles problemlos funktioniert. Für Ddev ist es wichtig, die Post-Install Schritte für “Manage Docker as a non-root user” durchzuführen.
Weiter geht es mit der Installation von Ddev. In der Ddev-Dokumentation gibt es Anleitungen zur Installation. Am Besten ist es Ddev auf die empfohlene Weise zu installieren. Das wäre mit dem Package-Manager Brew ( auf Linux und Mac) bzw. chocolatey (Windows).
Ist das erledigt, kann auch Ddev installiert werden.
brew tap drud/ddev && brew install ddev
bzw. choco install ddev
Wie in der Dokumentation als auch im Terminal gibt es den Hinweis, nach der Installation den Befehl mkcert -install auszuführen.
Wir erstellen einen neuen Ordner in dem sich das Projekt aufhalten wird. In dem Fall heißt der Ordner "neos_tutorial". Hier lohnt es sich mit einer Entwicklungsumgebung oder Code-Editor weiterzumachen. PhpStorm und VSCode sind hervorragende Kandidaten.
Im Projekt-Ordner wird ein Terminal geöffnet und der Befehl ddev config ausgeführt.
Ist der Befehl durchgelaufen, begeben wir uns in den von Ddev erstellten Container mit ddev ssh
Mit Docker und Ddev haben wir ein laufendes System erhalten, welches alle technischen Voraussetzungen erfüllt, die wir für die Entwicklung brauchen. Die ganzen Abhängigkeiten wurden aber nicht auf unserem System installiert sondern in einem Docker-Container. Diesen kann man sich fast wie einen eigenen Rechner vorstellen. Um diesen Quasi-Rechner zu bedienen, muss man also “in den Container”. Zu Docker gibt es reichliche Ressourcen um sich schlau zu machen. Hier werden nur die Aspekte aufgeführt die wir auch brauchen.
Mit der Kommandozeile im Container führen wir also nun diesen Befehl aus:
ddev composer create neos/neos-base-distribution
Dadurch werden die Daten für ein mehr oder weniger blankes Neos heruntergeladen und installiert. Eventuell man einmal mit yes bestätigen werden, dass alle bestehenden Ordner-Inhalte entfernt werden.
Die Inhalte liegen zu dem Zeitpunkt noch im Ordner neos-base-distribution. Mit mv neos-base-distribution/* . && rm -r neos-base-distribution verschieben wir die Inhalte dorthin wo wir sie brauchen werden.
Besser ist es aber mit einem eigenen Site-Package zu starten. Deswegen wird das Neos.Demo Site-Package gleich deinstalliert. Dafür löschen wir in der composer.json die Zeile "neos/demo": "8.3.0". Mit dem Befehl ddev composer update übernehmen wir die Änderung.
Im Projekt-Ordner befindet sich nun ein Ordner namens ".ddev". Um Neos noch ein Stück schneller zu machen wird in diesem Ordner die Datei docker-compose.env.yaml erstellt und mit diesen Inhalten gefüllt:
#.ddev/docker-compose.env.yaml
version: '3.6'
services:
web:
environment:
- FLOW_CONTEXT=Development/Ddev
- FLOW_PATH_TEMPORARY_BASE=/tmp/Flow
- FLOW_REWRITEURLS=1
Was diese Datei macht, ist Umgebungsvariablen so zu setzen, dass temporäre Dateien im Docker-Container gespeichert werden. Außerdem wird auf einen Neos-Context verwiesen, welchen wir nun erstellen. Im Ordner Configuration/Development erstellen wir den neuen Ordner namens Ddev. In diesem Ordner erstellen wir wiederum die Datei Settings.yaml, welche wie folgt gefüllt wird:
#Configuration/Development/Ddev/Settings.yaml
Neos:
Imagine:
driver: Imagick
Flow:
persistence:
backendOptions:
driver: pdo_mysql
dbname: db
user: db
password: db
host: db
# The following is necessary to allow ddev to act as a proxy on your local machine
http:
trustedProxies:
proxies: "*"
Und schon kann man mit Neos loslegen. Um das Projekt mit unserer Konfiguration zu starten, geben wir in der Kommandozeile ddev start ein. Hat Ddev seinen Container erfolgreich gestartet, ist das Projekt unter https://neostutorial.ddev.site erreichbar.
Folgt man dem Link gelangt man ins Neos Setup, in dem noch ein paar finale Schritte erledigt werden müssen.
Wir werden aufgefordert einen Befehl auszuführen um die Datenbank einzurichten. Gehen wir also zuerst mit ddev ssh in den Container. Dort können wir anschließend mit ./flow doctrine:migrate wie gewünscht die Datenbank einrichten.
Als nächstes soll ein Admin-Benutzer mit dem Befehl ./flow user:create --roles Administrator erstellt werden.
Zuletzt müssen wir ein sog. Site-Package an den Start bringen. Den Namen des Packages können wir selbst wählen. Für unsere Zwecke lautet der Befehl ./flow kickstart:site NeosTutorial.Site neostutorialgefolgt von ./flow site:import --package-key NeosTutorial.Site
Neos ist ja eine Art Baukasten für Websites. In dem Sinne befinden sich in Neos-Packages also Bausteine. Packages können installiert werden, um auf fertige Komponenten zugreifen zu können. Packages folgen einer Namenskonvention in der ganz oberflächlich steht von wem das Package ist und was es ist. Der Package Name vom Neos Form Builder lautet beispielsweise Neos.Form.Builder.
Site Packages beinhalten also den Code für ein Projekt und ihr Name hat demnach immer ein .Site enthalten.
Über /neos kommen wir ins Backend. In diesem Fall also neostutorial.ddev.site/neos.
Mit dem Admin Account aus dem vierten Schritt des Setups kann man sich einloggen. Bei einem 404-Fehler reicht es die Seite einmal neu zu laden.
Damit wäre Neos lokal eingerichtet. Wer möchte kann sich schon mit den vorhandenen Inhaltselementen austoben.
Im nächsten Kapitel beginnen wir unsere eigene Neos-Seite aufzubauen.
Im neos/nodetypes-Package sind bereits einige hilfreiche NodeTypes vorhanden. Diese können auch gern verwendet werden, nur ist es zur Übung und späteren Anpassbarkeit besser wenn das Package deinstalliert wird und man die NodeTypes selbst baut. Die Deinstallation ist in wenigen Schritten ausgeführt:
Wird die Neos-Seite jetzt neu geladen, sollten keine NodeTypes mehr vorhanden sein.