21 Der Server im Internet
»Auch aus Steinen,
die einem in den Weg gelegt werden,
kann man Schönes bauen.«
Johann Wolfgang von Goethe (1749–1832),
deutscher Schriftsteller
Was Sie in diesem Kapitel erwartet
Sie können selbstverständlich mit Ubuntu auch einen Webserver betreiben, der Inhalte im Internet bereitstellt. Dies hat beispielsweise den Vorteil, dass Sie Ihre Website selbst »hosten«, also auf einem eigenen Server betreiben können. Aber dies ist natürlich nicht die einzige Anwendung, und so behandeln wir neben Apache auch Datenbanken mit MySQL sowie die Einrichtung eines FTP-, eines WebDAV- und eines E-Mail-Servers. Zum Schluss werden wir uns sogar noch die Einrichtung eines eigenen Jabber-Servers ansehen.
Benötigtes Vorwissen
Sie sollten den grundlegenden Umgang mit der Shell beherrschen (siehe Abschnitt »Das Terminal – sinnvoll oder überflüssig?«).
21.1 Apache
Webdesigner und Blogger schätzen die Möglichkeit, unter Ubuntu Linux in kurzer Zeit einen voll funktionsfähigen Apache-HTTP-Server aufsetzen zu können, um ihre Webinhalte im lokalen Netz zu testen, bevor diese auf den Internetserver hochgeladen werden.
Das HTTP-Protokoll
Ein Protokoll legt Übertragungsstandards fest, es ist eine vereinbarte Logik für die Datenübertragung (Inhalt, auch zeitlicher Ablauf), und es ist eine Spezifikation über das Datenformat und dessen Bedeutung (Syntax/Semantik). Verschiedene Protokolle werden für unterschiedliche Zwecke eingesetzt, so ist beispielsweise das File Transfer Protocol (FTP) gut für die Übertragung von Dateien, aber nicht für die Bereitstellung von Webseiten geeignet.
Das Hypertext Transfer Protocol (HTTP, zu Deutsch: »Hypertext-Übertragungsprotokoll«) ist ein Protokoll zur Übertragung von Daten über ein Netzwerk. Hauptsächlich wird es eingesetzt, um zum Beispiel Webseiten aus dem World Wide Web (WWW) in einen Browser zu laden. Es stellt ein recht einfaches, auf einer Client-Server-Architektur aufbauendes Request-Response-Protokoll dar. Derzeit werden zwei Protokollversionen, HTTP/1.0 und HTTP/1.1, verwendet:
- Bei der Version 1.0 wird vor jeder Anfrage eine separate TCP-Verbindung aufgebaut und nach Übertragung der Antwort wieder geschlossen. Dies bedeutet, dass für komplexe Webseiten, die aus mehreren Elementen bestehen, verschiedene parallele TCP-Verbindungen aufgebaut werden müssen. Da die Geschwindigkeit dieser Verbindungen aufgrund des Slow-Start-Algorithmus recht gering ist, ist die Ladezeit für die gesamte Seite bei mehreren bestehenden Verbindungen deutlich verlängert.
- In der Version 1.1 können gleichzeitig mehrere Anfragen und Antworten auf einer TCP-Verbindung gesendet werden. Dies verkürzt die Ladezeiten bei komplexen Webseiten drastisch. Zusätzlich können bei HTTP/1.1 abgebrochene Übertragungen fortgesetzt werden.
Bei HTTP gehen Informationen aus früheren Anforderungen verloren. Über Cookies in den Header-Informationen können aber Anwendungen realisiert werden, die Statusinformationen (Benutzereinträge, Warenkörbe) zuordnen können. Dadurch können Anwendungen realisiert werden, die Status- oder Sitzungseigenschaften erfordern. Auch eine Benutzerauthentifizierung ist möglich. Normalerweise kann die Information, die über HTTP übertragen wird, auf allen Rechnern gelesen werden, die im Netzwerk durchlaufen werden. Über HTTPS kann die Übertragung verschlüsselt erfolgen.
Editierbares Internet
Die ursprüngliche Idee von Tim Berners-Lee, dem Erfinder des World Wide Web, war, dass das Web ein sowohl lesbares als auch editierbares Medium sein sollte, und sein erster Webbrowser, genannt WorldWideWeb, war in der Lage, Seiten auch permanent zu editieren. Als das Web wuchs, wurde es jedoch zu einem »Nur-Lese-Medium«. Nebenbei bemerkt enthalten auch die aktuellen HTTP-Spezifikationen noch die Requests PUT und DELETE, die jedoch von den allermeisten Webservern mit der Meldung 405 Method Not Allowed abgelehnt werden.
21.1.1 Konfiguration
Folgende Pakete sind zunächst für die aktuelle Apache-Server-Basis zu installieren:
- apache2
- apache2-common
- apache2-doc
Damit wird das neue Apache-2-Release installiert. Zusätzlich können Sie einige Module installieren, um den Apache zum Beispiel um die PHP und Python-Funktionalität zu erweitern. Zur Integration von PHP sind dies:
- libapache2-mod-php5
- php5
- PHP-Module wie pear, mysql, pgsql ...
PHP: Rekursives Backronym für Hypertext Preprocessor, ursprünglich Personal Home Page Tools. Eine Programmiersprache mit einer an Java bzw. Perl angelehnten Syntax, die hauptsächlich zur dynamischen Erstellung von Webseiten oder Webanwendungen verwendet wird. PHP ist Open-Source-Software. PHP zeichnet sich besonders durch die leichte Erlernbarkeit, die breite Datenbankunterstützung und Internet-Protokolleinbindung sowie durch die Verfügbarkeit zahlreicher zusätzlicher Funktionsbibliotheken aus. Es existieren beispielsweise Programmbibliotheken, um Bilder und Grafiken zur Einbindung in Webseiten dynamisch zu generieren.
Python wird mit folgenden Paketen nachgerüstet:
- libapache2-mod-python
- python
Nach der Installation der obigen Pakete via apt-get oder Synaptic lässt sich der Apache-Server mit folgenden Kommandos kontrollieren:
sudo /etc/init.d/apache2 <start|stop|restart>
Die Fehlermeldung
apache2: Could not reliably determine the server's fully qualified domain
name, using 127.0.1.1 for ServerName
können Sie entweder getrost ignorieren oder aber durch das Einfügen folgender Zeile in der Datei /etc/apache2/apache2.conf beseitigen:
ServerName localhost
21.1.2 Test per Browser
Um den Browser zu testen, verwenden Sie jeweils einen der Parameter start, stop oder restart. Ob der Server läuft, erfahren Sie am einfachsten durch den Aufruf der lokalen IP-Adresse oder durch Eingabe des Schlüsselworts »localhost« in einem Browser Ihrer Wahl. Dort wird dann die Startseite des Webservers (Abbildung 21.1) angezeigt.
Das Verzeichnis des Webservers befindet sich in der Standardeinstellung unter /var/www und ist nur für den Administrator beschreibbar. Sämtliche nachinstallierten Module legen dort ebenfalls ihre Dateien ab. Möchten Sie als normaler Nutzer Webinhalte testen, so empfiehlt es sich, das Verzeichnis entweder für alle oder ausgewählte Benutzer les- und schreibbar zu machen oder es einfach mit Hilfe eines symbolischen Links umzusiedeln.
Die folgenden Befehle verschieben das Verzeichnis in ein privates home-Verzeichnis und legen in /var einen symbolischen Link an:
sudo cd /home/<Benutzer>
sudo mv /var/www
sudo chown -R <Benutzer> www
sudo ln -s /home/<Benutzer>/www /var/www
Abbildung 21.1 Die Startseite des »Apache«-Webservers
Die eleganteste Methode ist es aber sicherlich, nur den Mitgliedern einer Gruppe, beispielsweise www-data, den Zugriff auf /var/www zu erlauben und deren Benutzernamen zu dieser Gruppe hinzuzufügen:
sudo chmod 0775 /var/www
sudo chgrp -R www-data /var/www
sudo adduser <user> www-data
Nun können Sie in dem entsprechenden Verzeichnis ohne Root-Rechte arbeiten. Testweise können Sie dort beispielsweise eine Seite index.html erstellen, die dann automatisch beim Aufruf der entsprechenden IP-Adresse dargestellt wird.
Startdienste definieren
In der Standardkonfiguration wird der Apache-Server bei jedem Booten des Systems gestartet. Wenn Sie das nicht wünschen, so können Sie den Apache-Dienst folgendermaßen aus dem Bootprozess entfernen:
sudo update-rc.d -f apache2 remove
Soll der Dienst wieder automatisch beim Booten gestartet werden, so können Sie ihn erneut über den Befehl
sudo update-rc.d apache2 defaults
aktivieren. Dadurch wird das Startskript in die entsprechenden Runlevel-Verzeichnisse geschrieben. Interessant ist noch die Möglichkeit, den Apache-Server mit Modulen aufzurüsten. So liefert beispielsweise das Paket phpsysinfo in Verbindung mit dem PHP-Modul Informationen über den Status des Systems, zum Beispiel die Festplattenkapazitäten, den Prozessortyp und dessen Temperatur.
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.