Der Apache Webserver – Teil 1
Der Apache Webserver ist ein freier Webserver und laut Wikipedia der am häufigsten verwendete.
Ein Webserver funktioniert folgendermaßen: der Benutzer gibt in der Adresszeile seines Browsers eine Adresse ein. Diese wird als URL (Uniform Resource Locator) bezeichnet. Über diese URL werden zwei Dinge ermittelt:
- die Adresse eines Computers im Internet, auch FQDN (Fully Qualified Domain Name) genannt
- eine Resource die von diesem Rechner angezeigt werden soll.
Das Kernstück des Apache Webservers ist der httpd (Hypertext Transfer Protocol Daemon). Im Prinzip macht dieser Daemon (laufender Prozess am Webserver) nichts anderes als auf Http Anfragen Http Antworten zu liefern. Ergänzt kann diese Funktionalität durch Module werden. Dieses Modulkonzept ist mit ein Grund für die Popularität des Apache Webservers. Ein Modul kann am Webserver dazu installiert werden. Es gibt zahlreiche Zusatzmodule, ein Beispiel wäre das php Modul, dass dem Server ermöglicht php Skripts auszuführen, wenn diese über eine Http Anfrage aufgerufen werden. Aber dazu später mehr.
Installation
Die Installation gestaltet sich sehr einfach. Man muss nur das Paket apache2 mit einem Paketmanager installieren. Um zu überprüfen ob der Webserver läuft einfach folgendes in die Adressleiste des Browsers eingeben: http://localhost/. Wenn der Webserver läuft erscheint nun eine Erfolgsmeldung. Diese Seite ist die Defaultseite die der Webserver nun anzeigt. Der Domain Name „localhost“ oder die Adresse „127.0.0.1“ zeigen im Browser den eigenen Rechner. Den Server kann man nach erfolgreicher Installation mit dem Befehl „/etc/init.d/apache2 start“ starten, „/etc/init.d/apache2 stop“ stoppen oder mit „/etc/init.d/apache2 restart“ neu starten. Benötigt werden hierfür root Rechte.
Konfiguration
Komplizierter wird es bei der Konfiguration. Es gibt dafür mehrere Konfigurationsdateien. Zu finden sind diese im Apache2 Ordner. Wo sich dieser Ordner befindet ist von Distribution zu Distribution unterschiedlich. Alle hier angegebenen Informationen bezüglich Ordnerstruktur beziehen sich auf die Ubuntu Distribution.
- httpd.conf: dies ist die Konfigurationsdatei des Http Daemons. Diese Datei kann globale Konfigurationen beinhalten, ist aber meistens leer, da für die aktuellen Versionen des Apache Webservers die apache2.conf Datei zur globalen Konfiguration verwendet wird.
- apache2.conf: Hier kann man globale Einstellungen für den Webserver setzen. Diese Datei ist sehr gut Dokumentiert.
- envwars: diese Datei beinhaltet alle Umgebungsvariablen die der Server benötigt.
- ports.conf: hier kann man einstellen auf welche Ports der Webserver hören soll. Standardmäßig wird nur auf den Port 80 gehört. Dieser TCP Port wird üblicherweise für das Hypertext Transfer Protokoll verwendet (HTTP).
- mods-available: dieser Ordner enthält Konfigurationsdateien für alle Module die für den Webserver zur Verfügung stehen. Module können so individuell konfiguriert werden.
- mods-enabled: dieser Ordner enthält Links auf Konfigurationsdateien des mods-available Ordners. Alle Module von denen hier Links existieren werden bei einem Start des Servers geladen.Nähere Informationen zur Konfiguration sind den Kommentaren in den Konfigurationsdateien zu entnehmen oder in der Dokumentation nachzulesen.
Die erste Seite
Der Apache2 Webserver verwendet so genannte virtuelle Hosts, das heißt man kann auf einem Rechner beliebig viele Seiten hosten. Somit kann man mehrere Virtuelle Hosts mit unterschiedlichen Servernamen anlegen, der Webserver vergleicht diese dann mit der vom Benutzer angegebenen URL und liefert die gewünschte Seite zum zugehörigen Servernamen. Sollte der Servername nicht existieren kann ein Defaultseite angezeigt werden.
Die virtuellen Hosts sind im „sites-available“ Ordner zu finden. Definiert wird ein Host in einer Textdatei. Bei einer neuen Installation des Webservers wurde bereits ein Defaulthost angelegt, welcher durch eine Textdatei mit dem Namen „default“ in diesem Ordner zu finden ist. Interessant sind hier die Elemente DocumentRoot und ErrorLog. DocumentRoot definiert einen Ordner den dieser virtuelle Host nach außen zeigt. Das heißt, wenn man diesen Host im Browser anfragt, dann wird standardmäßig die „index.html“ Seite aus diesem Verzeichnis an den User geschickt und bei ihm im Browser angezeigt. Mit dem ErrorLog definiert man eine Logdatei die alle Fehler für diesen Host protokolliert. Wir können nun zum Beispiel unserem virtuellen Server einen Namen geben indem wir die Zeile „ServerName localhost“ nach der ersten Zeile einfügen.Da wir nun wissen, dass der Defaulthost den Ordner /var/www verwendet (siehe default Host) werden wir dort unsere neue Seite erstellen. Wir ändern also die dort bereis existierende Html Datei um:
<html> <body> <h1>Hallo Welt!</h1> <p>Willkommen auf der neuen Homepage.</p> <br/> <p><a href="phpTest.php">PHP Testseite</a></p> <p><a href="cgi-bin/perlTest.pl">Perl Testeite</a></p> <p><a href="cgi-bin/pythonTest.py">Python Testseite</a></p> </body> </html>
Nach dem Speichern der Datei zeigt der Browser nun die neue Seite!
Module
Wie bereits erwähnt sind Module ein wichtiges Konzept beim Apache Webserver. Bis jetzt kann unser Server nur statische Seiten anzeigen. In Zeiten von Web 2.0 reicht das aber schon lange nicht mehr aus. Der Server soll nun auch auf Benutzerangaben reagieren und im besten Fall für den Benutzer individuelle Daten anzeigen. Erreicht wird dies üblicherweise durch Skripts. JavaScript Code erreicht zwar teilweise eine dynamische Webseite, jedoch wird dieses Script nur am Rechner des Benutzers ausgeführt. Was wir benötigen sind Skripts die auf dem Server ausgeführt werden. Dazu gehören unter anderen PHP, Perl und Python. Wir wollen nun also unsere Webseite dahingehend verändern, dass sie auch diese Skriptsprachen unterstützt.
Im zweiten Teil zeige ich euch wie Ihr Apache so konfiguriert, dass er auch diverse Skriptsprachen interpretieren und darstellen kann.
Diesen Artikel habe ich ursprünglich für das FreieMagazin geschrieben und kann dort auch gelesen werden.
Lassen Sie doch grundsätzlichg mal so dummerhaftige Sätze weg wie „Die Installation gestaltet sich sehr einfach. “
Für Neulinge und nicht-IT-Spezialisten ist die Anleitung eine Katastrophe.
Danke für den Kommentar. Die Installation eines Pakets ist unter Linux eine „Standardaufgabe“ die eigentlich jeder Nutzer kennen sollte. Deshalb sehe ich nicht, dass man dafür ein IT-Spezialist sein muss. Berechtigt ist die Kritik aber in der Weise, dass durchaus etwas Erfahrung mit einem System Voraussetzung ist. Wobei ich aber anmerken muss, dass die Installation eines Apache Webservers keine Aufgabe für einen Neuling ist, da sollte man zumindest bereits Linux Nutzer sein.