Linux-Server für serverseitige Internet-Anwendungen

Wenn man statische HTML-Seiten mit oder ohne eine clientseitige Scriptsprache wie JavaScript erstellt, dann kann man die Seiten und die dazugehörigen Dateien in einem Projektordner speichern und die Websites können direkt im Browser geöffnet und getestet werden. Man benötigt in dem Fall keine besondere Testumgebung für die Entwicklung der Websites.

Anders sieht es aus, wenn man serverseitige Anwendungen programmieren möchte. Häufige Anwendungsfälle sind Content-Management-Systeme oder andere dynamische Websites, die in PHP geschrieben und zusätzlich mit einer MySQL-Datenbank verbunden werden. In solchen Fällen benötigt man eine Testumgebung, damit man die Ergebnisse der Programmiercodes überprüfen kann. Das ist bedingt durch die Art der Verarbeitung des Programmiercodes auf dem Server. Wenn man z.B. eine PHP-Datei aufruft, dann laufen grob betrachtet die folgenden Vorgänge ab.

  • Der Browser ruft die PHP-Datei auf und stellt somit eine Anfrage an den Webserver.
  • Der Webserver lädt die PHP-Datei von der Festplatte.
  • Der Webserver übergibt die Datei an den PHP-Interpreter.
  • Der PHP-Interpreter führt den Programmiercode aus.
  • Optional wird lesend und/oder schreibend eine Datenbankverbindung hergestellt.
  • Der PHP-Interpreter übergibt nach Vollendung das Ergebnis des Programmiercodes an den Webserver.
  • Der Webserver sendet die PHP-Datei an den Browser.
Vorgang beim Aufruf dynamischer PHP-Seiten

Im Internet werden für serverseitige Anwendungen häufig Linux-Server eingesetzt. Die lokalen Rechner vieler Benutzer sind dagegen Windows-Systeme. Es ist zwar nicht zwingend notwendig, Linux-Kenntnisse zu besitzen, um das Programmieren von serverseitigen Anwendungen zu erlernen. Spätestens jedoch wenn die Webanwendung online geschaltet wird und der Server ein Linux-System ist, erweisen sich Linux-Kenntnisse als sehr vorteilhaft. Auf den Seiten unterhalb dieses Knotens sind Anleitungen für die Einrichtung und Konfiguration eines Testsystems für serverseitige Anwendungen vorhanden und das Hauptaugenmerk liegt dabei auf Ubuntu in der Version 14.04.3 LTS, das auf Linux basiert.

Typische Serverkonfiguration für webbasierte Anwendungen

Ein Server unterscheidet sich von einem gewöhnlichen Rechner dadurch, dass er nicht für die normale Benutzung ausgelegt ist, sondern für Spezialaufgaben. Daher ist auf einem Server ein spezielles Betriebssystem installiert. Das System wird mit verschiedenen speziellen Programmen ergänzt, die vielerlei Dienste übernehmen. Für webbasierte Anwendungen enthalten Server typischerweise die folgenden Features, die natürlich noch erweitert werden können.

  • Webserver
  • Interpreter
  • Datenbank-Server

Apache Webserver

Als Webserver wird die Software eines Servers bezeichnet, die typischerweise für die Entgegennahme der Client-Anfragen und die Auslieferung der Webseiten und sonstigen Dateien (Bilder, PDF etc.) konzipiert ist. Dabei muss der Webserver auch hohe Lasten vertragen, um den Ansturm von Anfragen bewältigen zu können. Moderne Webserver können tausende Anfragen pro Sekunde bearbeiten. Im Internet wird auf Linux-Servern vor allem der Apache-Webserver eingesetzt, neuerdings auch häufig nginx.

Um die Client-Anfragen entgegenzunehmen, lauscht der Webserver an bestimmten Ports, z.B. Port 80 für HTTP- und Port 443 für HTTPS-Verbindungen. Bei statischen Seiten oder normalen Dateien wie z.B. Bildern werden diese in der Standardkonfiguration von der Festplatte geladen und an den Client verschickt. Bei Dateien, die serverseitig programmiert wurden, nehmen diese den Umweg über den Interpreter, damit der Programmiercode ausgeführt werden kann.

PHP-Interpreter

Im Internet werden Webanwendungen häufig in PHP programmiert. In solchen Fällen muss auf dem Server ein PHP-Interpreter vorhanden sein, der die Aufgabe hat, den Programmiercode in den PHP-Dateien auszuführen und nach Beendigung die Datei wieder an den Webserver zu übergeben, der diese weiter an den Client verschickt.

MySQL Datenbank-Server

Für PHP-Anwendungen werden häufig Datenbank-Server benötigt, die die Aufgabe haben, Informationen zu verwalten, sodass man sie bei Bedarf auslesen, löschen oder aktualisieren kann. Ein typisches Beispiel hierfür ist ein Online-Shop. Die Produktbeschreibungen, Preise etc. werden normalerweise in einer Datenbank gespeichert. Beim Aufruf einer Produktseite übergibt der Webserver die Seite an den PHP-Interpreter, die Daten aus der Datenbank werden ausgelesen, der HTML-Code mit den einzelnen Produktzeilen werden in der PHP-Datei generiert und an den Webserver übergeben, der die Seite zum Schluss an den Client verschickt. In Verbindung mit PHP werden vor allem MySQL Datenbank-Server eingesetzt.

Weitere nützliche Dienste auf einem Server

Neben diesen drei Diensten, die für webbasierte Anwendungen wichtig sind, gibt es noch eine Reihe weiterer Dienste, die auf einem Server normalerweise installiert sind. Dazu zählen insbesondere die folgenden.

  • FTP-Server (Zum Hoch- und Runterladen von Dateien per FTP)
  • PHPMyAdmin (Benutzeroberfläche für die Verwaltung von MySQL-Datenbanken)
  • DNS-Server (Zum Auflösen von Domainnamen in IP-Adressen)
  • Email-Server (Zum Versenden und Empfangen von E-Mails)
  • Weitere Interpreter (Perl, Python etc.)

LAMP-, WAMP-, MAMP- und XAMPP-Systeme

Ein Linux-System, auf dem Apache, MySQL und PHP verfügbar ist, wird abgekürzt LAMP genannt. Analog wird ein Windows-System WAMP und ein MAC-System MAMP genannt. Ist auf dem System auch Perl verfügbar, wird am Ende ein weiteres P angehängt, sodass die Systeme LAMPP, WAMPP und MAMPP genannt werden. Beim XAMPP-System steht das X für ein beliebiges Betriebssystem. Es gibt fertige XAMPP-Systeme für verschiedene Betriebssysteme, die man nur herunterladen und einzurichten braucht und man erhält eine vollwertige Testumgebung, in der man beginnen kann, dynamische Webseiten zu programmieren und zu testen. Ganz gleich, für welches Betriebssystem man sich entscheidet, hat man bei der Einrichtung einer Testumgebung verschiedene Möglichkeiten.

Webhoster in Anspruch nehmen

Es gibt unzählige Anbieter auf dem Markt, die für ein geringes Entgelt Speicherplatz auf einem Server anbieten, auf dem Apache-Webserver, PHP und MySQL verfügbar sind. Der Vorteil hierbei ist, dass man die Anwendungen direkt in einer Live-Umgebung testen kann. Denn, oftmals erlebt man einige Überraschungen, wenn man auf dem lokalen System Anwendungen programmiert und diese irgendwann auf einen realen Server überträgt. Nachteilig ist, dass man Vorkehrungen treffen muss, damit während der Testphase niemand sonst auf die Website zugreifen kann. Da Server im Internet prinzipiell für jeden zugänglich sind, kann das insbesondere in der Lernphase ein großes Sicherheitsrisiko darstellen, wenn z.B. die Programmiercodes fehlerhaft sind.

XAMPP einrichten

Der Vorteil bei einem XAMPP-System ist, dass man kein Geld für ein Testsystem auszugeben braucht. Außerdem muss man keine bzw. wenig Vorkehrungen zum Schutz vor einem Zugriff treffen, da die Anwendungen lokal auf dem Rechner gespeichert werden und darauf normalerweise keine unbefugten Personen Zugriff haben bzw. haben sollten. Nachteilig ist, dass die Entwicklung von Websites nicht unter Live-Bedingungen geschieht. Oft können Anwendungen, die auf einem Windows-System mit einer XAMPP-Testumgebung erstellt wurden, nicht einfach auf einen realen Server übertragen werden und man muss gewisse Anpassungen vornehmen.

Server auf einer virtuellen Maschine

Eine sehr elegante Lösung ist, auf einer virtuellen Maschine einen Server einzurichten. Damit umgeht man die Nachteile der beiden anderen Lösungen. Denn, auf einer virtuellen Maschine kann man ein Serverbetriebssystem der Wahl (z.B. Linux) sowie die benötigten Dienste (Apache, MySQL, PHP etc.) einrichten und erhält somit eine Testumgebung, die den realen Bedingungen zumindest weitestgehend entspricht. Außerdem kann man die virtuelle Maschine so einrichten, dass man nur über den lokalen Rechner darauf zugreifen kann, sodass ein gewisser Schutz vor unbefugtem Zugriff gewährleistet ist. Und wenn man dazu ein Serverbetriebssystem wählt, das kein Geld kostet, dann ist die Lösung zum Testen ideal. Hinzu kommt, dass man auf diese Art und Weise die Einrichtung, Konfiguration und Wartung eines realen Servers erlernen kann.

Die auf diesen Seiten vorgestellten Beispiele und Anleitungen beziehen sich daher auf einen Ubuntu-Server auf einer virtuellen Maschine. Als Software für den Betrieb der virtuellen Maschine wurde VirtualBox verwendet, das zumindest in der Vergangenheit für Einzelpersonen kostenlos zur Verfügung stand. Eine Beispiel-Anleitung, wie man als Testumgebung einen Ubuntu-Server mit Apache, PHP und MySQL in VirtualBox einrichtet, ist auf der folgenden Seite zu finden.

Die Einrichtung dauert etwas länger als bei einem XAMPP-System. Dafür hat man jedoch einen virtuellen Server, der vom lokalen Rechner entkoppelt ist. Man kann bequem Sicherungspunkte (Snapshots) erstellen und bei Bedarf wieder in den ursprünglichen Zustand zurück versetzen. Das ist in der Lernphase sinnvoll, da man in der Zeit gefahrlos viele Dinge ausprobieren kann.