Vor fast drei Jahren habe ich das kleine Tutorial über Laravel Homestead geschrieben. Mittlerweile gibt es Laravel 5.8 und durch die Nachfrage einer sehr netten Kollegin (vielen Dank Lena), bin ich wieder auf meinen Artikel aufmerksam geworden.
Zeit also für eine grundlegende Überarbeitung.
Du als PHP Entwickler hast bestimmt auch mit einem Tool wie Xampp oder Mamp oder ähnlichem angefangen. Das reicht auch für den Anfang. Kann aber einen virtuellen Server nicht ersetzen.
Am Anfang reicht auch php artisan serve
um mit dem built-in Webserver von PHP zu arbeiten. Mit Valet auf dem Mac ist man dann auf der nächsten Stufe. Siehe dazu auch Blitzschnelles Prototyping mit Laravel Valet und Mac OS.
Irgendwann benötigst du einfach eine „richtige“ Server Umgebung. Zum Beispiel wenn du Varnish, Redit oder Memcache testen willst.
Daher schauen wir uns jetzt Homestead in Verbindung mit VirtualBox und Vagrant mal genauer an.
Was bringt Laravel Homestead
Zuerst einmal bekommst du einen lauffähigen virtuellen Server, der unabhängig ist. Geht irgendwas schief, kannst du ihn ganz einfach wieder in seinen Ausgangsstand zurück bringen. Zudem kannst du auch zum Beispiel die neueste PHP Version testen ohne ein wichtiges System zu stören. Auch zusätzliche Komponenten wie Elasticsearch oder Solr kannst du einfach nachinstallieren und testen.
Installation VirtualBox und Vagrant
Zuerst installierst du am besten VirtualBox. Eine Voraussetzung damit Vagrant überhaupt funktioniert. Natürlich kannst du auch VMWare benutzen, aber ich arbeite schon seit Jahren mit VirtualBox.
Und das ohne große Probleme. Und genau das wollen wir als Entwickler doch. Unser Hauptaugenmerk liegt auf der Entwicklung.
Die Installation von VirtualBox und Vagrant ist für jedes Betriebssystem selbsterklärend. Daher gehe ich hier nicht näher darauf ein.
Homestead Box Image installieren
Vagrant arbeitet mit Images. Also Abbildungen von Betriebssystemen. Im Vagrant Universum auch Box genannt.
Für Homestead musst du die Box jetzt noch „runterladen“. Aktuell hat die Box die Version v7.1.0. Das geht ganz einfach per Kommandozeilen Befehl.
vagrant box add laravel/homestead
Auf der Konsole wirst du jetzt gefragt ob du die Box für hyperv (1) parallels (2), virtualbox (3) oder vmware_desktop (4) laden möchtest. Ich entscheide mich hier, wie bereits besprochen, für VirtualBox. Lass dich nicht verwirren, wenn dir eine Option nicht angeboten wird.
Das dauert jetzt eine Weile. So ein Image kann schon mal ein Gigabyte und größer sein. Schliesslich ist da ein komplettes Betriebssystem drauf. Meistens sind auch schon die wichtigsten Komponenten vorinstalliert. Bei mir hat der Download ca. 5 Minuten gedauert. Das Warten lohnt sich wirklich.
Homestead Projekt klonen mit Git
Auf meinem Mac habe ich den Befehl git bereits verfügbar. Auf meinem Windows PC installiere ich mir noch schnell Git for Windows. Das brauchst du auf jeden Fall auch in deiner täglichen Entwicklung.
Jetzt klonst du das Homestead Projekt lokal auf deinen Rechner mit:
git clone https://github.com/laravel/homestead.git ~/Homestead
und wechselst in das Verzeichnis
cd ~/Homestead
Was hat es eigentlich mit der Tilde und dem Slash auf sich?
Das wurde ich schon sehr häufig gefragt und die Frage ist auch durchaus berechtigt. Die Tilde repräsentiert einen Shortcut für das Home Verzeichnis. Das funktioniert sowohl auf dem Mac, auf einem Linux System und auch unter Windows.
Homestead initialisieren
Nachdem das Repository geklont wurde, muss Homestead noch initialisiert werden. Die Befehle unterscheiden sich hier zwischen Mac OS / Linux und Windows.
Mac OS / Linux:
bash init.sh
Windows:
init.bat
Dann erscheint:
Homestead initialized!
In der ~/.homestead/Homestead.yaml nimmst du jetzt die Einstellung für dein erstes Projekt vor.
Wichtig für uns sind hier der folders und der sites Bereich. Hier gibt es öfter mal Missverständnisse und Verständnisprobleme welche Einstellungen die richtigen sind.
Daher splitte ich die Einstellung etwas auf und erkläre dir das etwas ausführlicher.
Mappen eines Verzeichnisses in Homestead
folders:
- map: ~/Code
to: /home/vagrant/Code
Mit der Einstellung folders mappst du ein lokales Verzeichnis in die virtuelle Maschine (Homestead). Das Verzeichnis ~/Code liegt also auf deiner lokalen Festplatte und ist in Homestead unter /home/vagrant/Code erreichbar.
Speicherst du auf der lokalen Festplatte etwas in den Ordner, dann ist das in dem Homestead Server zu sehen und anders herum genauso.
Alle Dateien, die ein Reset des Homestead Servers überleben sollen, sollten daher nur in Homestead hinein gemappt werden. Zwar kannst du die virtuelle Maschine auch ganz normal runter- und wieder hochfahren. Aber einen kompletten Neuaufbau überstehen die Daten nur in einem gemappten Verzeichnis.
Erstellen von sites.
sites:
- map: homestead.test
to: /home/vagrant/Code/Laravel/public
- map: hometest.test
to: /home/vagrant/Code/hometest
Unter sites werden die einzelnen Projekte angelegt. Pro Homestead Server können also mehrere Projekte verwaltet werden. Daher ist es nicht notwendig für jedes Projekt einen virtuellen Server aufzusetzen.
Im Verzeichnis ~/Code sollten jetzt alle Projekte liegen, die mit Homestead zusammenarbeiten sollen.
Du musst jetzt noch die hosts Datei anpassen, damit du http://hometest.test im Browser aufrufen kannst. Dazu einfach einen neuen Eintrag in /etc/hosts auf dem Mac oder unter Windows in \Windows\System32\drivers\etc\hosts den Host einfügen mit
192.168.10.10 hometest.test
Virtuellen Laravel Homestead Server starten
Bevor du jetzt startest, musst du noch den Ordner ~/Code anlegen. Ansonsten gibt es eine Fehlermeldung, wenn das Verzeichnis nicht vorhanden ist.
Im Homestead Verzeichnis solltest du den virtuellen Server starten:
vagrant up
Der erste Start dauert jetzt ein paar Minuten.
In der Zwischenzeit kannst du schon mal eine Test Datei erstellen. Dazu einfach in ~/Code/hometest die Testdatei index.php mit folgendem Inhalt erstellen.
<?php
phpinfo();
Wenn der Homestead Server gestartet ist, kannst du mit http://hometest.test im Browser das Projekt aufrufen und solltest nun die Ausgabe von phpinfo();
sehen.
Du hast jetzt eine perfekte Entwicklungsumgebung
Ich hoffe alles hat auch bei dir geklappt. Wenn alles gut gelaufen ist, dann hast du einen lauffähigen virtuellen Server und mehr Möglichkeiten als mit dem built-in Webserver von PHP. Der Aufwand einer solchen Installation ist sehr überschaubar. Es lohnt sich auf jeden Fall.
Solltest du einen Fehler gefunden haben oder an irgendeiner Stelle feststecken, hinterlasse einfach einen Kommentar. Danke!
Weitere Einstellungen findest du in der englischsprachigen Dokumentation.