Ubuntu-Server 14.04.3 LTS in VirtualBox als Testumgebung einrichten
Wenn man dynamische Websites programmieren möchte, z.B. mit PHP, dann benötigt man eine Testumgebung, in der man die Anwendungen testen kann. Eine sehr schöne Möglichkeit hierfür bieten virtuelle Maschinen. Der Vorteil dabei ist, dass sie den realen Bedingungen am ehesten entsprechen und trotzdem eine gewisse Sicherheit vorhanden ist, da auf dem lokalen Rechner normalerweise keine unbefugten Personen Zugriff haben. Würde man direkt im Internet einen Server bei einem Webhoster mieten, bedeutet das prinzipiell ein Sicherheitsrisiko, da im Grunde jeder über das Internet auf den Server zugreifen könnte. In der Lernphase, in der die PHP-Anwendungen nicht unbedingt sicher sind, kann das fatale Folgen haben.
Man kann auf dem lokalen Rechner einen virtuellen Server einrichten, konfigurieren und warten, so wie man sie später in einer realen Umgebung bei einem Webhoster vorfindet. Nachfolgend ist eine Beispiel-Einrichtung von Ubuntu 14.04.3 LTS in VirtualBox mit Hilfe von Bildergalerien beschrieben, sodass man die einzelnen Schritte nachvollziehen kann. Die Einrichtung umfasst grob betrachtet die folgenden drei Schritte. Das Vorhandensein von Virtualbox wird dabei vorausgesetzt.
- Ubuntu-Server downloaden und virtuelle Maschine einrichten
- Installation des Ubuntu-Servers
- Optional: Updates in Ubuntu-Server einspielen
- Netzwerkeinstellungen des virtuellen Servers anpassen
Ubuntu-Server downloaden und virtuelle Maschine einrichten
Zunächst muss das Ubuntu-Paket als ISO-Datei von der Herstellerseite heruntergeladen werden.
Danach muss in VirtualBox die virtuelle Maschine eingerichtet werden. In diesem Beispiel wurden 40 GB Festplattenspeicher (Format .vdi) und 2 GB Arbeitsspeicher gewählt. Als Grafikspeicher wird nichts besonderes benötigt, da der Server normalerweise über die Konsole bedient wird. Das heruntergeladene Ubuntu-Paket muss als CD/DVD-Laufwerk eingebunden werden, damit davon gestartet wird und die Installation durchgeführt werden kann. Als Anschluss für Adapter 2 wird NAT gewählt, damit Updates aus dem Internet heruntergeladen werden können. Dieser wird später deaktiviert, sodass der virtuelle Server keine Internetverbindung hat. Dafür wird später Adapter 1 aktiviert, damit man auf den Server vom lokalen Rechner aus zugreifen kann.
Ubuntu-Server installieren
Nach dem Start der virtuellen Maschine sollte automatisch vom CD/DVD-Laufwerk bzw. von der ISO-Datei gebootet werden. Man wird Schritt für Schritt durch die einzelnen Installationsschritte geführt. Diese umfassen grob betrachtet die folgenden Punkte.
- Sprache, Installationssprache, Standort, Tastaturkonfiguration
- Netzwerkeinrichtung
- Benutzereinrichtung
- Zeitzone
- Festplattenpartition
- Einstellungen zu Updates
- Software-Auswahl, z.B. LAMP, DNS-Server, Mailserver, OpenSSH
- Mailserver-Konfiguration
- Installation des Bootloaders GRUB
- Abschluss und Neustart des Systems
Damit nach einer erfolgreichen Installation beim Hochfahren keine erneute Installation gestartet wird, sollte man die Verbindung zur ISO-Datei wieder trennen. Nachfolgend sind die einzelnen Schritte in einer Bildergalerie abgebildet. Optional kann man danach auf der virtuellen Maschine Updates einspielen, bevor man die Netzwerkeinstellungen anpasst.
Netzwerkeinstellungen des virtuellen Server anpassen
Zum Schluss müssen noch die Netzwerkeinstellungen angepasst werden, damit der Zugriff auf den virtuellen Server vom lokalen Rechner aus funktioniert. Hierbei gibt es mehrere Möglichkeiten. In diesem Beispiel wurde in den Einstellungen von VirtualBox der Adapter 1 aktiviert und dabei Host-only Adapter gewählt. Auf dem virtuellen Server wurde außerdem die Datei /etc/network/interfaces geändert, damit beide Adapter im System verfügbar sind. Das Editieren erfolgte dabei mit vim. Hierbei ist vor allem wichtig, dass man mit der Taste i in den Einfügemodus wechselt, mit der ESC-Taste den Einfügemodus beendet und mit :wq oder :wq! die Datei speichert und schließt. Nach eine Neustart sollte mit ifconfig die zweite Netzwerkkarte angezeigt werden.
Bei laufendem Serverbetrieb kann man über die Kommandozeile mit ping prüfen, ob der Zugriff über den lokalen Rechner funktioniert. Man kann die IP-Adresse auch über den Browser aufrufen und prüfen, ob die Standardseite des Ubuntu-Servers angezeigt wird. Damit die Standardseite des Servers auch über einen Domainnamen erreichbar ist, muss die lokale Datei hosts geändert werden, die sich in der Regel unter C:\Windows\System32\drivers\etc befindet. Dabei wird zu einem frei wählbaren Domainnamen die IP-Adresse des Servers eingetragen. Danach sollte der Zugriff auf die Standardseite auch über den Domainnamen möglich sein. Es versteht sich von selbst, dass der frei wählbare Domainname nur für die Testumgebung auf dem virtuellen Server gilt und man einen Domainnamen wählen sollte, den man sonst im Internet nicht verwendet.
Nach den Updates kann aus Sicherheitsgründen der Adapter 2 in VirtualBox (NAT-Anschluss) wieder deaktiviert werden, sodass keine Internetverbindung besteht. Im dem Fall sollte man die Datei /etc/network/interfaces des virtuellen Servers ebenfalls bearbeiten und die Netzwerkkarte eth1 auskommentieren (mit #). Sonst wird beim Hochfahren immer versucht, die Netzwerkkarte eth1 zu konfigurieren. Nur wenn Updates eingespielt werden sollen, kann man den Adapter 2 aktivieren. Damit die IP-Adresse des virtuellen Servers sich nicht ständig ändert, sollte man außerdem die Netzwerkkarte eth0 (Adapter 1) auf static umstellen und die IP-Adresse manuell eintragen. Nachfolgend sind die einzelnen Schritte abgebildet.
Ist bis hierher alles erfolgreich verlaufen, kann man den virtuellen Server als Testumgebung für PHP-Anwendungen (oder andere Programmiersprachen wie Python, Perl etc.) verwenden. Nebenbei kann man auch lernen, wie man einen Server konfiguriert, ohne dass man ein Live-System im Internet hierfür benötigt. Vor wichtigen Änderungen sollte man immer eine Sicherheitskopie (Snapshot) erstellen, sodass man sie bei Bedarf wieder einspielen kann.
Die nächsten Schritte
Mit der Einrichtung des virtuellen Servers ist zunächst eine Testumgebung geschaffen worden. Man kann damit fortfahren, den Server zu konfigurieren (Apache, PHP, DNS- und E-Mailserver etc.) und/oder mit weiteren Paketen einzurichten, z.B. PHPMyAdmin. Hierfür ist eine gründliche Einarbeitung notwendig.
Man kann sich stattdessen auch direkt mit serverseitiger Programmierung beschäftigen. Bei diesem Beispiel sollte man direkt mit PHP beginnen können. Für andere Programmiersprachen wie z.B. Perl sind in der Regel weitere Schritte notwendig. Der Pfad zur Standardseite des virtuellen Servers ist normalerweise
- /var/www/html/
Über die Konsole navigiert man zu dem Ordner mit dem Befehl
- cd /var/www/html/
Listet man den Inhalt des Ordners (mit dir) auf, müsste die darin befindliche Datei index.html zu sehen sein, die angezeigt wird, wenn man über den Browser den Server aufruft. Man kann an dieser Stelle über die Konsole die Datei löschen oder umbenennen und eine PHP-Datei erzeugen. Allerdings ist auf Dauer die Erstellung von PHP-Dateien über die Konsole zeitraubend.
Man kann an dieser Stelle zwar mit dem User, der bei der Installation angelegt wurde (in diesem Beispiel loginusr), sich mit einem SFTP-Client einloggen, z.B. WinSCP. Allerdings kann man aufgrund der Berechtigungen keine Dateien erstellen und bearbeiten. Mit dem User root wäre das zwar möglich. In der Standardinstallation ist der User root jedoch zunächst deaktiviert. Bei einer Testumgebung hätte man zwar kein besonderes Sicherheitsrisiko, wenn man den User root aktiviert. Allerdings sollte man sich von vornherein daran gewöhnen, ohne root zu arbeiten.
Man steht also vor dem Problem, dass man über WinSCP mit dem erstellten User keine Dateien erstellen und bearbeiten kann und auf der anderen Seite der User root deaktiviert ist. Eine mögliche Lösung an dieser Stelle ist, den erstellten User in die Gruppe aufzunehmen, in der auch der Apache-Webserver Mitglied ist. Das ist normalerweise die Gruppe www-data, kann aber auch eine andere sein. Außerdem kann man den User als Eigentümer für den Ordner /var/www/ setzen. Mit den entsprechenden Berechtigungen hat damit der Apache-Webserver die Möglichkeit, die Dateien zu lesen und auszuliefern und mit den Userberechtigungen kann man sich mit einem SFTP-Client auf dem Server einwählen (Übertragungsprotokoll SFTP) und bequem Dateien erstellen, hoch- und runterladen etc. Nachfolgend sind in der Bildergalerie die einzelnen Schritte abgebildet.
Ist bis hierher alles wie gewünscht verlaufen, hat man eine gute Entwicklungsumgebung und man kann in Zukunft mit der PHP-Programmierung beginnen, bequem über den SFTP-Client Dateien hoch- und runtreladen, löschen, umbenennen etc.