VirtualBox virtueller Server als Alternative zu XAMPP und MAMP – Teil 4

Werbung

Im vierten Teil des Tutorials möchte ich gerne zeigen, wie denn die Daten von unserem Desktop auf den virtuellen Server kommen.

Ich gehe auch in diesem Tutorial davon aus, dass die ersten drei Teile durchgearbeitet wurden und nehme dies als Grundlage.

Tanzen, Transferieren oder Teilen

Was hat Tanzen mit Development zu tun? Samba! Samba ist ein Netzwerk Filesystem, welches auf dem SMB Netzwerk Protokoll beruht. Dabei liegen die Daten auf dem virtuellen Server und vom Desktop PC aus kann dort zugegriffen werden.

Die zweite Möglichkeit ist FTP (File Transfer Protocol) auch hierbei handelt es sich um ein Netzwerk Protokoll zum Austausch von Daten.

Die dritte Möglichkeit ist direkt in VirtualBox integriert und nennt sich „gemeinsamer Ordner“ (Shared folder). Hierbei können die Dateien auf dem Desktop PC liegen und die virtuelle Maschine bindet diesen in den virtuellen Server ein.

Wir teilen

Ich habe mich bewusst für die Shared folder bzw. gemeinsamer Ordner entschieden. Wenn der Fall eintreten sollte, dass die virtuelle Maschine nicht mehr startet, dann kommt man auch so schnell nicht mehr an die darauf liegenden Dateien ran.

Zugegeben, bei mir ist das in den vergangenen Jahren erst einmal passiert, aber ich habe die Daten lieber auf meinem Desktop PC.

Anfangs habe ich selbst noch Samba benutzt, aber leider sind dabei immer wieder Probleme aufgetreten, die vermutlich damit zu tun hatten, dass ich den virtuellen Server nie herunter fahre, sondern die virtuelle Umgebung nur pausieren lasse.

FTP kam eh nicht in Frage, weil bei jeder kleinen Änderung die Dateien erstmal übertragen werden müssten. Dies kostet Zeit und ist daher ausgeschieden.

Gasterweiterung installieren

Die Konfiguration der „gemeinsamen Ordner“ ist über ein kleines Ordnersymbol unten rechts im Fenster der virtuellen Maschine zu finden. Im Screenshot rot markiert.

Leider fehlt uns noch ein wichtiges Element um einen gemeinsamen Ordner anlegen zu können. Die Gasterweitung von VirtualBox.

Wir laden uns die Gasterweiterung, die auf der Download Seite Extension Pack heisst herunter und mit einem Doppelklick können wir diese installieren. Wichtig dabei ist, dass man die Gasterweiterung passend zur Version von VirtualBox auswählt.

Wir holen uns das Fenster der gestarteten virtuellen Maschine (nicht über SSH) in den Vordergrund und wählen im Menü „Geräte –> Gasterweiterung installieren“. Damit wird die Gasterweitung in unsere virtuelle Maschine gehängt.

Knifflig? Nicht für uns!

Wenn ihr Ubuntu, wie empfohlen, in der Server Version installiert habt, dann ist das CDRom Laufwerk noch nicht gemountet. Dies holen wir nach mit

und wechseln dann auf das CDRom Laufwerk mit

Hier können wir uns jetzt die Dateiliste mit

anschauen.

Werbung

Leider fehlt uns noch etwas um unseren gemeinsamen Ordner anlegen zu können. Dazu installieren wir gcc und make zusätzlich hinzu mit:

Jetzt sollten wir aber alles notwendige haben um endlich weitermachen zu können.

Auf unserem CDRom Laufwerk in der virtuellen Maschine starten wir mit

die Installation der VirtualBox Gasterweiterung in der Maschine selbst. Nach einiger Zeit sollte sich die Installation mit dem Hinweis beenden, dass kein X Server installiert ist. Dies ist nur der Fall, wenn eine Server Version von Ubuntu oder einem anderen Linux System installiert wurde. Auf die Funktion der Shared folders hat das einen Einfluss.

Endspurt

So langsam kommen wir zum Ende der Installation. Wir klicken in dem Fenster mit unserer virtuellen Maschine wieder auf das Ordnersymbol für die Gasterweiterung (unten links) und wählen „Gemeinsamer Ordner…“ aus.

Es öffnet sich das Konfigurationsfenster und mit einem Klick auf das Ordnersymbol mit dem Pluszeichen, können wir unseren virtuellen Ordner hinzufügen.

Als Ordnerpfad wählen wir das Verzeichnis auf dem lokalen Desktop PC aus, welches wir teilen wollen. Der Ordnername ist noch sehr wichtig, weil wir dies noch für die Konfiguration brauchen. Daher hier einen Namen ohne Sonderzeichen benutzen.

update-gemeinsamer-ordner

Die Checkboxen „Automatisch einbinden“ und „Permanent erzeugen“ müssen aktiviert sein. Mit zweimal „Ok“ schliessen wir die Konfiguration.

Auf der Konsole starten wir unseren Server neu mit:

Nach dem Neustart gehen wir wieder auf die Konsole und legen eine neue Startdatei für den gemeinsamen Ordner an. Dies kann auch automatisch geschehen, aber so weit wollen wir jetzt nicht in die Konfiguration eindringen. In der Regel wird die virtuelle Maschine eh nur pausiert und daher ist so ein Startskript recht nützlich.

Folgende Befehle führen wir aus:

In Vi drücken wir i für den Editiermodus und geben folgendes ein:

Ordnername ist der Name, der bei der Konfiguration des gemeinsamen Ordners ausgewählt wurde. Wir verlassen VI mit ESC und 😡 (Doppelpunkt + x).

Update 05.09.2013:
Der Ordner shared in /var/www muss noch angelegt werden mit:

Jetzt machen wir das Startskript noch ausführbar:

Und ein letzter Schritt

Wir rufen

auf und wechseln mit

in unseren gemeinsamen Ordner. Jetzt sollten, wenn vorhanden, die Dateien unseres Desktop PC in dem gemeinsamen Ordner zu sehen sein.

Ab sofort benutzen wir nicht mehr /var/www/projektname für unsere Projekte sondern /var/www/shared/projektname. Die Apache Konfigurationsdateien können wie in Teil 2 des Tutorials beschrieben angepasst werden mit dem neuen Pfad.

Ich hoffe das Tutorial was einigermaßen ausführlich und verständlich. Sollten Probleme oder Fragen auftauchen, dann bitte einen Kommentar hinterlassen.

Werbung
Hat dir der Beitrag gefallen? Dann würde ich mich sehr freuen, wenn du ihn weiterempfehlen würdest.Share on FacebookShare on Google+Tweet about this on Twitter

30 Gedanken zu „VirtualBox virtueller Server als Alternative zu XAMPP und MAMP – Teil 4

  1. Hallo,
    vielen Dank für ihren Einstieg in die Thematik. Schon seit einer Weile hatte ich genau so etwas vor, nur habe ich mich nicht ran gewagt.
    Ihre Erläuterungen haben mir sehr geholfen.
    Einige Details haben mir allerdings Probleme bereitet. Zunächst das kleinere Übel. Im Teil4, wo es um das einhängen des CD-Laufwerks geht:
    Der Befehl lautet bei mir nicht sudo mount -t iso9660 /dev/sr0 /media/cd
    sondern sudo mount -t iso9660 /dev/sr0 /media/cdrom
    darum folgt dann auch cd /media/cdrom
    Ein bisher nicht wirklich gelöstes Problem ist die Konfiguration der zwei Projekte. Ich habe allerdings auch noch kein gutes Verständnis der Materie.
    Um den beschriebenen Weg abzuschließen musste ich die Blöcke:
    ServerAlias http://www.projekt1.local
    DocumentRoot /var/www/projekt1
    DirectoryIndex index.php
    mit umschließen. Ich wurde durch eine Fehlermeldung, ServerAlias könne nur innerhalb dieser Angabe existieren, darauf gebracht.
    Erst dann ließ sich der apache neustarten. Leider wird nun nur das erste Projekt korrekt auf das angegebene Verzeichnis (DocumentRoot) verwiesen. Die zweite Adresse funktioniert zwar (hosts Datei unter Windows) aber landet ebenfalls im Projekt1 Verzeichnis. Ich werde beim neustart des apache auf NameVirtualHost hingewiesen. In diese Dinge muss ich mich aber zunächst einlesen und das hat im Moment keine Priorität. In den Beispielen auf apache.org werden diese virtuellen Hosts alle zentral in der httpd.conf angegeben.
    Noch einmal Danke für die Anleitung

    Stephan

  2. Hi Stephan,

    prima, dass dir das Tutorial gefallen hat.

    Tatsächlich hat WordPress bei den Apache Konfigurationsdateien die erste und letzte Zeile aufgefressen 🙂 Korrekt müsste es lauten:

    Für das zweite Projekt dann jeweils mit projekt2.

    Natürlich ist das nur gerade so viel Konfiguration, dass es funktioniert. Im Directory Block, der sich innerhalb des befindet, können noch feinere Einstellungen vorgenommen werden.

    Die Anleitungen auf apache.org beziehen sich allgemein auf die Konfiguration. Ubuntu / Debian gehen mit der Aufsplittung der VHost Datein einen etwas anderen Weg. Prinzipiell ist es aber möglich die Konfiguration in einer Datei vorzunehmen. Ich trenne die allerdings auch lieber. Bei zwei oder drei Projekten ist das noch übersichtlich, aber ich habe lokal bei mir etwa 50-60 Projekte und wenn ich da die Konfiguration ändern will, dann ist das einfacher in getrennten Dateien. Ist aber auch Geschmackssache.

    Das mit /media/cd und /media/cdrom prüfe ich heute Abend und passe das Tutorial dann entsprechend an. Evtl. ist das nur ein Tippfehler. Bei einem langen Text schleichen sich hier und da schon Fehler ein. Normalerweise achte ich darauf, dass ich das was ich da schreibe auch direkt noch mal selbst teste. Vielen Dank für den Hinweis.

    Gruß,
    Dirk

  3. Ich habe das gleiche (Entwicklungsumgebung mit Mysql, PHP, Perl, Mod-Rewrite, SVN/Gits usw.) auf Debian am laufen (in Virtualbox unter Ubuntu), dort läuft es aber eher bescheiden, teilweise warte ich da 50 Sekunden auf die Grafiken einer Webseite (VM hat 2 CPU-Kerne (a. 2,3 gHz), 1 GB Ram, das ganze läuft dediziert

  4. Hi,

    hast du geschaut was die lange Wartezeit verursacht? Als Erstes würde ich mal mit tail -f /var/log/apache2/access.log /var/log/apache2/error.log (wenn der Standard nicht geändert wurde) schauen ob dort was ungewöhnliches zu sehen ist.

    Eventuell auch mal mit Firefox und Firebug unter dem Tab Netzwerk schauen was genau die Zeit frisst.

    Hast du übermässig viele Bilder? Ansonsten auch mal die Bilder mit einem Expires belegen. Dann werden die im Browser länger gecached und nicht ständig nachgeladen.

  5. Hey Dirk,

    eine sehr gute Anleitung genau das was ich brauchte nachdem mein XAMPP andauernd abgeschmiert ist und die Freehoster entweder nicht meinen Ansprüchen genügten oder bestimmte Funktionen deaktiviert hatten die ich brauchte.
    Allerdings habe ich ein Problem und zwar geht das mit den Shared Folder nicht!?
    Folgende Fehlermeldung bekomme ich:
    umount: share: Nicht gefunden
    /sbin/mount.vboxsf: mounting failed with the error: No such file or directory

    wenn ich dann nach /var/www/ gehe und dort ls -ln eingebe sagt er mir das da überhaupt kein Ordner ist der shared heiß!?
    ich probiere da nochmal ein wenig rum aber vllt. weißt du ja was das Problem ist?
    Naja trotzdem noch mal vielen dank für dieses Tutorial!

    mfg Maxi

  6. uhh ich bin ein Depp hab meinen Fehler gefunden also noch mal Danke für die Anleitung und sorry wegen dem Doppelpost!

  7. Ich habe irgendwie das Problem, dass ich das Startskript nicht ausführen kann. Ich kann auch nicht mit cd in usr/local/scripts wechseln. Er sagt mir der Ordner sei nicht vorhanden. Mit sudo vi kann ich aber die startvbox.sh editieren. Bitte um Hilfe!

    Wenn mein shared Ordner C:/Ubuntu ist, dann muss ich im Startskript doch nur Ubuntu eingeben. Oder muss ich da C:/Ubuntu eingeben?

  8. Wenn du in VirtualBox im rechten Auswahlfenster auf deine virtuelle Maschine klickst, dann auf „Ändern“ und dann auf „Gemeinsamer Ordner“, dann sieht man dort die Ordnerliste. Dort müsste ja auch deine Zuweisung drin stehen. Und unter „Name“ findest du das was du angeben musst.

    Hast du denn diesen Befehl „sudo mkdir -p /usr/local/scripts“ ausgeführt? Damit erstellt man ja das Verzeichnis und dort drin müsste dann das Startskript sein. Das ist auch nur ein Beispiel. Du kannst es auch woanders ablegen.

    Du schreibst, du kannst startvbox.sh editieren. Möglicherweise hast du es nicht unter „/usr/local/scripts“ abgelegt? Wichtig ist auch immer der führende „/“, weil man ansonsten ganz woanders landet.

    Melde dich mal, ob es geklappt hat.

    Gruß,
    Dirk

  9. Hallo,
    auch wenn das Tutorial mittlerweile etwas älter ist, ist es trotzdem immer noch sehr hilfreich – viele Dank dafür!!

    Ich habe allerdings das gleiche Problem, das Maximilian geschildert hatte – die gleichen Fehler bei ausführen des Sricpts (außer natürlich anderer Ordnername…)
    Leider finde ich aber keinen Fehler, den ich gemacht haben könnte…

    im Ordner /media befindet sich ein Verzeichnis „sf_Ordnername“ – müssen die umount- und mount-Befehle vielleicht abgeändert werden?

    Danke für Hilfe! 🙂

  10. Vielen Dank für die schnelle Antwort! Leider klappts nicht.

    Leider klappts nicht. Wenn ich startvbox.sh aufrufe kommt folgende Fehlermeldung: /sbin/Mount.vboxsf: mounting failed with the error: No such file or directory.

    Was nun?

  11. Sorry wegen Doppelpost, aber es ist bei mir genauso wie bei Maximilian/Markus. Bei /media gibt’s bei mir auch den Ordner sf_Ordnername

  12. @Markus: Ist bei dir in der virtuellen Umgebung ein Ordner unter /var/www/shared? Dieser müsste sonst nämlich noch angelegt werden. Ich glaube das geht so genau aus der Anleitung nicht hervor.

    Falls „ls -la /var/www/shared“ nicht funktioniert, dann mit „sudo mkdir /var/www/shared“ einen Ordner anlegen und mit „sudo chmod -R 0777 /var/www/shared“ beschreibbar machen.

    Sag mal Bescheid ob es geklappt hat.

  13. Habt ihr diesen Punkt hier beachtet?

    „Ordnername ist der Name, der bei der Konfiguration des gemeinsamen Ordners ausgewählt wurde“

    Da muss nicht Ordnername eingegeben werden im Startskript, sondern das was in VirtualBox unter „Ändern“ –> „Gemeinsamer Ordner“ –> „Name“ steht.

  14. Also nachdem ich /var/WWW/shared angelegt und beschreibbar gemacht habe und danach das Skript aufrufe, dann kommt folgende Meldung: umount: UbuntuServer: Nicht gefunden. (UbuntuServer heißt mein Ordner)

  15. Ich habe oben unter „Endspurt“ noch einen Screenshot eingefügt wo „Ordnername“ rot markiert ist. Dieser muss mit dem im startvbox.sh übereinstimmen. In meinem Fall wäre dies korrekt:

    umount Ubuntu
    mount -t vboxsf -o rw,uid=1000,gid=1000 Ubuntu /var/www/shared

  16. Kleines Update:
    Ich habe den virtuellen Server nochmals neu gestartet.
    Anschließend scheint zumindest der umount-Befehl zu laufen.
    Beim mount-Befehl scheint das Problem zu sein, dass es die Datei /sbin/mount.vboxsf nicht gibt…

  17. Also bei mir funktioniert es jetzt. Nachdem das Skript die oben genannte Fehlermeldung ausspuckte, habe ich versucht den Ordner /media/sf_UbuntuServer (Ordnername) zu öffnen. Geht nicht -> keine Berechtigung. mit sudo chmod -R 0777 /media/sf_UbuntuServer Berechtigung erstellt. Versucht mit cd reinzukommen, hat auch geklappt, aber leerer Ordner. Danach habe ich das startvbox.sh ausgeführt und es kam zu meinem erstaunen keine Fehlermedlung. ls -la /var/www/shared aufgerufen und meine vorgefertigten Ordner (die in dem Ordner UbuntuServer liegen) wurden angezeigt. Vllt hilft das ja jemandem weiter (und vllt versteht auch einer wieso).

  18. Das Anlegen des shared-Ordners hat das Problem behoben – mein letztes Update hatte ich geschrieben, ohne diese Webseite vorher zu aktualisiere, daher hatte ich die letzten Posts mit diesem Hinweis vorher nicht gesehen 😉

    Vielen Dank!!

  19. Vielen Dank nochmal für die Hilfe!

    Eine Frage aber hätte ich noch. Wie greife ich nun auf die mysql Datenbank in der VM zu?

  20. Einen Punkt hätte ich noch.
    Sollte der Script-Aufruf nicht auch noch in die rc.local rein?

    Ansonsten müsste man das Script scheinbar bei jedem Start des Servers manuell ausführen, die geänderte Verknüpfung scheint nämlich jedes mal zurück gesetzt zu werden…

  21. @Markus: Ja, das stimmt. Das müsste immer wieder neu gestartet werden, wenn man den Server neu startet. Daher kann man das auch in /etc/rc.local eintragen und automatisch starten lassen. Guter Hinweis!

  22. @Anonym: Auf den mysql Server greift man direkt auf dem virtuellen Server per mysql Befehl zurück. Ansonsten kann man auch einen virtuellen Host anlegen und zum Beispiel phpmyadmin installieren.

    Webanwendungen, die in der virtuellen Umgebung laufen, greifen einfach auf localhost als Hostnamen zurück.

  23. Hallo Dirk,
    auch ich möchte mich recht herzlich bei Dir für die gute Anleitung zum Einrichten der virtuellen XLAMP-Umgebung bedanken. Bei mir hatte auch (fast) alles auf Anhieb so funktioniert wie beschrieben. Nur konnte ich ebenfalls nicht auf den gemeinsamen Ordner zugreifen bzw. ich erhielt den Fehler, dass der Ordner nicht da wäre. Bei mir war die Ursache ein Schreibfehler in der Skript-Datei startvbox.sh. Ich hatte beim Mount-Befehl in der Skript-Datei versehentlich nur angegeben /var/www/share (es fehlte der Buchstabe d).
    Nochmals danke,
    Gruß Jörg

  24. Hallo Dirk,

    leider bekomme ich folgende Fehlermeldungen:
    umount: Ordner-Name: Nicht gefunden
    mount: Protokollfehler

    Ich komme nicht weiter. Hast Du eine Idee, woran dies liegt?

    Grüße und Danke
    Frank

  25. Hast du den Ordnernamen durch den Namen ersetzt, den du in VirtualBox angelegt hast? „Ordnername“ ist in dem Fall hier nur ein Platzhalter für den eigentlichen Namen. Schau mal etwas weiter oben unter der Überschrift „Endspurt“. Dort wird ja erklärt, wie man in VirtualBox einen gemeinsamen Ordner anlegt. Und diesen Namen tauscht man dann durch den Platzhalter „Ordnernamen“ aus.

    Beispiel:

    Name in „gemeinsamer Ordner“ ist: MeinOrdner

    Dann lauten die Befehle:

    umount MeinOrdner
    mount -t vboxsf -o rw,uid=1000,gid=1000 MeinOrdner /var/www/shared

  26. Hallo Dirk,
    der gemeinsame Ordner liegt im Verzeichnis C:\ und heißt ubuntu. Habe den Ordner in der startvbox wie folgt angelegt:

    umount ubuntu
    mount -t vboxsf -o rw,uid=1000,gid=1000 ubuntu /var/www/shared

    Der gemeinsame Ordner wird aber auch nicht als Transienter Ordner angezeigt. Liegt es vielleichz
    daran?

    Grüße Frank

  27. Hallo Dirk,

    habe mal wieder versucht Dein Tutorial durchzugehen. Leider komme ich wieder nicht zu Ziel. Keine Ahnung warum, aber es wird mir nicht der Ordner im Verzeichnis angezeigt. Was mir jedoch aufgefallen ist, ist dass bei sudo mount -t iso9660 /dev/sr0 /media/cdrom folgenden hinweis bekomme: blockorientiertes Gerät /dev/sr0 ist schreibgeschützt, wird eingehängt im Nur-Lese-Modus.
    Zusätzlich sehe ich, dass der eingehängte Ordner bei Dir unter transiente Ordner steht. Bei mir ist er zwischen „Ordner der virtuellen Maschinen“ und Transiente Ordner“. Kann es daran liegen?

    Wenn ich es richtig verstanden habe sind die Schritte aus dem Teil 2 nicht notwendig, wenn ich im Browser den Pfad direkt aufrufe, oder?

    Noch eine Frage hinsichtlich der Schreibweise. Du hast zwischen uid=1000 und ,gid=1000 kein Leerzeichen, stimmt dies so?
    Ich weiß Deine Hilfe wirklich zu schätzen und hoffe, dass ich Dich nicht allzu sehr nerve?

    Viele Grüße Frank

  28. Hallo Frank,

    schön, dass du dich wieder ran getraut hast.

    Das mit dem „eingehängt im Nur-Lese-Modus“ ist auch ok so. Schliesslich handelt es sich dabei um ein CDRom Laufwert, welches immer schreibgeschützt ist.

    Wenn du beim Anlegen der Konfiguration für den Gemeinsamen Ordner „Permanent erzeugen“ nicht auswählst, dann erscheint der Eintrag unter „Transiente Order“. Ich bin mir nicht mehr ganz sicher, warum ich das damals gemacht habe. Das ist schon so lange her. Probier es am besten mal aus, dass du den Ordner nicht permanent einbindest. Zum Einbinden war ja auch das startvbox.sh Skript gedacht.

    Wenn du den Server nur über die IP Adresse aufrufen willst, dann brauchst du nicht alles aus Teil 2 zu machen.

    Die Schreibweise des mountings sollten so ok sein.

    Nein, nerven tut mich das bestimmt nicht. Ich werde in den nächsten Tagen die Anleitung selbst auch mal wieder durchspielen ob noch alles funktioniert.

    Grüße,
    Dirk

Schreibe einen Kommentar

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