Virtuellen Server für Laravel mit Homestead installieren

aktualisiert am 11. April 2019, erstellt am 20. Juni 2016 von Dirk Helbert in Entwicklungsumgebung
Laravel Homestead

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.

Hol dir jetzt mein kostenloses E-Book
Geben Sie Ihre Email Adresse ein und klicken Sie auf den Knopf "Sofort Zugang erhalten".
Ich stimme zu, dass meine Daten beim Newsletter Provider Mailchimp gespeichert werden. ( Datenschutzerklärung und Datenschutz Mailchimp )
Mit der Anforderung des eBooks meldest du dich zu meinem kostenlosen E-Mail Newsletter mit relevanten Informationen zur Webentwicklung sowie meinen Büchern und Leistungen an.

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.