LAMP (Softwarepaket)

LAMP ist ein Akronym für den kombinierten Einsatz von Programmen auf Basis von Linux, um dynamische Webseiten zur Verfügung zu stellen. Dabei stehen die einzelnen Buchstaben des Akronyms für die verwendeten Komponenten:

BetriebssystemLinux
WebserverApache
DatenbankMySQL
ProgrammiersprachePHP

Diese Programmkombination definiert im Sinne einer Software-Distribution eine Infrastruktur, in deren Rahmen dynamische Webseiten und -anwendungen entwickelt und bereitgestellt werden können.

Obwohl die Programme ursprünglich nicht darauf ausgelegt waren, miteinander zusammenzuarbeiten, wurde das Bündel schnell erfolgreich, da es einfach verfügbar und preiswert in der Beschaffung war und ist. Mit der Zeit hat sich eine Vielzahl von Community-Projekten rund um LAMP entwickelt, die Dokumentationen und einfache Installationsroutinen für LAMP-Systeme erstellen.

Der Name LAMP wurde vom Heise-Autor Michael Kunze geprägt, der in einem Artikel in der c’t 1998 aufzeigte, dass die LAMP-Software-Kombination proprietären Software-Lösungen gegenüber gleichermaßen leistungsfähig ist.[1]

Komponenten

LAMP Stack Komponenten
LAMP Stack Komponenten

Der ursprüngliche LAMP-Stack besteht aus den vier Komponenten Linux (Betriebssystem), Apache (Webserver), MySQL (Datenbanksystem) und PHP (serverseitiger Skript-Interpreter). Diese Komponenten sind wiederverwendbar und in unterschiedlichem Umfeld und Zusammensetzung nutzbar.

Im Laufe der Zeit ist neue Software geschrieben und ebenfalls unter einer freien Lizenz verfügbar gemacht worden, z. B. diverse Webserver. Diese Software kann die traditionellen Komponenten ersetzen, werden dann aber anders bezeichnet (siehe unter Varianten). Auch sind zusätzliche Komponenten üblich, wie zum Beispiel Squid, Snort, Nagios oder das RRDtool um Statistiken zu erstellen.

Die einzige Spezialisierung besteht in den Softwareeinheiten, die den Skriptinterpreter mit dem Webserver einerseits und mit dem Datenbanksystem andererseits verbinden, hier libapache2-mod-php5 und php5-mysql genannt nach den Paketnamen in Ubuntusystemen.

Eine Anfrage aus dem Web erreicht zuerst die Netzwerkkarte. Das Betriebssystem stellt fest, welches Programm zur Verarbeitung vorgesehen ist. Das geschieht anhand der Portnummer, die explizit oder implizit in der Anfrage enthalten ist. Linux leitet die Anfrage an den Apache-Server weiter. Die Anfrage enthält eine Adresse, anhand derer der Webserver entscheiden kann, welche Datei aus dem Dateisystem zu holen ist. Ist das eine HTML-Datei, so gehören in den meisten Fällen weitere Dateien dazu, etwa Bilder im JPEG-Format. Ist in der Datei gekennzeichnet, dass ein Skript auszuführen ist, so ruft der Webserver den entsprechenden Skriptinterpreter auf, hier PHP. Im Skript lassen sich prinzipiell beliebige Anweisungen ausführen, im Umfeld dynamisch angepasster Webseiten werden aber häufig Datenbankinhalte aufbereitet. Dazu ruft das Skript das Datenbanksystem auf.

Sind die Datenbankinhalte beschafft, im Skript formatiert und aufbereitet sowie auf dem Webserver mit den sonstigen Inhalten aus dem Dateisystem verbunden, so wird das Ergebnis an das Betriebssystem zurückgegeben, das es über die Netzwerkkarte ausliefert.

Varianten

Die einzelnen Komponenten des LAMP-Systems können durch ähnliche Komponenten ersetzt werden. So kann die Distribution zum Beispiel auch auf anderen Betriebssystemen wie Windows, macOS, Solaris oder anderen aufbauen. Die entsprechenden Distributionen heißen dann WAMP, MAMP[2] oder entsprechend. Wird MySQL durch PostgreSQL ersetzt, nennt man das Bundle LAPP. Bei Verwendung des Webservers nginx statt Apache ändert sich die Bezeichnung zu LEMP. Seit der Entwicklung von MariaDB kann das „M“ auch für dieses Datenbanksystem stehen. Häufig wird auch der erste Buchstabe durch ein „X“ ersetzt, um Beschreibungen betriebssystemunabhängig zu machen. Alternativen für ein Bundle können z. B. sein:

KomponenteLAMP-VarianteBeispiele für Komponenten-Alternativen
BetriebssystemLinuxWindows, Solaris
WebserverApachenginx, Node.js (evtl. ergänzt um Apache oder nginx)
DatenbankMySQLPostgreSQL, CouchDB, MariaDB
ProgrammiersprachePHPPerl, Ruby, JavaScript, und praktisch alle anderen Interpreter- und Compiler-Sprachen, ggfs. über CGI, FastCGI

Beispiel

Darstellung der Funktionsweise von PHP

Die Wiki-Software MediaWiki, mit der auch Wikipedia betrieben wird, ist ein Beispiel für ein Anwendungsprogramm, das auf einer LAMP-Umgebung aufbaut. Der Server, der die dynamischen Webseiten von Wikipedia zur Verfügung stellt, nutzt PHP-Skripte, um Daten aus einer MySQL-Datenbank zu generieren und mit Apache über das World Wide Web bereitzustellen. Durch die „Dynamik“ ist es möglich, Seiteninhalte zu verändern – Änderungen werden dann in die MySQL-Datenbank zurückgeschrieben. Alle verwendeten Programmkomponenten sind dabei Open Source. Bei Wikipedia kommt seit April 2013 MariaDB statt MySQL zum Einsatz.

Andere Software-Kombinationen

Weblinks

Einzelnachweise

  1. Michael Kunze: Laßt es leuchten. In: c’t Nr. 12, 19. Juni 1998, S. 230.
  2. Im Buch Mac OS X in a Nutshell von O’Reilly, ISBN 978-0-596-00370-8 wird MAMP beschrieben.
  3. The MEAN Stack: MongoDB, ExpressJS, Angular and Node.js. In: The MongoDB Blog. 30. April 2013, abgerufen am 3. Februar 2014 (englisch).
  4. Linux-Magazin 02/2016

Auf dieser Seite verwendete Medien

LAMP stack components.svg
Autor/Urheber: Karsten Adam, Lizenz: GFDL
LAMP Stack Komponenten mit etwas Umfeld
  1. Netzwerkkarte empfängt Anfrage
  2. Linux bestimmt Programm zur Ausführung: Apache
  3. Apache Webserver
    1. entschlüsselt Adresse
    2. holt Datei aus Dateiverzeichnis
    3. parst Datei
    4. ruft PHP Script Interpreter auf
  4. PHP Script Interpreter ruft MySQL Datenbankserver
  5. MySQL Datenbankserver beschafft Datenbankinhalt
  6. PHP Script bereitet Datenbankinhalte auf
  7. Apache stellt Antwortseite zusammen
  8. Linux überstellt Antwort an Netzwerkkarte
  9. Netzwerkkarte liefert Antwort aus
PHP funktionsweise.svg
(c) MovGP0, CC BY-SA 3.0
# Zunächst startet ein Client (Browser) eine Anfrage für eine PHP-Datei. Dies geschieht über die Eingabe einer URL oder durch Anklicken eines Links. Die Anfrage wird über das Internet an den entsprechenden Server weitergeleitet.
  1. Der Server (Webserver) nimmt die Anfrage entgegen und lädt die PHP-Datei von seiner Festplatte.
  2. Anschließend übergibt der Webserver die PHP-Datei an den PHP-Interpreter.
  3. Der PHP-Interpreter arbeitet das PHP-Skript ab.
  4. Anschließend gibt der Interpreter das Ergebnis seiner Arbeit (meist in Form einer HTML-Datei, aber auch Bilder oder PDF-Dokumente sind möglich) an den Webserver zurück.
  5. Der Webserver liefert anschließend die Daten an den Client (Browser) zurück.