Testserver einrichten mit Vagrant

Testserver einrichten mit Vagrant

Um ein Webprojekt sinnvoll entwickeln und testen zu können, muss man einen lokalen Testserver einrichten. Idealerweise bildet man dabei die Konfiguration der Live-Umgebung (Webserver, auf dem man seine Seiten veröffentlicht) möglichst 1:1 ab.

Welche Möglichkeiten man dabei hat, zeigt dieser Artikel.

Ausgangslage

Du entwickelst ein Spiel / einen WebShop oder was auch immer unter Verwendung von PHP und MySQL. Sofern dein Projekt noch nicht offiziell verfügbar ist, könntest du dir theoretisch damit behelfen, jede Änderung auf den Webserver hochzuladen und dort zu testen. Was extrem umständlich ist. Selbst für einfachste Projekte. Man hat auch kaum Debugging Möglichkeiten (Trace File schreiben – na dann viel Spaß dabei 🙂 ) und sobald deine Seite offiziell verfügbar ist, ist so eine Vorgehensweise ohnehin ein absolutes No-Go!

Der lokale Webserver – ein Muss!

Damit dein Spiel lokal läuft und du es vernünftig testen kannst, musst du also auf jeden Fall einen lokalen Webserver einrichten.

XAMPP von den ApacheFriends

Sehr beliebt ist XAMPP von den ApacheFriends. XAMPP ist quasi das All-in-One Sorglos Paket. Es ist einfach installierbar (inklusive Windows Installer) und läuft in der Regel problemlos. Allerdings beinhalten die aktuellen Versionen statt MySQL nun MariaDB (begründet in der Lizenzpolitik von Oracle). Die letzte Version mit MySQL wurde im August 2015 freigegeben, verfügbar unter Sourceforge.

Wer also live MySQL laufen hat (was bisher bei den meisten Providern der Fall ist), wird lokal sicher nicht mit MariaDB entwickeln wollen, auch wenn MariaDB angeblich ein „drop in replacement“ sein will. Für mich persönlich ist das keine Option. Zwar kann man XAMPP laut Forum beibringen, MySQL zu verwenden, aber wenn ich dann für mein Einsatzgebiet ohnehin manuell herumkonfigurieren muss, kann ich auf XAMPP auch gleich verzichten.

Wampserver

Der Wampserver ist eine Alternative zu XAMPP, da dieser nach wie vor mit MySQL arbeitet. Bei einer Neuinstallation werden die aktuellen Versionen von PHP, MySQL und dem Apache Webserver verwendet, man kann aber problemlos ältere Versionen nachinstallieren und auch einfach zwischen den Versionen hin und her schalten. Den Wampserver hatte ich bisher im Einsatz und war auch sehr zufrieden damit.

Ideal ist aber weder die Verwendung von XAMPP noch des Wampservers – siehe weiter unten. Und da ich ohnehin meine Entwicklungsumgebung neu aufsetzen muss („Ich hasse meinen neuen PC!„), werde ich mich vom Wampserver trennen und auf die Verwendung von Vagrant umsteigen.

Wo liegt das Problem?

Wenn man unter Windows entwickelt, die Webseite aber unter Linux betreiben wird, kann das zu Problemen führen. So ist zum Beispiel lokal unter Windows bei MySQL die Groß-/Kleinschreibung von Tabellennamen egal, live unter Linux aber nicht. Klar könnte man jeden Entwickler zwingen, ab sofort unter Linux zu entwickeln, aber diese Forderung ist rein theoretischer Natur und in der Praxis nicht sinnvoll umsetzbar.

Weiters erfordern neue Versionen von PHP und MySQL auf dem Webserver des Providers, auch die lokale Umgebung nachzuziehen. Zumindest bei Major Releases ist das unbedingt anzuraten, da man ansonsten unvorhergesehene Probleme in der Live-Umgebung riskiert.

Arbeitet man in einem Team, so heißt das, dass jedes der Team-Mitglieder seine Umgebung updaten muss.

Zum Glück gibt es aber eine Lösung für all diese Probleme. Sie  heißt Vagrant.

Vagrant

Vagrant ermöglicht es, eine lokale Testumgebung aufzusetzen und diese dann als virtuelle Maschine zur Verfügung zu stellen.

Schritte, die dazu durchzuführen sind:

  • Installation
  • virtuelle Maschine aufsetzen (beinhaltet Betriebssystem)
  • Provisioning
    • Applikationen installieren
    • Daten einspielen

Was ist eine virtuelle Maschine?

Eine virtuelle Maschine ist grob gesagt ein Computer auf deinem Computer in einer eigenen, abgekapselten Umgebung.

Alles, was du darin  machst, beeinflusst die Konfiguration deines Computers nicht. Im Falle einer Fehlkonfiguration kannst du diese Maschine einfach wieder löschen, ohne dein restliches System zu beeinflussen.

Du kannst auch problemlos Linux auf einem Windows-PC in einer solchen virtuellen Maschine laufen lassen. Diesem Computer im Computer weist man auch entsprechenden RAM Speicher zu, welcher deinem Computer fehlt, sobald du die virtuelle Maschine gestartet hast. Beendest du diese, wird der Speicher umgehend wieder freigegeben.

Vagrant kann  unterschiedliche, virtuelle Maschinen verwenden wie z.B. VirtualBox oder VMware. Ich verwende VirtualBox von Oracle, da dieses kostenlos verfügbar ist.

Virtuelle Maschine aufsetzen

Nach der Installation von VirtualBox und Vagrant kann man damit beginnen, eine virtuelle Maschine aufzusetzen.

Alles beginnt mit einer sogenannten Vagrant Box. Eine Vagrant Box stellt mehr oder weniger den Ausgangspunkt einer virtuellen Maschine dar. Auf der Seite von Vagrant findet man viele dieser Boxen. Eine solche Box kann nichts anderes enthalten als zum Beispiel einen Ubuntu Server oder aber auch eine komplett vorgefertigte, virtuelle Maschine zur Entwicklung von PHP Applikationen (z.B. Laravel Homestead oder Homestead Improved).

Nachdem ich gerne die volle Kontrolle über meine virtuelle Maschine hätte, will ich auch alle Applikationen (Apache, PHP, MySQL) gezielt aufsetzen und beginne demnach mit einer reinen Ubuntu Box und keiner vorgefertigten virtuellen Maschine.

Durch

vagrant init ubuntu/trusty64

initialisiert man Vagrant. Damit wird ein Vagrantfile mit Standardeinstellungen erstellt und eine Ubuntu Box als virtuelle Maschine definiert.

Wenn es im Anschluss bei

vagrant up

zu Problemen kommt (Fehler beim Download), kann das folgende Gründe haben:

Nachdem ich beim Download Probleme hatte, habe ich beides geprüft. VT-x war eingeschaltet, aber die VC++ Runtime hatte auf meinem PC gefehlt. Nach Installation der Runtime konnte ich erfolgreich mit

vagrant up

meine nackte, virtuelle Maschine starten. Der VirtualBox Manager zeigt nun eine laufende Linux Maschine mit Ubuntu an.

Beim ersten Mal dauert das Starten aufgrund des zusätzlichen Downloads der Vagrant Box ein wenig länger. Jeder weitere Start geht dann recht flott (~ 15 Sekunden auf meinem PC) vonstatten.

Das ist doch schon einmal ein schöner Zwischenerfolg!

Im nächsten Teil dreht sich dann alles ums Provisioning, also um das installieren der Programme unserer soeben erfolgreich aufgesetzten virtuellen Maschine und um das einspielen der Daten unserer Datenbank.

 

Schreibe einen Kommentar

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