Kapitel 10
IN DIESEM KAPITEL
Linux is like a wigwam. No Gates no Windows but always an Apache inside.
Mit einem Browser, also Firefox, Safari und Konsorten, dürften Sie vertraut sein. Sie surfen damit im Internet und rufen Seiten wie de.wikipedia.org oder bahn.de auf. Hinter diesen Seiten steckt immer ein Webserver, der mit Ihrem Browser das Protokoll HTTP (Hypertext Transport Protocol) oder dessen sichere Variante HTTPS spricht. Der wohl meistverbreitete Server im Internet dürfte der Apache sein.
Näheres zum Protokoll HTTP finden Sie unter:
http://willemer.de/informatik/net/http.htm
Wenn Sie eine Webadresse aufrufen, genügt dazu normalerweise allein der Name der Domäne. So genügt beispielsweise bahn.de
. Der Browser verlängert diese Adresse automatisch zu https://www.bahn.de
. Eine solche Adresse bezeichnet man als URL: Uniform Resource Locator. Eine URL besteht aus mehreren Bestandteilen. Nehmen wir als Beispiel die folgende URL:
http://www.willemer.de:80/informatik/index.htm
http://
beschreibt das Protokoll. Daraus leitet der Browser die Portnummer ab, wenn sie nicht explizit hinten angeführt wird. Bei Webseiten ist heute die verschlüsselte Variante https://
weiter verbreitet.www
ist eigentlich der Host, der in der Domäne den Webserver stellt. Manchmal finden Sie auch Subdomänen an dieser Stelle.willemer.de
ist die Domäne.:80
ist die Portnummer, die an die Domäne angehängt werden kann. Wird sie weggelassen, verwendet der Browser für HTTP den Port 80, für HTTPS den Port 443./informatik
ist der Verzeichnispfad, in dem die Zieldatei steht.index.htm
ist die eigentliche Datei, die übertragen werden soll.Manchmal endet die URL nicht auf einen Dateinamen. Dann wählt der Webserver eine Standarddatei aus. Meist wird index.htm oder index.html verwendet.
Damit Sie aus Ihrem Computer einen Webserver machen, müssen Sie die Software Apache installieren. Das zentrale Paket heißt apache2. Zur Installation benötigen Sie Administrationsrechte, die Sie über den Befehl su -
oder sudo -s
erlangen. Unter Debian oder Ubuntu aktualisieren Sie zunächst die Paketlisten und installieren dann das Paket mit den folgenden Befehlen:
# apt update
# apt install apache2
Sie können den Webserver bereits testen. Starten Sie einen Browser auf dem Server und geben Sie als Adresse localhost
ein. Sollte Ihr Server keine grafische Oberfläche besitzen, können Sie einen Browser auf Ihrem Arbeitsplatz starten und als Adresse die IP-Adresse Ihres Servers verwenden. Sie werden eine Seite wie in Abbildung 10.1 sehen, die als zentrale Nachricht »It works« meldet.
Mit dem Kommando systemctl
kann der Apache wie die meisten anderen Server neu gestartet werden.
# systemctl restart apache2
Abbildung 10.1: Der Apache macht Männchen gegenüber dem Browser
Ein Neustart wird beispielsweise bei der Änderung der Konfiguration erforderlich. Statt des Kommandos restart
kann das Kommando stop
für das Stoppen des Servers oder start
angegeben werden, um den Webserver in Betrieb zu nehmen. Das Kommando status
liefert die Information, ob der Webserver gerade läuft und welche Prozess-ID (PID) er hat. Das Kommando reload
sorgt dafür, dass der Apache seine Konfigurationsdateien neu lädt.
Für den Webserver Apache wird bei der Installation der Benutzer www-data
eingerichtet. Über diesen Benutzer können Sie sich allerdings nicht anmelden. Das ist weder erforderlich noch erwünscht. Es handelt sich um den Benutzer, unter dem der Webserver läuft. Darum sollten Dateien und Verzeichnisse, die der Webserver bearbeiten soll, für den Benutzer www-data
les- oder schreibbar sein.
Beim Starten haben Sie eine Webseite gesehen. Die muss ja irgendwo eingerichtet sein, also spüren wir ihr nach.
Die Einstellungen für den Apachen liegen unterhalb des Verzeichnisses /etc/apache2 und sind auf mehrere Dateien verteilt. In diesem Verzeichnis sind zwei Verzeichnisse für die Konfiguration der dargestellten Webseiten zuständig.
Sie können sich diese Links mit den folgenden Befehlen ansehen:
# cd /etc/apache2/sites-enabled
# ls -l
insgesamt 0
... 000-default.conf -> ../sites-available/000-default.conf
Im Verzeichnis sites-available finden Sie beliebig viele Dateien. Aber nur diejenigen, auf die ein symbolischer Link in sites-enabled zeigt, sind aktiv.
Die in Abbildung 10.1 gezeigte Seite ist in der der Datei 000-default.conf konfiguriert. Wenn Sie mit einem Editor hineinsehen, stehen dort sehr viele Kommentare und die folgenden Zeilen:
<VirtualHost *:80>
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Gehen wir die Zeilen einmal durch.
VirtualHost
besagt, wie welche Anfragen behandelt werden. Dahinter steht der Name des Hosts. In diesem Fall ist es ein Stern, der besagt, dass jede Anfrage hier behandelt wird. Hinter dem Doppelpunkt bezeichnet 80 den Port, welches der Standard-Port für HTTP ist.ServerName
ist zwar auskommentiert, aber interessant, weil Sie mit einem Webserver mehrere Domänen betreuen können. Darauf werden wir noch zurückkommen.ServerAdmin
verweist auf die E-Mail-Adresse des Administrators.DocumentRoot
bezeichnet das Verzeichnis, in dem die HTML-Dateien liegen, die an den aufrufenden Web-Browser gesendet werden. Hier ist standardmäßig das Verzeichnis /var/www/html genannt. Dort können wir nach der angezeigten Webseite suchen.ErrorLog
zeigt auf die Fehlerprotokolldatei. Damit wird verhindert, dass die Fehlermeldungen des Apachen in die allgemeinen Fehlermeldungen in syslog untergemischt werden.CustomLog
bezeichnet den Ort, an dem Besuchsprotokolle gespeichert werden. So können Sie feststellen, wie erfolgreich Ihre Seite ist, und erfahren einige Details über die Besucher wie IP-Adresse oder Browser.Unter dem Verzeichnis /var werden typischerweise Serverdaten abgelegt. Darunter liegen unter www die Dateien des Webservers. In der Ausgangskonfiguration wurde die Datei index.html im Pfad /var/www/html abgelegt. Das ist genau das Verzeichnis, das in DocumentRoot
bezeichnet wurde. Wenn Sie dort nachschauen, finden Sie eine Datei voller HTML-Code mit dem Namen index.html.
Der Apache hat die Datei index.html automatisch geliefert, ohne dass Sie diese explizit genannt haben. Wird bei einer URL kein Dateiname angegeben, sucht der Apache automatisch nach index.html oder index.htm.
Sie können dieses Verhalten ändern, in dem Sie in der Konfigurationsdatei mit dem Schlüsselwort DirectoryIndex
die Dateinamen auflisten, die der Apache liefern soll, wenn kein Dateiname angegeben wird. Die folgende Zeile würde dazu führen, dass zunächst nach index.html gesucht wird. Gibt es keine Datei diesen Namens, würde index.htm gesucht. Fehlt diese auch, verwendet der Apache die Datei 0.htm.
DirectoryIndex index.html index.htm 0.htm
Wenn der Apache nur eine Domäne bedient, können Sie in dem von DocumentRoot
angegebenen Verzeichnis Ihre HTML-Dateien ablegen, und die Installation würde damit bereits laufen.
Alle Dateien unterhalb des von DocumentRoot
bezeichneten Pfades können von einem Browser geladen werden, indem der relative Pfadname inklusive des Dateinamens verwendet wird. So wird die URL
http://willemer.de/informatik/web/apache.htm
auf dem Server von willemer.de
in dem relativen Verzeichnis informatik/web unter dem Namen apache.htm zu finden sein. Manchmal sollen die Dateien aber aus einem anderen Pfad geholt werden.
Im folgenden Beispiel soll beim Aufruf der URL http://server/mp3
auf das Verzeichnis mit den mp3-Dateien verwiesen werden. Die mp3-Dateien befinden sich auf dem Computer unter dem Verzeichnis /media/mp3.
<VirtualHost *:80>
...
Alias /mp3/ "/var/www/mp3/"
<Directory "/mp3/">
Options +Indexes +FollowSymLinks
Order deny,allow
Deny from all
Allow from 192.168.109
</Directory>
</VirtualHost>
Die Alias-Zuweisung bewirkt, dass der Pfad url
in der URL auf das Verzeichnis /media/mp3 umgeleitet wird.
Da aber /media/mp3 nicht unter DocumentRoot
liegt, muss ein Directory
dafür angelegt werden, damit sich der Apache dieses Verzeichnisses annimmt. Der Bereich von Directory
endet mit dem Ende-Tag, das durch die Kombination aus dem Schrägstrich und der Bereichskennung Directory
gekennzeichnet ist.
Innerhalb des Directory-Bereichs können eigene Optionen für dieses Verzeichnis gesetzt werden. Die Anweisung Options
definiert, wie bei dem Namen zu erwarten, ein paar Optionen.
Indexes
definiert und gibt es keine Indexdatei, zeigt der Apache beim Aufruf des Verzeichnisses automatisch eine Auflistung der Dateien. Damit lässt sich auf die Schnelle ein kleiner Fileserver erstellen, von dem die dort liegenden Dateien heruntergeladen werden können.FollowSymLinks
einschalten, folgt der Apache auch symbolischen Links auf beliebige Verzeichnisse. Normalerweise ist dies abgeschaltet, damit Ihr Server nicht durch einen stehengelassenen symbolischen Link plötzlich aufschlussreiche Teile Ihres Servers zum Download anbietet.Hinter den Optionen werden die Zugriffsrechte eingeschränkt. Sie wollen Ihre mp3-Sammlung nicht der ganzen Welt, sondern nur den Computern in Ihrem lokalen Netzwerk anbieten.
Mit den Befehlen Allow
und Deny
kann bestimmt werden, wer auf das Verzeichnis zugreifen darf.
Deny from
zuständig. Im Beispiel verbietet sie grundsätzlich jeden Zugriff.Die Direktive Allow from
legt nun die Ausnahmen fest und erlaubt einen Zugriff aus dem lokalen Netzwerk 192.168.109.
Sie können mehrere Netzwerkadressen angeben, indem Sie sie durch ein Leerzeichen trennen. Dabei dürfen Sie auch IPv6-Adressen verwenden.
Wenn Sie über den Browser die URL http://server/mp3
aus dem lokalen Netzwerk 192.168.109 aufrufen, erhalten Sie eine Liste der mp3-Dateien und können eine davon anklicken. Aufgrund seiner MIME-Regeln erkennt der Browser, welches Programm für das Abspielen von mp3-Dateien zuständig ist, und startet es.
Während die Direktive Alias
einen URL-Pfad auf einen lokalen Dateipfad umlenkt, bewirkt die Direktive Redirect
eine Umleitung auf einen anderen Webserver.
Der Aufrufer eines URL-Pfads wird auf eine andere URL verwiesen. Das bedeutet, dass der Client angewiesen wird zu wechseln. Es werden keine Daten durchgereicht.
Als Administrator des Apache können Sie einige Konfigurationsmöglichkeiten an einen Benutzer weitergeben, der die Inhalte der Webseiten pflegt. Dazu lädt der Benutzer eine Konfigurationsdatei hoch, die .htaccess heißt. Diese Möglichkeit ist auch bei den meisten Webseiten-Hostern gegeben. Damit sie berücksichtig wird, muss der Administrator in der Konfiguration des Verzeichnisses die Direktive AllowOverride
entsprechend gesetzt haben. Mögliche Werte sind:
AuthConfig
: Die Datei .htaccess darf die Zugriffe auf das Verzeichnis kontrollieren, also etwa Benutzernamen und Passwort erfragen.FileInfo
: Sie sind berechtigt, eine eigene Datei .htaccess zu verwenden.None
: Dies ist der Standardwert, wenn die Direktive nicht gesetzt ist. Damit werden die .htaccess-Dateien ignoriert.All
: Das Gegenteil von None
. Es gibt keine Einschränkungen für die Datei .htaccess.Der Name der lokalen Konfigurationsdatei lautet standardmäßig .htaccess, kann aber in der zentralen Datei apache2.conf durch die Direktive AccessFileName
anders festgelegt werden.
Die Datei ermöglicht dem Benutzer den Bau einer Zugangsbeschränkung und das Abfangen von Fehlern.
In der .htaccess-Datei können mit der Direktive ErrorDocument
Fehler gefangen werden. Besonders beliebt ist der Fehler 404, der auftritt, wenn eine Datei und damit eine spezielle URL nicht gefunden wurde.
# .htaccess
ErrorDocument 404 /internetkaputt.html
In diesem Fall wird die Datei internetkaputt.htm an den Client geliefert, wenn die gewünschte Datei nicht verfügbar war.
Sie können mit der Datei .htaccess einen Zugriffsschutz per Passworteingabe erzwingen, sofern in der Hauptkonfiguration die Direktive AllowOverride
mindestens den Eintrag AuthConfig
aufweist.
# .htaccess
AuthType Basic
AuthName “Ausweiskontrolle!”
AuthUserFile /var/www/sicher/.htpasswd
require valid-user
Diese Konfiguration wird dazu führen, dass bei dem Versuch, Dateien im lokalen Verzeichnis zu öffnen, eine Dialogbox erscheint, die nach Benutzernamen und Passwort fragt. Die Direktiven haben folgende Bedeutungen:
AuthType
: Als Autorisierungstyp wird für .htaccess-Dateien meist Basic
verwendet. Die Daten werden im Klartext übertragen, was bei einer HTTPS-Verbindung kein Drama ist. Es gibt auch Digest
mit einer verschlüsselten Übertragung, die aber wohl nicht alle Browser beherrschen.AuthName
: In Anführungszeichen wird die Meldung angegeben, die die Dialogbox für die Passworteingabe zieren soll.AuthUserFile
: Hier wird angegeben, wo die lokale Passwortdatei liegt.require valid-users
: Mit dieser Direktive wird der Zugriff auf diejenigen beschränkt, die sich per Passwort ausweisen konnten.Nun benötigen Sie noch eine Passwortdatei, in der Sie die Benutzer pflegen, die das Verzeichnis nutzen dürfen. Dazu verwenden Sie das Programm htpasswd
. Die Option -c
sorgt dafür, dass die Datei angelegt wird. Sie benötigen sie also nur für den ersten Aufruf. Als weiteres Argument wird die Datei angegeben und zuletzt der Benutzer, der eingetragen werden soll. Anschließend wird die Passworteingabe doppelt angefordert.
$ htpasswd -c /var/www/sicher/.htpasswd paul
New password:
Re-type new password:
Adding password for user paul
$
Der Pfad der Datei .htpasswd bezieht sich auf das lokale Dateisystem des Servers. Wenn also Ihre Domäne bei einem Provider liegt, müssten Sie den Pfad kennen, unter dem Ihre Domäne auf dessen Server abgelegt ist. In der Regel finden Sie in den Konfigurationsseiten für Ihre Domäne irgendwo den Eintrag, wie dieser Pfad lautet. Manche Provider bieten sogar ausführliche Beschreibungen. Suchen Sie nach dem Stichwort htaccess.
Der Apache gibt Ihnen ein paar Hilfsmittel an die Hand, um Fehler aufzuspüren. Daneben interessiert den Betreiber einer Web-Präsenz aber auch, wie oft die Seite aufgerufen wurde, und auch hier protokolliert der Apache fleißig.
Das Verzeichnis, in dem der Webserver seine Fehlerdaten ablegt, wird durch die Umgebungsvariable APACHE_LOG_DIR
bestimmt. Die Definition befindet sich in der Datei envvars im Verzeichnis datei/etc/apache2.
export APACHE_LOG_DIR=/var/log/apache2$SUFFIX
Der Inhalt der Variablen SUFFIX
ist leer, solange nur eine Instanz des Webservers auf der Maschine läuft.
Die Datei für die Fehlerprotokolle wird in der Option ErrorLog
festgelegt. Mit der Option LogLevel
wird festgelegt, ab welchem Level Fehler protokolliert werden. Die möglichen Level sind debug
, info
, notice
, warn
, error
, crit
, alert
und emerg
.
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
Die Fehler werden in einem eigenen Verzeichnis /var/log/apache2 gesammelt. In der Datei error.log werden die Fehler des Servers protokolliert.
Neben den Fehlern protokolliert der Apache auch jeden Zugriff. Die Dateien finden Sie in dem Verzeichnis, das in den VirtualHost
-Blöcken mit der Direktive CustomLog
spezifiziert wird.
In der Datei apache2.conf wird in den Direktiven LogFormat
festgelegt, welches Ausgabeformat das Protokoll haben kann. Es gibt mehrere Vorschläge, die jeweils am Ende einen Namen bekommen. Der vorgegebene Name lautet combined
. Dieser wird in der Direktive CustomLog
aufgegriffen.
# sites-enabled/000-default
...
CustomLog ${APACHE_LOG_DIR}/access.log combined
...
# apache2.conf
...
LogFormat "%h %l %u %t ... \"%{User-Agent}i\" " combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
Die Benutzerprotokolle finden Sie normalerweise im Verzeichnis datei/var/log/apache2 in der Datei access.log. Damit die Datei nicht zu groß wird, wird sie in regelmäßigen Abständen wegrotiert und als gepackte Datei einige Zeit aufbewahrt, bevor sie entsorgt wird.
Das Programm WebAlizer analysiert die Besucherstatistiken, die der Apache erzeugt hat, und zeigt das Ergebnis im Browser an. Sie können das Paket webalizer aus dem Repository installieren.
# apt install webalizer
Anschließend führen Sie das Programm webalizer
im Verzeichnis /var/log/apache2 aus. Das Ergebnis wird als HTML-Seiten nach /var/www/webalizer geschafft. Dort können Sie die Statistiken über die URL http://localhost/webalizer
ansehen.
Machen wir uns nichts vor: Viele Websites sind so langweilig, dass sie niemand sehen will. Die Website des Amtes für Untergangsfragen der Deutschen Marine ist vermutlich seit ihrer Entstehung nur dreimal besucht worden. Es wäre recht unsinnig, für solche Domänen jeweils einen eigenen PC aufzustellen. Damit mehrere solcher Domänen verwaltet werden können, bietet Apache das Konzept des virtuellen Hosts.
Zwar erreicht das Paket den Server über seine IP-Adresse, da der Domain-Name ja zuvor bereits aufgelöst wurde, aber HTTP führt in den Paketen des Clients immer noch die ursprüngliche URL mit. Und diese wird von Apache als ServerName
ausgelesen.
So etwas wollen wir ausprobieren und so erstellen wir eine Datei namens willi.edu im Verzeichnis sites-available. Sie soll sich um die neue Domain willi.edu
kümmern. Dazu kopieren wir die Datei 000-default.conf und passen sie an:
<VirtualHost www.willi.edu:80>
ServerAdmin webmaster@localhost
ServerName www.willi.edu
DocumentRoot /var/www/willi
...
Um die Seite zu aktivieren, kennt Apache den Befehl a2ensite
. Er erzeugt einen symbolischen Link im Verzeichnis sites-enabled.
# a2ensite willi.edu.conf
Sie können den Effekt überprüfen, indem Sie in das Verzeichnis hineinschauen.
# ls -l /etc/apache2/sites-enabled/
insgesamt 0
lrwxrwxrwx ... 000-default.conf -> ../sites-available/000-default.conf
lrwxrwxrwx ... willi.edu.conf -> ../sites-available/willi.edu.conf
Sie können den benötigten symbolischen Link auch ohne a2ensite
selbst von Hand setzen.
# cd /etc/apache2/sites-enabled/
# ln -s ../sites-available/willi.edu.conf 001-willi.edu
# ls -l
insgesamt 0
lrwxrwxrwx ... 000-default -> ../sites-available/default
lrwxrwxrwx ... 001-willi.edu -> ../sites-available/willi.edu.conf
Nach der Ausführung des Befehls a2ensite
wurden Sie schon darauf hingewiesen, dass der Apache seine Konfiguration neu einlesen sollte. Sie sollten, wie nach jeder Änderung der Konfiguration, also Apache zum Neueinlesen auffordern:
# systemctl reload apache2
Als Verzeichnis haben wir in DocumentRoot
den Pfad /var/www/willi angegeben. Dann sollten wir das Verzeichnis auch erzeugen und eine HTML-Datei hineinlegen.
# cd /var/www
# mkdir willi
# vi willi/index.html
In die Datei kommt irgendetwas, was im Browser deutlich macht, dass Sie wwww.willi.edu
aufgerufen haben.
<h2>willi.edu</h2>
Damit die neue und die bisherige Seite von demselben Apache betreut werden, muss die Namensauflösung beider auf dieselbe IP-Adresse zeigen. Das wird in der Praxis mit dem Domain Name Service (DNS) realisiert. Für die Testphase reicht es aber völlig, die Datei /etc/hosts des Clients zu manipulieren.
# /etc/hosts
...
192.168.109.199 linuxsrv www.willemer.edu www.willi.edu
Nun können Sie im Browser einmal www.willemer.edu
und einmal www.willi.edu
eingeben und sehen daraufhin unterschiedliche Seiten.
HTTP war gedacht, um wissenschaftliche Publikationen zu veröffentlichen und durch Links untereinander weltweit zu verbinden. Da wissenschaftliche Arbeiten in der Regel öffentlich sind, gab es keinen Grund, die Übertragung irgendwie zu schützen. Aber irgendjemand ist seither auf den Gedanken gekommen, Online-Banking über den Browser zu betreiben. Und da die meisten Leute nicht möchten, dass jeder im Netzwerk mitlesen kann, welche Schmiergelder wem gezahlt werden, musste das Protokoll abgedichtet werden.
Für diese Zwecke gibt es HTTPS, die verschlüsselte Schwester von HTTP, die mit Zertifikaten umgehen kann. Wie Sie Zertifikate erzeugen können und wie sie funktionieren, wird in Kapitel 17 ausführlicher dargestellt.
Für den Umgang mit HTTPS gibt es im Verzeichnis /etc/apache2/sites-available eine Beispielkonfigurationsdatei namens default-ssl.conf. Diese können Sie als Basis für eine eigene HTTPS-Seite verwenden.
Die Bank wird sich gegenüber Ihrem Browser ausweisen. Das tut sie mit einem Zertifikat. Ein Zertifikat bietet zwei Möglichkeiten:
An dieser Stelle gehe ich davon aus, dass Sie ein Zertifikat besitzen. Ob Sie das Zertifikat von einer CA-Stelle bekommen haben oder sich nach den Bastelanleitungen in Kapitel 17 erstellt haben, spielt für die Konfiguration des Webservers keine Rolle. Die Zertifikatsdateien legen Sie an einer sicheren Stelle ab. Dafür schlägt der Apache /etc/ssl vor.
Wo die Dateien abgelegt werden, wird in den Variablen SSLCertificateFile
und SSLCertificateKeyFile
in der Konfigurationsdatei bestimmt. Die Konfigurationsdatei sollten Sie mit dem Editor öffnen.
# nano /etc/apache2/sites-available/default-ssl.conf
In der Datei werden weiter hinten die folgenden beiden Direktiven auf den Ort und den Namen der beiden SSL-Dateien angepasst:
SSLCertificateFile /etc/ssl/certs/mein.cert.crt
SSLCertificateKeyFile /etc/ssl/private/mein.cert.key
Nun muss noch ein Link von default-ssl auf enabled
gesetzt werden. Dazu erzeugen Sie einen symbolischen Link im Verzeichnis sites-enabled:
# cd /etc/apache2/sites-enabled
# ln -s ../sites-available/default-ssl.conf 001-ssl.conf
In der Datei /etc/apache2/ports.conf dürfte der Port 443 freigegeben sein.
<IfModule mod_ssl.c>
Listen 443
</IfModule>
Normalerweise dürfte auch das SSL-Modul installiert und aktiviert sein. Falls das nicht der Fall ist, können Sie es aktivieren. Dann müssen Sie allerdings den Apachen neu starten.
# a2enmod ssl
# systemctl restart apache2
Nun wenden Sie sich dem Client zu und starten dort den Browser, also beispielsweise Firefox, und geben in die Adresszeile https://linuxsrv
ein, wenn linuxsrv der Name des Rechners ist, auf dem sich der Webserver befindet.
Wenn Sie ein offizielles Zertifikat von einer Zertifizierungsstelle bekommen haben, sollte alles im grünen Bereich sein. Aufmerksame Benutzer erkennen dies an dem Schloss links neben der Adresszeile.
Falls Sie Ihr Zertifikat selbst gebaut haben, wie in Kapitel 17, dann dürfte sich der Browser beklagen, dass er dieser Seite nicht traut. Je nach Browsertyp und -version können Sie das Zertifikat als vertrauenswürdig akzeptieren und die Verantwortung selbst übernehmen.
Wenn Sie aber beispielsweise im Intranet ein Zertifikat verwenden wollen und keine Lust haben, die Sicherheitslage mit den Kollegen zu diskutieren, können Sie den Browsern der Arbeitsplätze die eigene Zertifizierungsstelle bekannt machen.
Inzwischen ist der Browser mehr als die statische Anzeigeplattform wissenschaftlicher Dokumente. Der Server versorgt den Aufrufer mit dynamisch erzeugten Daten, die er aus Datenbanken holt. Dazu sind auf der Seite des Servers Programme erforderlich, die den HTML-Code, den der Server dem Client sendet, um die gewünschten Informationen erweitert.
Die Geschichte der aktiven Webserver ist lang und keineswegs beendet. Zu Anfang wurden per CGI Anfragen über Programme gesteuert. Hier wurde erst C, später aber vor allem die Skriptsprache Perl eingesetzt. Die Architektur wurde als LAMP (Linux, Apache, MySQL, Perl) bezeichnet. Inzwischen wurde die Sprache Perl durch PHP abgelöst. Glücklicherweise ist der Anfangsbuchstabe gleich. Gegenüber Perl hat PHP mehrere Vorteile, insbesondere ist PHP einfacher in HTML einzubinden. Die Effizienz wurde gesteigert, indem man PHP als Modul in den Apachen einbaute.
Dies führt dazu, dass PHP immer noch weit verbreitet ist und auch von den Hostern von Webpräsenzen oft als einzige Programmierumgebung angeboten wird. Diverse Server wurden auf der Basis von HTTP in PHP erstellt, wie beispielsweise Nextcloud (siehe Kapitel 14).
Damit der Interpreter von PHP nicht bei jedem Aufruf neu gestartet werden muss, ist er als Apache-Modul implementiert und kann so ohne Zeitversatz vom Webserver aufgerufen werden. Das PHP-Modul von Apache heißt libapache2-mod-php und muss explizit installiert werden:
# apt install libapache2-mod-php
Bevor das PHP-Modul aktiv wird, müssen Sie den Apache-Server neu starten:
# systemctl restart apache2
Alle Seiten, deren Dateinamen auf .php enden, werden nun vom Apachen vor dem Senden an den Client dem PHP-Interpreter zugeführt. Dieser führt die im HTML-Code enthaltenen Programmschnipsel aus und generiert auf diese Weise reine HTML-Seiten, die dann an den Browser gesendet werden. Der Client kann also das PHP-Listing niemals sehen, sondern nur dessen Ergebnisse.
Es würde zu weit führen, an dieser Stelle eine Sprachbeschreibung von PHP auszubreiten. Wenn Sie weitere Informationen zu PHP benötigen, finden Sie reichlich Literatur zum Thema und auch das eine oder andere Angebot im Internet.
Für einen Test wird im Verzeichnis /var/www/html die Datei index.html gelöscht und dafür eine Datei index.php angelegt. Darin wird folgendes kurze PHP-Skript eingetragen:
<?php
echo "Hallo World-Wide-Web!";
?>
Nun geben Sie die Adresse des Webservers in die Adresszeile ein, und auf dem Bildschirm sollte der Schriftzug »Hallo World-Wide-Web!« erscheinen.
Shops und ähnliche Webanwendungen werden ihre Daten in der Regel in Datenbanken ablegen. Dazu muss PHP auf die Datenbank zugreifen können. Als Verbindungsglied wird eine Bibliothek benötigt, die zwischen PHP und der jeweiligen Datenbank vermittelt. Damit nicht heimlich einer der Programmierer zur Konkurrenz wechselt, verwenden die Datenbankhersteller leicht unterschiedliche Schnittstellen.
Als Administrator müssen Sie die Bibliotheken installieren, die das Bindeglied zwischen PHP und Datenbank realisieren.
Die Bibliothek für die Zugriffe von PHP auf die MySQL-Datenbank (siehe Abschnitt 9) ist weder im Paket von MySQL noch in dem von PHP enthalten. Dazu muss explizit das Paket php-mysql hinzuinstalliert werden:
# apt install php-mysql
Auch für die PostgreSQL-Datenbank wird ein Paket benötigt. Dieses heißt php-pgsql.
# apt install php-pgsql