Linux-Praxisbuch/ Linux als Webserver
Linux als Web-Server
[Bearbeiten]Einführung
[Bearbeiten]Was ist ein Webserver?
[Bearbeiten]Ein Webserver ist ein Programm, das Informationen über einen hauptsächlich als Pull-Dienst genutzten Zugriff zur Verfügung stellt. Die übertragbaren Daten folgen dabei einem standardisierten Übertragungsprotokoll namens HTTP (Hyper Text Transfer Protokoll).
Zusätzliche Pull-Dienste eines Webservers wie etwa ein FTP-Zugriff (FTP = File Transfer Protokoll) oder Kombinationen aus Pull- und Push-Diensten wie WebDAV werden eventuell angeboten, sind aber für die Klassifizierung des Programms als Webserver unverbindlich.
Für den Zugriff auf einen Webserver wird in den meisten Fällen ein Web-Browser als Client eingesetzt. Die Kommunikation geschieht dabei häufig auf dem für WWW-Dienste standardisierten Port 80 des Webservers. Abweichende Einstellungen sind jedoch zulässig.
Die weitestgehend verwendete Sprache des WWW ist die HTML (Hyper Text Markup Language), einem Derivat des SGML Standards. Daher sind die vom Server bereitgestellten Daten meist HTML, Erweiterungen des HTML Standards.
Durch die hohe Verbreitung und hohe Nutzung des WWW (World Wide Web), das als Rückgrat die Daten und Informationen von Webservern nutzt und über Hyper-Links miteinander verknüpft, ist leider fälschlich teils das Internet umgangssprachlich mit dem WWW gleichverwendet. Das WWW bietet aber nur eine Dienstart im Internet an und stellt daher nur einen Bruchteil der heutigen Ausprägung des Internet dar.
Die Standardisierung des WWW übernimmt das WWW-Consortium (W3C). Tim Berners-Lee gilt als der Erfinder des World Wide Web, der Definition des HTML, HTTP und der URLs (Universal Resource Locators) und URIs (Unified Resource Identifier). Diese Entwicklungen fanden zwischen 1989 und 1991 statt. Tim Berners-Lee ist momentan Präsident des W3C.
Die Adressierung von Daten auf Webservern wird durch die manuelle Eingabe oder der Traversierung von Links (Verbindungen) in Form von URIs / URLs durchgeführt.
Was für Software gibt es für Linux?
[Bearbeiten]Der wohl bekannteste freie Webserver unter Linux ist der Apache Webserver. Es gibt jedoch viele weitere (freie sowie komerzielle) Produkte mit unterschiedlichen Spezifikationen oder Einsatzgebieten, die als Webserver zur Verfügung stehen:
- Lotus Domino
- Apache Tomcat
- AOLserver
- Zope
- Plone
- dune
- Web-Sphere
- JBoss
- Roxen Challenger
- micro_httpd
- mini_httpd
- thttpd
- Acme.Serve
- NCSA HTTPd
- dd/sh httpd
- kHTTPd
- CERN HTTPd
- Boa
- PS-HTTPD
- W3C Jigsaw
- sh-httpd
- bash HTTPd
- CL-HTTP
- httpd.el
- awk httpd, sed httpd
- Apprentice
- Etreed
- Enhydra
- Xitami
- und weitere ...
Installation von Apache
[Bearbeiten]Bei der Rechnerausstattung kommt es ganz auf den Zweck an, den der WebServer erfüllen soll. Für das Austesten eines lokalen Netzwerks reicht ein PII mit 266MHz und 64MB RAM vollkommen aus.
Bei höheren Anforderungen (z.B. LAN mit mehr als 25 Clients) sollte mehr Speicher vorhanden sein. Das ist aber auch alles.
Sollte der Server in einem großen Netzwerk mit vielen Clients und ständigem Zugriff arbeiten müssen, so ist ein etwas schnelleres Modell (ab PIII mit 500 MHz und minimal 128MB RAM) angebracht.
Eine Netzwerkkarte mit 10MBit sollte bei kleinen Netzen genügen. Darüber hinaus sollte es eine 100MBit-Netzwerkkarte sein.
Installation
[Bearbeiten]Apache konfigurieren
[Bearbeiten]kommt bald
Wichtige Hinweise
[Bearbeiten]Konfiguration
[Bearbeiten]Erweiterungen des Apache
[Bearbeiten]Um die Funktionalität des Webservers und die Möglichkeiten von HTML zu erweitern, kann der Apache "aufgerüstet" werden. Es gibt zwei Möglichkeiten:
(a) In die HTML Seite wird Programmcode eingebaut. Der Webserver kann dadurch die Seite dem zuständigen Programminterpreter übergeben und das Ergebnis als HTML-Seite ausliefern.
(b) Beim Start des Apache werden Module gleich mitgeladen. Die Sprachinterpretierung findet jetzt unmittelbar im Speicher- und Prozessraum des Apache statt.
Im ersten Fall muss der Webserver ein externes Programm (einen Interpreter) aufrufen. Ihm wird die Seite zur Verarbeitung übergeben. Anschließend wird das Ergebnis dem aufrufenden Prozess zurück gereicht und der Interpreterprozess wird beendet.
Das Verfahren ist sehr langsam, weil der Interpreter bei jeder Anforderung in einem eigenen Prozess geladen werden muss, auch dann, wenn die gleiche Seite mehrmals hintereinander angefordert wird. Deshalb gibt es die wichtigsten Interpretersprachen für den Apache als Module.
PHP
[Bearbeiten]PHP ist eine Sprache, die ihren Ursprung in der Gestaltung von Homepages hatte. Sie wurde nie als klassische Programmiersprache entwickelt. Sie diente von Anfang an dazu, Inhalte von Webseiten dynamisch, also erst zur Zeit der Abfrage mit Inhalten aus einer Datenbank zu füllen. Darin liegt auch ihre besondere Stärke. Und obwohl inzwischen der Sprachumfang beträchtlich erweitert worden ist, verwenden die meisten Projekte sie noch immer zur dynamischen Gestaltung von Webseiten.
Der in den HTML-Quelltext eingebettete PHP-Code wird vom Apache erkannt und dem entsprechenden PHP-Modul übergeben. Das Ergebnis wird an den Webserver zurückgereicht. Zur Kennzeichnung von HTML-Seiten mit PHP-Code wird die Endung .html normalerweise durch .php ersetzt. Man kann den Apache auch so umkonfigurieren, dass er den PHP-Code in Dateien mit der Endung .html interpretieren kann.
Da das Modul nicht das Problem der erneuten Interpretation bei wiederholtem Aufruf löst, gibt es eine Cache-Engine, die eine einmal berechnete Seite für eine gewisse Zeit zwischenspeichert.
Perl
[Bearbeiten]Perl ist eine eigenständige Interpretersprache die einen beträchtlichen Funktionsumfang aufweist. Perl existiert als Interpreter und kann auch ohne einen Webserver eingesetzt werden. Zur Beschleunigung gibt es auch hier ein Modul für den Apache. Die Einbindung des Programmcodes erfolgt in gleicher Weise wie bei PHP.
Python
[Bearbeiten]Python ist eine weitere Scriptsprache, die als Modul in den Apache geladen werden kann. Sie existiert auch als eigenständiger Interpreter. Auch hier erfolgt die Einbettung des Codes wie bei PHP.
MySql
[Bearbeiten]MySQl ist eine SQL-Datenbank. Diese Datenbank wird gerne für die Vorhaltung der dynamischen Dateninhalte verwendet. Die Datenbankengine wird nicht direkt in den Apache geladen, sondern läuft als eigenständiger Prozess auf einem Server. Sie wird über einen Sockel (engl. Socket) angesprochen. Dabei muß die Datenbank nicht auf dem selben Server wie der Apache laufen. Bei großen Projekten ist es sogar besser die Server aus Performancegründen zu trennen. HTML kann keine Datenbank abfragen, dafür sind Sprachen wie PHP oder Perl notwendig. Diese Sprachen senden eine SQL-Anfrage über den Socket an die Datenbank. Die Datenbank antwortet mit dem Ergebnis den die Sprache formatiert und in die HTML-Seite einsetzt.
PostgreSQL
[Bearbeiten]PostgreSQL ist eine SQL-Datenbank. Sie arbeitet ähnlich wie MySQL und kann auch an ihrer Stelle verwendet werden. Beide sind inzwischen sehr leistungsfähig und sollten den Bedürfnissen aller nicht gerade riesigen Projekte gerecht werden.
Sonstige
[Bearbeiten]Der Apache ist ein universeller Webserver für alle Aufgaben. Bei sehr großer Last und zumindest teilweise statischen HTML-Seiten kann die Prozessorlast durch zusätzliche Installation des thttp-Servers stark gemindert werden. Der thttp-Server ist ein kernelbasierender Webserver. Weil er nicht bei jedem Zugriff mehrere Rechtewechsel zwischen Userbereich und Kernelbereich ausführen muss, erzeugt er sehr wenig Systemlast. Allerdings kann er nur fertige statische HTML-Seiten ausliefern. Er besitzt aber die Fähigkeit, ihm unmögliche Anfragen an einen anderen Webserver weiter zuleiten, der auch auf der gleiche Maschine aber unter einen anderen Port residieren kann.
Links
[Bearbeiten]- http://www.apache.org
- http://www.mysql.org
- http://www.php.net
- http://www.perl.org
- http://www.postgresql.org/