Webentwicklung mit ddev-local - Kleines Einsteigertutorial | 11.01.2021
ddev-local ist ein Open-Source-Tool, mit dem es wirklich (also so wirklich wirklich) einfach und unkompliziert ist, lokale PHP-Entwicklungsumgebungen innerhalb von Minuten zum Laufen zu bringen. Es bietet projektbezogene Umgebungskonfigurationen, die das Ganze leistungsstark und flexibel machen. ddev-local-Umgebungen können einfach erweitert, versioniert und gemeinsam genutzt werden. Kurz gesagt, ddev-local soll es Entwicklungsteams ermöglichen, Docker in ihrem Workflow ohne die Komplexität einer maßgeschneiderten Konfiguration zu verwenden. Ein wenig erinnert mich ddev an die "alten" Vagrant-Umgebungen. Nur ist ddev-local deutlich einfacher zu warten und gemeinsam nutzbar.
ddev-local wird von [Drud Technology](https://www.ddev.com/ "Website von Drud Technology") erstellt und gewartet. Neben ddev-local bietet Drud Technology auch ddev-live an. Dies ist quasi der Counterpart von ddev-local, jedoch mit noch einigen weiteren Features.
Im Folgenden soll es nun einen kleinen Einstieg in ddev-local geben. Ich zeige dir, wie du ddev-local auf deinem Rechner installierst, eine Umgebung erzeugst, diese anpasst, nutzt und am Ende auch wieder löschen kannst.
Noch ein kleiner Hinweis: Bei Drud ist meistens mit ddev ddev-live gemeint. Wenn ich ddev schreibe, meine ich damit immer ddev-local.
Besonders leicht ist es, wenn du es über Chocolatey installierst. [Was genau Chocolatey ist und wie es installiert wird, habe ich schon vor einigen Monaten hier im Blog beschrieben](https://www.meagainsttheweb.de/paketverwaltung-unter-windows-mit-chocolatey "Informationen und Anleitung zu Chocolatey"). Du kannst das Setup in der PowerShell durch den Befehl
<pre>choco install ddev </pre>
beginnen oder dafür die Chocolatey GUI starten. Dort auf den Reiter chocolatey klicken und im Suchfeld ddev eingeben. Die Suchanfrage mit Enter bestätigen und dann mit der rechten Maustaste auf den ddev-Eintrag in der Ergebnisliste klicken und installieren auswählen.
Du kannst natürlich auch selber Hand anlegen und alle einzelnen Schritte der [offiziellen Dokumentation](https://ddev.readthedocs.io/en/stable/#installation "Anleitung zum Setup in der offiziellen Dokumentation von ddev") entnehmen. Das manuelle Setup hat den Vorteil, dass du besser siehst, was passiert. Du kannst dich dann mit WSL2 und mkcert vertraut machen. Diese Technologien kommen nämlich zum Einsatz. Schau einfach in der offiziellen ddev Dokumentation vorbei.
Wenn du das Setup erfolgreich gemeistert hast, zeige ich dir nun, wie du eine lokale Umgebung anlegst. Zuerst öffnest du wieder eine Shell (PowerShell oder wie ich, in diesem Beispiel, die Git Bash). Als Erstes legst du irgendwo einen Ordner an, in welchem du später deine Webapp erstellst.
Es folgt das Anlegen der ddev-local Konfiguration. Dazu einfach ddev config
im Terminal eingeben. Es folgt zuerst die Frage nach dem Projektnamen. ddev schlägt dir vor, den Ordnernamen zu nutzen. Am Ende ist deine lokale Umgebung über diese Adresse (also in unserem Beispiel https://meine-website.ddev.site) erreichbar. Natürlich kannst du die Adresse in der Konfiguration später noch anpassen. Weiterhin kannst du auch klassisch über deine lokale IP auf die Entwicklungsumgebung zugreifen. Ganz nach deinen Vorlieben eben.
Es folgt die Frage nach dem docroot-Verzeichnis. Damit ist der Ordner gemeint, in dem der Webserver später die Anfragen umleitet (und hoffentlich an eine PHP-Datei übergibt). Bei vielen Frameworks ist dies public. Du kannst dir aber auch einen anderen Ordner ausdenken. ddev fragt nach, ob es diesen Ordner auch direkt erstellen darf - das kannst du mit Ja beantworten.
Die letzte Frage ist nach dem Typ deines Projekts. Wenn du ein bestimmtes Framework nutzen möchtest, hast du hier die Möglichkeit, die Umgebung schon entsprechend vorzubereiten. Du kannst aber jederzeit den Projekttyp ändern bzw. die notwendigen Anpassungen vornehmen lassen. Für dieses Beispiel bleibe ich bei einem PHP-Projekt.
Du wirst feststellen, dass ddev einige Dateien erzeugt hat. Dein Ursprungsordner beinhaltet nun den Ordner public und .ddev. Während public leer ist, findest du in .ddev einige weitere Dateien. Diese Dateien sind die wesentlichen Konfigurationsdateien. Wenn du später diesen Server replizieren willst, kannst du sie in ein Repository aufnehmen und entsprechend mit deinen Kollegen:innen teilen.
Du könntest jetzt eigentlich direkt loslegen und mit dem Befehl ddev start deine lokale Umgebung starten. Aber zuvor schauen wir beide noch einmal kurz in die config.yaml im Ordner .ddev.
Die Datei ist sehr gut beschrieben. Vermutlich wirst du dich in deinen ersten Schritten mit ddev-local auf das Anpassen der PHP-Version, die Auswahl des Webservers sowie die Aktivierung von xdebug beschränken.
ddev bietet dir eine Auswahl der gängigen aktuellen letzten PHP-Veröffentlichungen. Sollten deine Scripte, die du beabsichtigst in der Umgebung auszuführen, legacy sein und beispielsweise auf PHP 5 angewiesen sein, kannst du es hier ändern. PHP passt du an, indem du die Version hinter php_version einträgst. Für ein aktuelles PHP 8.0 trägst du 8.0 ein. Welche Versionen ganz genau von ddev angeboten werden, kannst du in der Zeile 35 der Konfigurationsdatei sehen.
Wenn du nicht den standardmäßig genutzten nginx nutzen möchtest, kannst du in Zeile 5 (webserver_type) zum Apache wechseln. Dafür trägst du dort apache-fpm ein. Und nein, es gibt keine Alternative zu FPM.
Um xdebug zu nutzen, muss lediglich in Zeile 8 der Wert hinter xdebug_enabled auf true geändert werden. Xdebug kann auch später jederzeit aktiviert und deaktiviert werden, ohne dass du dafür die config.yaml anpassen musst. Durch die Kommandos ddev xdebug aktivierst du es und mit ddev xdebug off schaltest du die Unterstützung wieder aus. Xdebug läuft auf dem Port 9000 - also dem Standardport.
Eine ganz interessante Einstellung ist use_dns_when_possible. Wenn du diesen Wert auf false setzt, wird ddev für die Zeit, in der dein Server läuft, einen Eintrag in deine Hosts-Datei schreiben. Damit kannst du auch ohne Internetverbindung auf den Domainnamen zurückgreifen, der in unserem Beispiel aktuell noch meine-website.ddev.local ist. Dies ist besonders dann sinnvoll, wenn du auch mal ohne Internet deine Umgebung nutzen möchtest.
Ist die Nutzung von DNS deaktiviert, wirst du einen Admin-Prompt beim Start erhalten. Dies ist notwendig, damit die Hosts-Datei beschrieben werden kann.
Nachdem du deine Konfiguration rudimentär angepasst hast, startest du einfach deinen ddev-local-server. ddev kümmert sich nun noch um einige Einstellungen und startet die notwendigen (docker) Container. Sobald dies abgeschlossen ist, wird dir eine Erfolgsnachricht angezeigt. Alle weiteren wichtigen Daten (für den Zugriff auf die Datenbank oder Mailhog) kannst du über den Befehl ddev describe abrufen.
Um das Ganze zu testen, legst du einfach mal eine PHPinfo-Datei an. Dazu einfach echo "<?php phpinfo();" >> public/index.php in der Konsole ausführen. Im Ordner public wird nun die Datei index.php angelegt. Wenn du nun in der Konsole ddev launch (ddev launch ersetzt übrigens den Befehl ddev start, sodass du mit einem Kommando die Umgebung startest und deinen Browser öffnest und zur Website navigierst) eingibst (oder https://meine-website.ddev.site im Browser öffnest), solltest du die PHPinfo sehen.
Deine lokale Umgebung kannst du ganz einfach mit dem Befehl ddev stop beenden (und jederzeit wieder mit ddev start starten).
Wenn du die lokale Umgebung wieder löschen willst, dann machst du das mit dem Befehl ddev delete. Es wird dann ein Snapshot der Datenbank angelegt und im Ordner .ddev gespeichert. So kannst du eine kaputte ddev-Konfiguration resetten, ohne dabei deine Daten aus der Datenbank händisch sichern zu müssen.
Beim Löschvorgang werden übrigens keine deiner eigenen Dateien entfernt. Auch der .ddev-Ordner bleibt unverändert. Wenn du das gesamte Projekt entfernen möchtest, musst du nun nur noch den ursprünglichen Ordner (hier im Beispiel meine-website) entfernen. Damit hinterlässt die Umgebung keinerlei Datenrückstände (abgesehen von Cache-Dateien für die Container).
Zu vielen Projekten gibt es irgendwann mal vereinzelt ein Buch. Meistens von den Entwicklerinnen und Entwicklern selbst verfasst, werden in diesem diverse Themen abgearbeitet. Für ddev gibt es aktuell nur ein Buch, welches zudem in die Jahre gekommen ist. Viel besser ist die weiter oben verlinkte Dokumentation.