# Webserver-Plattform

Unter Webserver-Plattform – auch Webplattform – versteht man
* eine als Server arbeitende Kombination aus Betriebssystem und Web-Applikationssoftware auf einer Rechnerhardware, die hinsichtlich Daten und Software eine Mehrschichtigkeit besitzt, die als „Plattform“ aufzufassen ist, welche eine Client-seitig wahrnehmbare Anwendersicht besitzt, oder
* eine als Server arbeitende Kombination aus Betriebssystem, Web-Applikationssoftware, relationaler Datenbank und webfähiger, serverseitig interpretierter Skriptsprache auf einer Rechnerhardware, die hinsichtlich Daten und Software eine Mehrschichtigkeit besitzt, die als „Plattform“ aufzufassen ist, welche eine Client-seitig wahrnehmbare Anwendersicht besitzt.

## Grundlegendes
### Zusammenstellungen von Systemsoftware und Applikationssoftware für Webserver-Plattformen

Eine Webserver-Distribution ist eine – der einfachen Installation und Konfiguration dienende – betriebssystemspezifische Softwarezusammenstellung (solution stack, software bundle), die Webserver, Datenbank und Skriptsprache sowie Werkzeuge für Dateitransfer, Datenbankadministration, Webanalyse, Verschlüsselung und anderes enthält.
Webserver-Distributionen, Webserver-Plattformen:
* LAMP ... Linux + Apache, MySQL, PHP
* LEMP ... Linux + nginx, MySQL, PHP
* XAMPP ... Linux, Windows, macOS, Solaris + Apache, MySQL, PHP, Perl
* WAMP ... Windows + Apache, MySQL, PHP
* WIMP ... Windows + IIS, MySQL, PHP
* MAMP ... Mac OS X + Apache, MySQL, PHP
* MEAN ... MongoDB, Express, Angular und Node.js Dabei dient das Node.js Module Express als Webserver.
* AMPPS ... Kombination aus LAMP (Linux), WAMP (Windows) und MAMP (Macintosh) mit einem Installer entwickelt von Softaculous, bestehend aus Apache, MySQL, MongoDB, PHP (auch Perl & Python).

### Webserver-Plattform-Installation, Standalone-Webserver versus Paket-mitgelieferter Webserver

Eine Webserver-Plattform kann meistens einfach auf einem Computer installiert werden. Deswegen werden besonders von Anfängern installierbare Pakete wie XAMPP bevorzugt. Eine Installation der einzelnen Komponenten einer Webseite auf einem Server ist zeitaufwendig und fehleranfällig. Ein Emulations-Testsystem für solche Zwecke ist sicherlich sinnvoll. Doch sollte man zugleich auch mitbedenken, dass Scriptsprachen heutzutage auch einen eigenen HTTP-Server mitliefern. So wird zum Beispiel die Scriptsprache PHP mit einem eigenen Webserver ausgeliefert. Ob sich solche Pakete für produktive Systeme eignen, siehe nachfolgende Abschnitte.

### Über die Alternative, eine Webserver-Plattform auf einer physikalischen oder auf einer virtuellen Maschine zu betreiben

Ob es sinnvoll ist, eine Webserver-Plattform auf einer physikalischen bzw. virtuellen Maschine zu betreiben, hängt vom Anwendungsfall ab. Oft ist es sinnvoll, eine Datenbank auf einem getrennten physikalischen bzw. virtuellen System zu betreiben. Neben Performanz, Skalierbarkeit spielen auch Sicherheitsüberlegungen eine Rolle. Oftmals wird eine Datenbank z. B. für einen Webshop oder eine Inhouse-Applikation verwendet. In diesem Fall wäre es aus Sicherheitsgründen sinnvoller, die Datenbank auf einem getrennten System zu betreiben.
In den letzten Jahren stieg die Gefahr, dass Datenbanken Ziele von Ransomware-Attacken werden. Auch setzt sich immer häufiger die Meinung durch, dass kein getrennter Webserver benötigt wird. Ein Webserver kann in eine Applikation integriert werden, z. B. mit node.js.

### Individueller virtualisierter Zuschnitt versus Performanz

Heutzutage wird mit sehr dynamischem Inhalt auf Webseiten gearbeitet. Eine Webserver-Plattform mit virtualisierten Anwendungen ist da eher ein Hindernis für Performanz. Es werden spezialisierte Prozesse benötigt, um Webinhalte zu generieren.
Anderseits könnte es sinnvoller sein, für die individuellen Bedürfnisse ein Docker-Image zu erstellen, um Anwendungen in Containern kleinräumig zu virtualisieren und damit der Flexibilität eines individuellen Webserver-Plattform-Zuschnitts den Vorrang gegenüber der Webserver-Plattform-Performanz einzuräumen. Eine erstellte Konfiguration kann mithilfe von Docker einfach auf weiteren Systemen installiert werden.

## Plattformeigenschaft einer Webserver-Plattform

Sucht ein Client eine Webserver-Plattform auf, so kann von diesem, abstrakt betrachtet, nur die „Plattformoberseite“ (obere Schicht) der Plattform aufgesucht werden, während das, was an Daten und an Software, auf der „Plattformunterseite“ (darunterliegende Schicht) liegt, für diesen unzugänglich und verborgen bleibt. Für den Client erschließt sich nur eine „Anwendersicht“ auf die Webserver-Plattform. Die Anwendungen, auf die die Webserver-Plattform zugeschnitten ist, können höchst unterschiedlich sein.
Ein einfaches Beispiel für eine Webserver-Plattform-Anwendung: Beispielsweise kann eine Web-zugängliche Datenbank einer öffentlichen Bibliothek als Anwendung aus einem Webportal mit unterschiedlichen Suchmaskenfunktionen bestehen, das mit einem Browser-Client auf der „Plattformoberseite“ der Webserver-Plattform aufgesucht wird, während sich auf der „Plattformunterseite“ unter anderem eine Datenbank befindet. Die Datenbankabfragen, die vom Anwender gemacht werden, wenn er einen bestimmten Zeitschriftenartikel oder Buchtitel in dieser Bibliothek sucht, werden von der „Plattformoberseite“ „nach unten“ zur Datenbank weitergeleitet, in der Datenbank verarbeitet und die Treffer jener Datenbankabfragen von der Datenbank auf der „Plattformunterseite“ – „nach oben“ lancierend – auf einem speziellen Set von Output-Webseiten angezeigt, durch welches sich der Anwender mit der Computermaus hindurchklicken kann.