Eine Einführung in Vagrant

Avatar of Jason Witt
Von Jason Witt am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

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.

vagrant logo

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:

scotch box default screen

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.