Der folgende Beitrag stammt von Jason Witt, der hier regelmäßig über Themen wie WordPress-Entwicklung schreibt. Diesmal stellt uns Jason eine Voraussetzung für die Entwicklung vor: die Entwicklungsumgebung selbst. Es gibt viele Möglichkeiten, über Standard-App-Lösungen hinauszugehen, einschließlich des Skriptens eigener Setups.
Eine Frage, die ich immer wieder von neuen und erfahrenen Entwicklern höre, ist: „Welches lokale Entwicklungssystem verwendest du?“ Als WordPress-Entwickler, der mindestens Apache, MySQL und PHP benötigt, würde ich antworten: „Du solltest MAMP/XAMPP/WAMP ausprobieren, es ist einfach zu bedienen und funktioniert gut“. Das denke ich immer noch, aber je mehr ich lerne und meine Fähigkeiten als Entwickler entwickle, glaube ich nicht mehr, dass MAMP/XAMPP/WAMP meine Bedürfnisse erfüllen kann.
Ich glaube, die meisten von uns haben diese Worte mindestens einmal gesagt: „Nun, es funktioniert auf meinem lokalen Server“. Was kann man tun? Wenn der Live-Server nicht derselbe ist wie dein lokaler Server, kann man ein Problem auf dem Live-Server nicht vorhersagen. Vagrant kann helfen, dieses Problem zu lösen.

Ich möchte dir Vagrant vorstellen, ein Werkzeug, mit dem du auf deinem lokalen Rechner ganz einfach eine virtuelle Serverumgebung einrichten kannst. In ihren eigenen Worten:
Vagrant bietet einfach zu konfigurierende, reproduzierbare und portable Arbeitsumgebungen, die auf branchenüblicher Technologie aufbauen und durch einen einzigen konsistenten Arbeitsablauf gesteuert werden, um die Produktivität und Flexibilität von dir und deinem Team zu maximieren.
Mit Vagrant kannst du deinen lokalen Rechner mit derselben Umgebung wie deinen Live-Server einrichten. Vom Betriebssystem über den Webserver bis hin zur Datenbank. Jetzt kannst du deine Web-App oder deine Website mit größtem Vertrauen entwickeln und sicher sein, dass sie auf dem Live-Server genauso gut läuft wie auf deinem lokalen Server.
Voraussetzungen
Es gibt ein paar Dinge, die du haben musst, bevor du mit einer Vagrant-Box arbeiten kannst.
Zuerst benötigst du eine auf deinem Computer installierte virtuelle Maschine, damit Vagrant die virtuellen Boxen ausführen kann. Die beiden beliebtesten virtuellen Maschinen sind VMware Workstation und VirtualBox. VMware ist ein kommerzielles Produkt und VirtualBox ist ein kostenloses Open-Source-Produkt.
Als Nächstes benötigst du Git, wenn du Vagrant-Box-Repos von GitHub oder Bitbucket klonen möchtest. Du findest viele Vagrant-Boxen auf GitHub und Bitbucket, und Git zum Klonen der Repos ist eine einfache Möglichkeit, die Vagrant-Boxen zu erhalten. Ich werde die Installation von Git in diesem Artikel nicht behandeln, aber du kannst lernen, wie man Git installiert hier. Du findest auch viele großartige Git-bezogene Artikel direkt hier auf CSS-Tricks.
Du benötigst auch SSH, um dich per SSH in deine virtuelle Box einloggen zu können. Wenn du OSX oder Linux verwendest, hast du wahrscheinlich bereits OpenSSH installiert. Wenn du Windows verwendest, kannst du dem Tutorial hier folgen, um SSH auf deinem PC zu installieren.
Zuletzt benötigst du ein Kommandozeilen-Tool. Ja, ich weiß, die Kommandozeile kann beängstigend sein, aber vertrau mir; du brauchst nur die grundlegendsten Kommandozeilen-Kenntnisse, um Vagrant zu verwenden. Wenn du unter Windows bist, kannst du die Eingabeaufforderung verwenden. Auf OSX kannst du das Terminal verwenden.
Vagrant installieren
Nun ist es Zeit, ins Eingemachte zu gehen. Gehe zur Vagrant-Website zum Download und installiere die neueste Version von Vagrant für dein Betriebssystem.
Nach der Installation von Vagrant kannst du überprüfen, ob es korrekt installiert wurde, indem du folgenden Befehl eingibst:
vagrant -v
Wenn Vagrant korrekt installiert wurde, solltest du so etwas sehen:
Vagrant 1.7.2
Jetzt, da du Vagrant installiert hast, lass uns eine Vagrant-Box finden und einrichten. Es gibt drei gängige Möglichkeiten, eine Vagrant-Box herunterzuladen. Das direkte Herunterladen einer Box, das Klonen einer Box von GitHub oder Bitbucket und das Hinzufügen einer Box aus dem Vagrant Cloud.
Die Boxen beziehen
Für dieses Tutorial verwende ich eine vorgefertigte Vagrant-Box namens Scotch Box. Scotch Box ist ein grundlegender LAMP-Stack, der dir nach der Installation alles bietet, was du für die Entwicklung mit diesen Abhängigkeiten benötigst.
Scotch Box ist für die Verwendung auf der VirtualBox-Virtualisierungsumgebung eingerichtet. Wenn du VMware verwendest, findest du eine Vagrant-Box zum Download unter vagrantbox.es. Dort gibt es auch eine Menge anderer großartiger Boxen für VirtualBox.
Wenn du Scotch Box herunterladen möchtest, gehe zum GitHub-Repo unter https://github.com/scotch-io/scotch-box und lade das Repo herunter. Sobald es heruntergeladen ist, navigiere zu dem Verzeichnis, in dem du deine Vagrant-Box installieren möchtest. Erstelle ein Verzeichnis, in dem die Box gespeichert werden soll, und entpacke den Inhalt der Zip-Datei in diesen Ordner.
Das Klonen des Repos ist genauso einfach. Navigiere zum übergeordneten Verzeichnis, in dem du die Box installieren möchtest, mit deiner CLI. Verwende dann diesen Befehl, um das Verzeichnis der Vagrant-Box zu erstellen und die Box zu klonen:
git clone https://github.com/scotch-io/scotch-box.git my-project
Stelle sicher, dass du *meine-projekt* durch den Namen ersetzt, den du deinem Vagrant-Box-Verzeichnis geben möchtest.
Die letzte Möglichkeit, eine Vagrant-Box zu erhalten, ist, sie aus dem Vagrant Cloud zu beziehen. Meiner Meinung nach ist dies die einfachste Methode, eine Vagrant-Virtual-Machine einzurichten.
Füge zuerst die Box hinzu. Dies geschieht mit dem Befehl `add box`, gefolgt vom Namen der Box. Der Name der Box wird normalerweise so formatiert: `etwas/nochetwas`. Der Name für Scotch Box ist `scotch/box`. Um Scotch Box hinzuzufügen, verwende folgenden Befehl:
vagrant box add scotch/box
Dieser Befehl lädt die Vagrant-Box herunter und macht sie für die Verwendung mit Vagrant verfügbar.
Nachdem die Box heruntergeladen wurde, erstelle das Verzeichnis, in dem die Box gespeichert werden soll, und navigiere in deiner CLI in dieses Verzeichnis. Initialisiere dann die Box und füge die Vagrant-Datei dem Verzeichnis mit diesem Befehl hinzu:
vagrant init scotch/box
Vagrant starten
An diesem Punkt hast du die Vagrant-Dateien heruntergeladen und im richtigen Verzeichnis. Wir wollen alle in der Box verfügbaren Komponenten installieren. Navigiere also zu deinem neu erstellten Vagrant-Box-Verzeichnis und starte Vagrant zum ersten Mal mit dem Befehl `vagrant up`.
vagrant up
Jetzt warte...
Beim ersten Ausführen einer Vagrant-Box muss das Betriebssystem, der Server und alle zusätzlichen Komponenten heruntergeladen und installiert werden. Die Dauer dafür variiert je nach gewählter Vagrant-Box und deiner Verbindungsgeschwindigkeit. Scotch Box ist recht schlank und dauert bei mir etwa 10 Minuten. Ich habe auch eine Vagrant-Box namens Varying Vagrant Vagrants verwendet, die eine ausgezeichnete Box für die WordPress-Entwicklung ist, aber ziemlich groß ist. Sie dauert bei mir beim ersten `vagrant up` gut 20-30 Minuten.

Vagrant verwenden
Jetzt, da du die Scotch Box Vagrant Box installiert und gestartet hast, was kannst du damit machen? Nun, du kannst alles tun, was du auf jedem anderen LAMP-Stack-Server tun kannst. Scotch Box hat einen vorkonfigurierten Webserver, der die IP-Adresse `http://192.168.33.10/` verwendet. Wenn du also deinen Browser auf diese Adresse richtest, siehst du Folgendes:

Alles, was vom Webserver gerendert wird, findest du im Verzeichnis „public“. Dies funktioniert wie jeder andere Webserver, den du jemals benutzt hast. Zusätzlich zum Apache-Webserver hat Scotch Box auch diese Komponenten installiert, die zur Verwendung bereit sind:
- Vim
- MySQL
- PHP 5.5
- Ruby
- Git
- Screen
- Composer
- Laravel Installer
- cURL
- GD und Imagick
- Mcrypt
- Memcache und Memcached
- NPM
- Grunt
- Bower
- Yeoman
- Gulp
Wenn du eine virtuelle Domain anstelle der IP-Adresse `192.168.33.10` verwenden möchtest, kannst du deine Hosts-Datei bearbeiten und diese Zeile hinzufügen:
192.168.33.10 my-domain.dev
Vagrant-Befehle
Vagrant ermöglicht es dir, deinen Server über die Kommandozeile zu steuern. Eine vollständige Liste der Befehle findest du hier, aber lass uns mit den grundlegenden Befehlen beginnen.
vagrant
Alle Vagrant-Befehle beginnen mit `vagrant`. Wenn du den Befehl `vagrant` allein ausführst, werden alle verfügbaren Befehle aufgelistet, die du verwenden kannst.
vagrant up
Der Befehl `vagrant up` wird verwendet, um deine virtuelle Box zu starten. Nachdem du diesen Befehl ausgeführt hast, wird deine virtuelle Box laufen und einsatzbereit sein.
vagrant ssh
Der Befehl `vagrant ssh` ermöglicht es dir, dich per SSH in deine virtuelle Box einzuloggen und gibt dir Zugriff auf eine Shell. Dies ist nützlich für den Zugriff auf MySQL und die Ausführung von Befehlen wie `mysqldump` zur Sicherung deiner Datenbanken.
vagrant suspend
Um deine Maschine anzuhalten, kannst du `vagrant suspend` verwenden. Dies ist nützlich, wenn du deine Maschine stoppen möchtest, ohne sie komplett herunterfahren zu müssen.
vagrant halt
Um deine Maschine herunterzufahren, verwendest du `vagrant halt`. Dies fährt sie herunter und behält den aktuellen Zustand der Maschine bei.
vagrant destroy
Um deine Maschine auszuschalten und komplett neu zu starten, verwende den Befehl `vagrant destroy`. Nach einem `vagrant destroy`-Befehl musst du den initialen `vagrant up`-Prozess erneut durchlaufen.
Fazit
Die Welt der Webentwicklung ist heute weitaus umfangreicher als noch vor 5 Jahren. Die Fähigkeit, auf einem lokalen Server zu entwickeln, der deinem Live-Server entspricht, gibt dir eine stabilere Entwicklungsumgebung und das Vertrauen, deine Projekte live zu stellen, ohne Angst haben zu müssen, dass sie sofort kaputt gehen. Werkzeuge wie Vagrant sind die Zukunft der Webentwicklung, und durch die Nutzung dieser Werkzeuge wirst du als Webentwickler wachsen und die Landschaft des Internets weiterentwickeln.
Was ist der einfachste Weg, eine MySQL-Tabelle für eine lokale WordPress-Installation in einer Vagrant-Umgebung zu erstellen und sich damit zu verbinden? Bisher habe ich nur phpMyAdmin über MAMP verwendet.
Der einfachste Weg, sich mit deiner Datenbank zu verbinden, egal ob lokal oder live, ist die Verwendung von Sequel Pro – http://www.sequelpro.com/
Sobald du die Anwendung gestartet hast, erstelle einfach eine SSH-Verbindung für deinen lokalen Vagrant-Host.
Wenn du mehr Informationen dazu benötigst, besuche: http://www.sketchtowordpress.com/
Kontaktiere einen Entwickler dort über die Kontaktseite (sie bieten kostenlosen Support für Vagrant und WordPress). Tolle Leute, die dir nur zu gerne helfen.
Ich benutze auch Vagrant, aber es ist zuoooooo langsam. Gibt es etwas, das ich in meiner PC-Konfiguration aktualisieren kann, weil ich 8 GB RAM habe und 6 GB davon Vagrant über die Vagrantbox-Datei zugewiesen habe?
Hallo Atul,
Bearbeite die Vagrantfile und füge diese Zeilen mit deinen Bedürfnissen innerhalb von Vagrant.configure… hinzu.
Außerdem ist die Zuweisung von 6 GB von deinen 8 GB möglicherweise zu viel, dein gesamtes System könnte mit RAM knapp werden.
Ich verwalte meine Vagrant Dev Box persönlich mit puphpet (www.puphpet.com). Ich glaube, Chef ist eine weitere beliebte Alternative, aber ich habe sie selbst nicht ausprobiert.
Das Tolle an puphpet ist, dass es dir ermöglicht, benutzerdefinierte Boxen mit sinnvollen Standardeinstellungen einfach zu konfigurieren. Die Auswahl eines bestimmten Betriebssystems mit einem bestimmten Stack und leicht konfigurierbaren vhosts macht es für meine Entwicklungsumgebung sehr wichtig.
Leider gibt es einige sehr reale Nachteile bei der Verwendung von Vagrant.
Es ist mir schon öfter passiert, dass es meine Box nicht mehr findet und einfach versucht, eine neue zu installieren (ein Neustart löst dies manchmal). Manchmal gibt es Kompatibilitätsprobleme mit der verwendeten Konfigurationsdatei, der Version von Vagrant und der Version von puphpet, was dir keine andere Wahl lässt, als mit einer neuen Box von vorne anzufangen (aber hoffe, dass du technisch versiert genug bist, um deine Datenbank zu diesem Zeitpunkt wiederherzustellen).
Es ist auch nicht so schnell, wie es sein sollte. Ich arbeite hauptsächlich mit Drupal und hatte viele Probleme mit der Leistung. Wenn du googelst, wirst du meistens feststellen, dass Langsamkeit mit den gemeinsam genutzten Ordnern zusammenhängt und du NFS verwenden solltest. Aber dann treten andere Probleme auf, wie zum Beispiel die Unfähigkeit, dem Apache-Benutzer ausreichende Rechte zum Schreiben in einen Ordner zu geben. Ich benutze jetzt die Standard-Sharing-Option, habe aber meiner VM 4 GB RAM und etwa 4 CPU-Kerne zugewiesen (ich betreibe das auf einem Retina MacBook Pro 15" der ersten Generation), was sehr geholfen zu haben scheint, aber es ist immer noch nicht blitzschnell.
Die meisten dieser Probleme hängen wahrscheinlich mit meinem mangelnden Wissen über Linux (und vielleicht Ruby) zusammen. Aber ich bin kein Full-Stack-Entwickler, ich bin ein Front-End-Entwickler, der mit Drupal arbeitet und eine einfach einzurichtende lokale Entwicklungsumgebung benötigt.
Ich bleibe vorerst bei Vagrant, da ich der Meinung bin, dass es eine der besten Optionen auf dem Markt ist. Aber es ist nicht für jeden geeignet und kann dir mehr Probleme bereiten, als es löst, wenn du nicht vorsichtig bist.
Hallo John. Schau dir unsere Nittany Vagrant-Distribution (Penn State Drupal User’s Group) an. Sie wurde speziell für Drupal-Leute entwickelt, die schnell eine lokale Entwicklungsumgebung einrichten möchten. Lass mich wissen, was du davon hältst!
https://github.com/psudug/nittany-vagrant
Verzeiht mir, wenn das eine dumme Frage ist. Was ist der beste Weg, wenn man mehrere Entwicklungsseiten hat? Wenn ich lese, dass der erste `vagrant up` 20-30 Minuten dauert, dann scheint das Betreiben mehrerer Boxen keine Lösung zu sein.
Du kannst sie in separate Ordner legen und das `base-meta`-Tag verwenden, damit deine relativen Pfade funktionieren.
Oder du kannst deine vhosts konfigurieren (entweder manuell oder mit einem Tool wie puphpet), wo du definierst, dass bestimmte Ordner mit bestimmten Webadressen verknüpft sind. Die IP-Adresse deiner Vagrant-Box ist immer dieselbe, also nachdem die vhosts konfiguriert sind, kannst du deine Hosts-Datei bearbeiten, um sie einzufügen, z.B.
192.168.0.156 http://www.siteone.dev siteone.dev
192.168.0.156 http://www.sitetwo.dev sitetwo.dev
Ich habe keine Ahnung, was du damit meinst...
Ich schaue mir puphpet gerade an, aber ich verstehe davon nicht viel.
Aber danke, dass du dir die Zeit genommen hast, zu antworten. Ich denke, ich muss noch ein paar Tutorials zu Vagrant lesen.
Das HTML-Base-Tag (https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base)
Wenn du mit Unterordnern arbeitest und keine vhosts verwendest, greifst du auf deine Seite über `http://ip.of.vagrantbox/subfolder` zu, was Probleme mit relativen Links verursachen kann. Durch die Angabe deines Basispfads wird dies vermieden.
Aber ich empfehle dir, dich einfach mit der vhost-Implementierung zu beschäftigen.
Puphpet sieht auf den ersten Blick sehr überwältigend aus, ist aber meistens vorkonfiguriert. Wenn du einfach die Standardkonfiguration herunterlädst, erhältst du eine Ubuntu 14.04-Box mit nginx, php und mysql, die über `http://www.awesome.dev` zugänglich ist, glaube ich.
Schau dir einfach den awesome.dev vhost an und kopiere dieselbe Konfiguration für andere vhosts, die du erstellen möchtest.
Die Hosts-Datei ist eine Datei auf deinem eigenen System (also nicht in der vbox), die du konfigurieren musst, um deinem System mitzuteilen, dass eine bestimmte Domain auf eine bestimmte IP aufgelöst werden soll.
Hallo John,
In Bezug auf puphpet: Wenn ich Vagrant bereits installiert habe, ist die *mit nginx, php und mysql vorkonfigurierte Ubuntu 14.04-Box* dann nicht völlig redundant?
Vagrant ist einfach eine Umgebung zur Verwaltung verschiedener „Boxen“. Vagrant lädt eine Box herunter (die Ubuntu 14.04-Installation in diesem Fall) und installiert den entsprechenden Entwicklungsstack basierend auf der Vagrantfile und den anderen von puphpet generierten (oder manuell geschriebenen) Dateien.
Vagrant bietet eine Schnittstelle, die es dir ermöglicht, einfach mit diesen Boxen zu kommunizieren und sie schnell zu verwerfen/neu zu installieren.
Mit puphpet zum Beispiel: Wenn ich eine zusätzliche PHP-Abhängigkeit oder einen neuen vhost benötige, gebe ich meine config.yaml einfach wieder in puphpet ein, ändere die Konfiguration und lade die aktualisierte Konfiguration herunter. Dann führe ich `vagrant up --provision` aus und meine Box wird mit diesen neuen Einstellungen aktualisiert.
Hallo. Es gibt Laravel Homestead, aber das ist für nginx. Ich habe eine Vagrant-Box erstellt, die Apache verwendet. Sieh sie dir gerne an: https://github.com/ronilaukkarinen/jolliest-vagrant
Danke Roni, ich werde sie mir ansehen.
Das ist nur das erste Mal, dass du `vagrant up` ausführst. Wie bei VVV werden dort viele Add-ons installiert, wie Grunt mit einer Tonne von Modulen und die WordPress Test Suite unter anderem. Nachdem du das erste Mal hochgefahren bist, dauert es nur einen Moment, um Vagrant hochzufahren.
Es dauert keine 20-30 Minuten. Das ist nur für den Download der Box. Danach dauert es etwa 10 Sekunden zum Booten.
Scotch Box ist derzeit für das Hosten eines Projekts pro VM vorgesehen. Du kannst also mehrere ausführen, solange du die VM *suspend* (unterbrichst), bevor du eine neue startest. Das ist Out-of-the-Box. Technisch gesehen kannst du vhosts installieren, um mehrere Seiten einzurichten, wenn du das möchtest.
Oh Mann, ich wünschte, dieser Beitrag wäre eine Woche früher erschienen. Ich habe gerade Tage damit verbracht, verschiedene Skeleton-Vagrant-Stacks auszuprobieren, von denen keiner sehr zuverlässig war. Scotch Box sieht aber großartig aus, danke.
Ich habe gesehen, wie ein Tutorial-Autor seine Vagrant-Box geteilt hat, damit seine Leser seinem Tutorial folgen können. Und meine Frage ist: Wenn ich 5 verschiedene LAMP-Vagrant-Boxen installiere, bedeutet das dann, dass jedes Projektverzeichnis seine eigene PHP-, MySQL-, Composer- und Laravel-Installation hat? Nimmt das nicht viel Platz ein?
Meine Boxen sind normalerweise 1-2 Gigabyte groß. Ich glaube nicht, dass das zu viel Festplattenspeicher beansprucht. Du könntest auch `vagrant destroy` verwenden und jedes Mal neu starten, wenn du dir Sorgen um den Speicherplatz machst.
Dies ist ein guter Einstiegsartikel, aber ich würde mir gerne einen Nachfolgeartikel wünschen, der sich mit a) der Verwendung deines IDE/Texteditors mit Sites innerhalb von Vagrant und b) dem Deployment auf einen Produktionsserver befasst.
Nun, du würdest deinen IDE/Texteditor verwenden, wie du es für alles andere tun würdest, da ändert sich nichts. Du kannst sogar IDEs wie VIM auf der Box installieren, genau wie auf deinem PC. Es gibt viele Boxen, die VIM als Teil des Setups haben.
Ihr solltet euch dieses Vagrant WordPress Setup ansehen, das einer meiner Entwickler erstellt hat. Es erstellt eine voll funktionsfähige WordPress-Installation mit PHPMyAdmin in weniger als 3-5 Minuten Provisionierung. Meine Firma nutzt es für all unsere Projekte.
https://github.com/axocomm/vagrant-wordpress
Schreibt mir eine E-Mail [email protected], falls ihr Probleme bei der Konfiguration habt.
Großartig, danke fürs Teilen!
Ich benutze Vagrant für meine gesamte WordPress-Arbeit. Ich kann nicht sagen, dass ich ein fortgeschrittener Vagrant-Benutzer bin, nicht mal annähernd.
Für meine Bedürfnisse ist "Varying Vagrant Vagrants" ein großartiges Werkzeug, das neue WordPress-Installationen mit nur wenigen Zeilen Befehlen im Terminal startet. Alles, vom Herunterladen von WP, dem Einrichten der Konfiguration/Datenbank, Hostnamen (z.B. mysite.dev oder ähnlich) wird erledigt.
Ich benutze https://github.com/chad-thompson/vagrantpress als Entwicklungsumgebung. Es war bisher sehr stabil und schnell für mich.
Hey, ich habe Scotch Box gemacht! Toller Artikel.
Für Vagrant funktioniert Scotch Box einfach – schlicht und einfach. Schaut euch auch Homestead an, um einen NGINX-Stack zu erhalten, der einfach funktioniert.
Ansonsten liegt die wahre Schönheit von Vagrant in der Provisionierung. Bei Scotch Box ist alles in einer großen, fetten VM verpackt. Das funktioniert gut für grundlegende PHP-Sachen und macht es für alle einfach.
Wenn ihr jedoch fortgeschrittene Dinge tun wollt, könnt ihr Vagrant so konfigurieren, dass es euren Server bei
vagrant upüber Tools wie Chef, Puppet oder sogar ein Shell-Skript provisioniert. Stellt euch eine Server-Einrichtung als Konfigurationsdatei vor, die Vagrant verwendet.Bleibt auch dran, Leute. Scotch Box 2.0 kommt bald. Bessere Unterstützung für VHost, schnellere Leistung, optional HHVM, bessere Dateiberechtigungen und mehr.