Rails-Entwicklung in einer Ubuntu-VM

Ubuntu-VMIch arbeite normalerweise unter Windows 7, wollte mich nun aber doch auch privat mal an einem Rails-Projekt versuchen. Das geht zwar auch unter Windows, aber ich war nicht speziell scharf darauf, auszutüfteln was man dafür alles modifizieren muss. Rails-Entwicklung geht unter Linux doch einfach flüssiger von der Hand. Also habe ich mir eine Arbeitsumgebung in einer Ubuntu-VM eingerichtet, die ich in diesem Beitrag näher beschreiben möchte.

Das Herzstück der neuen Arbeitsumgebung ist eine Virtuelle Maschine, in der ein Ubuntu-System läuft. In Ubuntu steht die gewohnte Konsole zur Verfügung. Hier laufen RVM, Git, Ruby, Thin oder ein anderer Webserver der Wahl. Was ich weiterhin in Windows ansiedeln wollte (und hier kamen erste Schwierigkeiten auf), waren der Browser und die Datenbank. Den Firefox kann ich natürlich auch in der VM starten, aber das macht sich außerhalb doch etwas praktischer. Die Datenbank läuft unter Windows, da die VM nicht zu sehr wachsen soll und ich unter Windows auch schon entsprechende Datenbank-Tools eingerichtet habe.

Virtuelle Maschine

Ich habe es kurz mit QEMU versucht, es aber leider nicht geschafft, darin Ubuntu zu installieren. Keine Ahnung wieso, ich bin dann jedenfalls bei Virtual Box gelandet und damit sehr zufrieden.

Also Schritt 1: Virtual Box in der passenden Windows-Version herunterladen und installieren.

Schritt 2: Eine neue virtuelle Maschine anlegen. Den Container mitwachsend gestalten und das Limit lieber zu groß als zu klein wählen. Das kann meines Wissens nach später nur noch mit viel Frickelei vergrößert werden, wenn die virtuelle Platte doch überläuft. Ich habe aktuell 15 GB eingestellt und belege davon im Moment 6. Hätte ich vielleicht sogar schon mehr eintragen sollen. Ansonsten ist nichts spezielles einzustellen, die Defaults reichen aus.

Schritt 3: Ein Betriebssystem in der VM installieren. Ich habe mir dafür eine 32-Bit-Version von Ubuntu heruntergeladen, und zwar als *.iso-Datei. Diese Datei habe ich dann in der Konfiguration der VM als CD eingehangen (unter „Massenspeicher“) und natürlich ausgewählt, dass das System von CD auch booten soll. Wichtig: Die CD muss als IDE-Controller angelegt werden, SATA funktioniert nicht. Dann einfach die VM starten und wie gewohnt Ubuntu installieren.

Falls die System-übergreifende Zwischenablage nicht auf Anhieb funktioniert, braucht ihr wahrscheinlich die GuestAdditions im Gast-Betriebssystem. So ganz bin ich da auch noch nicht dahintergestiegen, aber seit ich sie installiert habe, klappt es nun, Texte in Windows zu kopieren und in Ubuntu einzufügen, was für ein sinnvolles Arbeiten unerlässlich ist.

Netzwerk-Konfiguration

Etwas mehr Zeit habe ich mit der Konfiguration des Netzwerks verbracht. Standardmäßig kann die VM aufs Internet zugreifen, über den vorhandenen NAT-Adapter. Das ist gut so, denn wir müssen ja Software aktualisieren, Gems installieren etc.

Die VM muss aber auch auf den Windows-Host zugreifen können, zum Erreichen der Datenbank, und der Windows-Host muss die VM erreichen können, zum Darstellen der Anwendung im Browser. Dazu brauchen wir einen zweiten Netzwerk-Adapter, und zwar vom Typ „Host-Only“. Die VM einfach ausschalten und über „Ändern“ die Einstellungen bearbeiten. Unter „Netzwerk“ einen weiteren Adapter vom Typ „Host-Only“ hinzufügen. Dann die VM wieder starten.

Unter Windows ist nun ein weiteres Netzwerk verfügbar (Eingabeaufforderung > „ipconfig“), welches die Adresse „192.168.56.1″ hat. In Ubuntu existiert analog ein Netzwerk „eth1″ mit der IP-Adresse „192.168.56.101″ (Terminal > „ifconfig“). Leider klappte es bei mir nicht, dass ich von Ubuntu aus auf die Datenbank unter Windows zugreifen konnte. Nach einiger Recherche stellte sich heraus, dass Windows das neue Netzwerk nicht identifizieren kann und es deswegen als öffentlich behandelt. Eingehende Anfragen werden dann von der Firewall geblockt. Schaut man sich das Netzwerk- und Freigabecenter an, sollte das „Host-Only“-Netzwerk dort als unidentifiziert und mit dem Parkbank-Symbol auftauchen. Man kann den Status des Netzwerks allerdings dort auch nicht ändern, was ärgerlich ist.

IPv4-KonfigurationDie Lösung: Man muss dem Netzwerk ein Gateway geben, dann arbeitet Windows damit auch freiwillig. Warum das so ist kann ich als Netzwerk-Laie nicht sagen, klappt aber. Im Netzwerk- und Freigabecenter rechts auf „VirtualBox Host-Only-Netzwerk“ klicken und im PopUp-Dialog auf „Eigenschaften“. „Internetprotokoll Version 4″ auswählen und auf „Eigenschaften“ klicken. IP-Adresse und Subnetzmaske waren bei mir eingetragen, DHCP und Gateway nicht. Als Gateway muss ein existierender anderer Rechner im Netzwerk ausgewählt werden, hier also die IP der Ubuntu-VM eintragen. Beim Speichern fragt Windows nun plötzlich, was für ein Netzwerktyp das Host-Only-Netzwerk sein soll. Hier privat oder Arbeit nach Bedarf auswählen, dann klappt die Verbindung aus der VM heraus.

In der database.yml in den Rails-Projekten muss nun natürlich noch der Host eingetragen werden. Einfach „host: 192.168.56.1″ ergänzen.

Letzte Schritte

Eclipse in der VM zu starten habe ich mich nicht getraut. Als Editor verwende ich dort fürs erste Sublime, von dem meine Kollegen sehr begeistert sind. Nun ja, das Programm läuft schlank und schnell, ist also prinzipiell brauchbar. Ich muss noch sehen, ob ich damit auf Dauer so gut klarkomme, dass ich es mir kaufen werde. Alternative Vorschläge an Tools für die Rails-Entwicklung nehme ich gerne entgegen! 😉

Die Einrichtung von RVM, Rails, Git etc. beschreibe ich jetzt nicht im Detail, da gibt es bessere Anleitungen im Netz. Zur Versionskontrolle nehme ich wie schon für meine WordPress-Projekte beschrieben Git mit bitbucket.

Als letztes dann noch eine kleine Modifikation, um sich für den Aufruf aus Windows heraus nicht die IP-Adresse merken zu müssen: Wie schon für meine lokalen WordPress-Installationen richte ich mir eine lokale Domain für das neue Projekt ein. Die HOSTS-Datei öffnen (bei mir unter C:\Windows\System32\drivers\etc) und das hier ergänzen:

192.168.56.101   my_ubuntu.vm

Das Rails-Projekt aus der VM lässt sich dann in Windows mit http://my_ubuntu.vm:3000/ aufrufen. Da Rails-Projekte üblicherweise immer direkt mit Port 3000 gestartet werden, könnte ihr theoretisch einfach einen solchen Eintrag machen und für beliebig viele Projekte nutzen. Falls die Passwörter der Projekte verschieden sind, macht es sich aber ggf. besser, pro Projekt eine solche Domain einzurichten (einfach immer die gleiche IP nehmen). Dann kommt der Passwort-Manager im Browser auch nicht durcheinander.

So, ich hoffe, diese Anleitung war für den ein oder anderen hilfreich. Tips, was noch besser geht, sind willkommen. Und nein, „ganz auf Ubuntu umsteigen“ ist nicht direkt hilfreich. 😉

6 Gedanken zu „Rails-Entwicklung in einer Ubuntu-VM

  1. Danke für den Artikel. Ich bin weit weniger ambitioniert als du, was VirtualBox betrifft, eigentlich wollte ich nur ein wenig mit der LiveCD von Precise Pangolin rumspielen, auch eine Testinstallation durchführen usw. Momentan verwende ich XP SP3 als Host und VirtualBox 4.1.14.

    Das Lustige ist: Als ich das erste Mal rangegangen bin (ohne irgendwas zu konfigurieren), klappte es auf Anhieb, d.h. Live-System und später auch Testinstallation inkl. Gnome+Zusätze lief samt Netzverbindung, sogar den Gemeinsamen Ordner habe ich schließlich eingebunden bekommen.

    Jetzt, nach einem erneuten Versuch (stabiler aktueller Imagestand + Neuinstallation von VirtualBox) wo ich alles genauso gemacht habe, sprich wieder die *.iso reinhänge, Ubuntu-Live starte, fehlt mir immer das Netz. Und ich hab wirklich keinen Schimmer, woran das liegen könnte und wo ich suchen muss; habe aber recherchiert, dass ich mit diesem Problem nicht allein dastehe. Hast du zufällig eine Idee oder einen Tipp, wo ich kucken muss?

  2. Das lässt sich jetzt so schwierig sagen ohne draufzuschauen. Von der VM aus online zu gehen ging bei mir jedenfalls mit den Default-Einstellungen, nämlich „NAT“. Probier mal, Dich dem Problem anzunähern: Mit „ipconfig“ in Windows und „ifconfig“ in Linux schauen, was für Netzwerke konfiguriert sind und welche IP-Adressen die haben. Wenn das richtig aussieht, mal von der VM aus den Host und z.B. Google anpingen und schauen, ob das durchgeht. Falls nicht, mal die Windows-Firewall kurz abschalten und noch mal probieren. Viel Glück!

  3. Tja, ich habe NAT belassen und auch sonst meine Finger von der Netzkonfig gelassen; ipconfig und ifconfig haben mich nicht weitergebracht (MAC-Adresse der VirtualBox-Maschine stimmt mit MAC-Adresse aus ifconfig nicht überein, aber das ständig), und letztendlich bin ich so verfahren um garantiert Netzzugriff in der VM zu erhalten:

    1. In /etc/network/interfaces die Zeile
    iface eth0 inet dhcp
    ergänzt, so dass die Datei folgendes enthält:
    auto lo
    iface lo inet loopback
    iface eth0 inet dhcp

    2. Kommando sudo ifup eth0 ausgeführt.
    Der anschließende ping-Test zeigt: Netz ist jetzt vorhanden.

    Was ich nicht kapiere (bin allerdings nicht so der Linuxianer), weshalb ich überhaupt eingreifen muss, wohingegen es manche Male auch ohne Manipulationen meinerseits funktioniert, sobald die LiveCD in der VM gebootet ist.
    (Die Windows-Firewall war übrigens nicht der Störfaktor, habe die VirtualBox.exe aber mal als „Ausnahme“ eingetragen.)

  4. Danke für die Infos! Im Detail kann ich da auch nichts zu sagen, ich nutze Linux bisher nur als Anwender, ohne zu viel selber an den Innereien zu schrauben. Habe ein wenig gegoogelt, finde aber auch keine gute Erklärung, wieso das nötig sein sollte. Bei mir fehlt diese Zeile in der interfaces-Datei jedenfalls und es geht trotzdem. Es liegt dann vielleicht am DHCP-Server, den VirtualBox für die VM bereitstellt? Vielleicht klappt das auf Deinem System aus irgendeinem Grund nicht ohne Nachhilfe?!

    Naja, schön wenn es geht, und dem ein oder anderen hilft Dein Tip vielleicht noch weiter, also vielen Dank für die Rückmeldung!

  5. Hallo,
    du hast mir wirklich sehr geholfen. Ich werde diesen Ansatz auf für die Produktion einsetzten, da das Deployment von Ruby on Rails Projekten unter Windows sehr schwierig ist.
    Nochmal Danke

  6. Einfach bridged in der netzwerk einstellung einstellen, falls du einen z.b. dsl-router im einsatz hast auf dem dhcp läuft bekommt deine virtuelle maschine eine eigene ip zugewiesen, das funktioniert schnell und einfach.

    ich habe dann bei mir im router(fritzbox) noch eingestellt das die vm immer die gleiche ip bekommt.

    um zugriff auf z.b. den db server zu bekommen einfach in der mysql config bindadress mit # auskommentieren fertig 🙂
    und einem dbbenutzer deiner wahl % geben

    lg vardash

Schreibe einen Kommentar

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

Bitte beachte die Kommentarregeln: 1) Kein Spam, und bitte höflich bleiben. 2) Ins Namensfeld gehört ein Name. Gerne ein Pseudonym, aber bitte keine Keywords. 3) Keine kommerziellen Links, außer es hat Bezug zum Beitrag. mehr Details...

So, noch mal kurz drüber schauen und dann nichts wie ab damit. Vielen Dank fürs Kommentieren! :-)