Für meine Projekte in der Webentwicklung verwende ich Ubuntu Linux als Server in einer VirtualBox. Dabei bekommt jedes Projekt mit seiner eigenen virtuellen Maschine eine komplett von den anderen Projekten abgetrennte Umgebung. Dadurch hat man den großen Vorteil, dass Programmversionen und Einstellungen von PHP, Apache, etc zu jeder Zeit gleich bleiben, was die Anwendung betrifft. Keine Jongliererei mit Konfigurationen, die noch alte Anwendungen unterstützen müssen oder ähnliches also. Das Projekt kann zu jedem Zeitpunkt wieder in Betrieb genommen werden, man muss nur die virtuelle Maschine starten.

Mittlerweile ist das auch recht günstig zu bewerkstelligen. Auf meinem drei Jahre alten Laptop (2GHZ Dual Core) läuft das ohne Probleme. Für einen Ubuntu Server mit einer virtuellen Maschine braucht man nicht mehr als 512 MiB übrigen Arbeitsspeicher. Eine Grundinstallation, die ich hier erklären möchte, belegt mit vollständigem LAMP etwas über 1,3 GiB Festplattenplatz. Platz- und Ressourcengründe sollten also niemanden dazu bewegen, alles auf nur einen einzigen Testserver zu zwängen.

Zielsetzungen

Diese Anleitung beschreibt einen reinen Entwicklungs- und Testserver und ist nicht für Betrieb im Internet gedacht. Dadurch ergeben sich auch die folgenden Zielsetzungen:

  • Webserver Apache2 mit PHP5 und MySQL 5.1
  • GD-Addon für Grafikarbeiten mit PHP
  • Erreichbarkeit des Servers im Netzwerk von beliebigen Rechnern aus (zum Test unter verschiedenen Betriebssytemen und Browsern)
  • Einfache Datenverwaltung auf dem Server über SFTP
  • Replizierbarkeit für neue Projekte

Der Server kann so etwa zur Entwicklung von auf Wordpress basierten Websites verwendet werden. Alles andere kann selbstverständlich nachinstalliert werden.

Voraussetzungen zur Installation

Ich verwende die OpenSource-Version 3.2.8 von VirtualBox, installiert unter Ubuntu 10.10, wo man es einfach im Software-Center installieren kann. Alle anderen können VirtualBox von der Homepage herunterladen und installieren. 

Außerdem verwende ich die Minimal-CD von Ubuntu 10.10 zur Installation meines Servers. Nach der Grundinstallation von CD wird das System komplett aus dem Internet installiert, so erspart man sich nach der Installation das fällige Aktualisieren des Betriebssystems und lädt nicht große Mengen an MiB runter, die man nachher nicht verwendet. 

Erstellen der virtuellen Maschine

Das Erstellen der VM ist denkbar einfach, sobald man VirtualBox installiert hat. Einen Namen darf man sich frei aussuchen, als Betriebssystemtyp wählt man Linux und Ubuntu. Sollte man die 64bit-Version der Minimal-CD heruntergeladen haben und in der Tat vor einem 64bit-Betriebssystem sitzen, sollte man hier auch Ubuntu 64bit wählen.

Als Hauptspeicher reichen die vorgeschlagenen 512 MiB für den Serverbetrieb vollkommen aus. Eine Desktop-Installation könnte mehr gebrauchen, damit beschäftigen wir uns hier aber auch nicht. Sollte man auf seinem Rechner weniger als 2 GiB Arbeitsspeicher haben, sollte man hier auch auf 256 MiB zurückgehen. Mit meinen 3 GiB Arbeitsspeicher hatte ich mit 512 MiB für die virtuelle Maschine allerdings keinerlei Probleme.

Im nächsten Schritt erstellen wir eine Festplatte auf Grundlage eines Dynamisch wachsenden Mediums. Das hat den Vorteil, dass unser Festplattenabbild auf der echten Festplatte nur so viel Platz verbraucht, wie auch Daten innen drin verbrauchen. Die im nächsten Schritt eingestellten 8,0 GiB Festplattenplatz dienen daher lediglich als Obergrenze des verbrauchbaren Platzes.

Damit ist die virtuelle Maschine dann auch schon bereit und kann gestartet werden. Beim ersten Start fragt ein Startassistent nach dem Installationsmedium. Hier kann man die heruntergeladene mini.iso verwenden. Sobald die Maschine startet, beginnt die…

Installation von Ubuntu

Die Installation von Ubuntu auf dem Desktop ist besonders einfach. Lägen ausreichend Körner auf der Eingabetaste, könnte sie ein blindes Hund bewältigen. Die Installation der Minimal-Version des Servers ist ein wenig anspruchsvoller aber ebenfalls nicht besonders kompliziert. Solange man den Anweisungen folgt, der Einfachheit halber noch Sicherheitsaktualisierungen automatisch installieren auswählt, kommt man schlussendlich beim Auswahldialog der Server-Aufgaben an. Damit lassen sich vorsortierte Pakete von Anwendungen als Ganzes installieren. Wir benötigen davon den LAMP-Server und den OpenSSH-Server.

Während der Installation wird nach dem zu wählenden Root-Kennwort für MySQL gefragt. Dieses sollte man sich gut merken oder aufschreiben, da es zur Erstellung zusätzlicher Datenbanken benötigt wird.

Netzwerkkonfiguration

Die Grundinstallation des Servers ist soweit auch schon fertig. Damit die virtuelle Maschine aus dem Netzwerk und vom normalen Browser aus auch erreichbar ist, muss noch die Netzwerkbrücke konfiguriert werden. 

Am Ende der Installation steht ein Neustart in das gerade installierte System hinein. Man landet jedoch noch bei der Oberfläche der Installations-CD - ein guter Zeitpunkt, Änderungen an der virtuellen Maschine vorzunehmen und sie dazu abzustellen. Über einen Klick auf Maschine und Schließen kann man sie ausschalten und damit Änderungen wieder erlauben.

Hinter dem Button Ändern findet sich unter Netzwerk eine Auflistung von Netzwerkadaptern. Angeschlossen an sollte hier von NAT auf Netzwerkbrücke geändert werden. Unter Name muss noch das Netzwerkinterface ausgewählt werden, das mit dem eigenen Netzwerk und Internet verbunden ist. In meinem Fall etwa wlan0.

Unter Plattenspeicher sollte die mini.iso an einem der Controller eingehängt sein. Wenn man darauf klickt, lässt sich rechts unter CD/DVD-Laufwerk auf leer umstellen, damit die Maschine nicht mehr vom Installationsmedium startet.

Feineinstellungen

Nun lässt sich die Maschine wieder starten und sie sollte vom DHCP-Server im lokalen Netzwerk eine eigene IP-Adresse erhalten und unter dieser erreichbar sein. Es sollten der Bequemlichkeit halber noch einige Pakete installiert werden, die hier weiterhelfen können. Nach dem Login mit den bei der Installation festgelegten Zugangsdaten installieren wir wie folgt:

sudo aptitude install virtualbox-ose-guest-utils virtualbox-ose-guest-dkms \
avahi-daemon libnss-mdns php5-gd

Zur Erklärung:

  • virtualbox-ose-guest-* sind die Gasterweiterungen der VirtualBox. Dadurch lassen sich später einige bequeme Funktionen wie gemeinsam genutzte Ordner o.Ä. verwenden
  • avahi-daemon und libnss-mdns lassen die virtuelle Maschine unter geeigneten Betriebssystemen (Ubuntu und OSX, Windows nach Installation von ZeroConf, was meist bei iTunes o.Ä. mitinstalliert wird) auch unter dem bei der Installation gewählten Rechnernamen erreichbar sein: rechnername.local

Um Dateien verwalten und Webanwendungen installieren zu können, wird noch das Heimverzeichnis des Webserver-Benutzers eben diesem überschrieben und ein Kennwort festgelegt

sudo chown -R www-data:www-data /var/www
sudo passwd www-data

Die virtuelle Maschine ist nun mittels SFTP unter rechnername.local mit Benutzername www-data und dem gewählten Kennwort erreichbar und nimmt im Verzeichnis /var/www Daten entgegen, die der Webserver später ausliefert. Unter Ubuntu genügt das Hinzufügen eines Lesezeichens über Orte, Verbindung zu Server, für OSX gibt es CyberDuck und für Windows FileZilla.

Wiederverwenden

Um nicht für jedes Projekt erneut alles installieren und konfigurieren zu müssen, sollte man die nun erstellte Festplatte lassen, wie sie ist und als Vorlage nutzen. Beginnt ein neues Projekte, lässt sie sich entweder einfach im Dateisystem kopieren und im Manager für virtuelle Medien hinzufügen oder auf einer Shell mittels

vboxmanage clonehd quelldateiname.vdi zieldateiname.vdi

duplizieren

Abschlussbemerkungen

Die so installierte virtuelle Maschine dient als gute Grundlage für die Entwicklung von Webprojekten mit einem LAMP-Stack. Ausdrücklich nicht gedacht ist sie für den produktiven Einsatz im Internet oder auch nur im realitätsnahen Staging-Betrieb. Es wurden keinerlei Sicherheitsvorkehrungen, die auf einem von außen erreichbaren Server notwendig wären, vorgenommen und die Verwaltung der Dateien als Benutzer www-data etwa ist sicherheitstechnisch überall außer auf Test- und Entwicklungsservern höchst problematisch. Nur hierfür ist die Anleitung gedacht.