Einleitung

Der Apache HTTP-Server ist der am weitesten verbreitete Webserver der Welt. Er bietet viele leistungsstarke Funktionen, darunter dynamisch ladbare Module, leistungsstarke Medienunterstützung und umfassende Integration mit anderer gängiger Software. Diese Anleitung zeigt Ihnen, wie Sie den Apache-Webserver auf dem Ubuntu 22.04-Server installieren.

Voraussetzungen

Bevor Sie mit dieser Anleitung beginnen, müssen Sie einen Ubuntu 22.04-Server mit einem Nicht-Root-Benutzer mit sudo-Berechtigungen einrichten und eine Firewall aktivieren (optional), um Ports zu blockieren, die Sie nicht benötigen. Melden Sie sich nach Abschluss der Einrichtung als Nicht-Root-Benutzer an und fahren Sie mit Schritt eins fort.

Schritt 1 – Installation von Apache

Apache ist in den standardmässigen Ubuntu-Software-Repositorien verfügbar, sodass Sie es mit herkömmlichen Paketverwaltungstools installieren können. Aktualisieren Sie zuerst den Ubuntu Server, damit Sie auf dem neusten Stand sind.

sudo apt update

Installieren Sie dann das Paket apache2:

sudo apt install apache2

Nach Bestätigung der Installation installiert apt Apache und alle erforderlichen Abhängigkeiten.

Schritt 2 – Anpassung der Firewall (optional)

Bevor Sie Apache testen, müssen Sie Ihre Firewall-Einstellungen ändern, um externen Zugriff auf die Standard-Webports zu ermöglichen. Wenn Sie die Anweisungen in den Voraussetzungen befolgt haben, sollten Sie eine UFW-Firewall konfiguriert haben, um den Zugriff auf Ihren Server einzuschränken. Während der Installation registriert sich Apache bei UFW, um einige Anwendungskonfigurationsdateien bereitzustellen, mit denen Sie den Zugriff auf Apache über die Firewall aktivieren oder deaktivieren können. Führen Sie den folgenden Befehl aus, um die Konfigurationsdateien der ufw-Anwendung aufzulisten:

sudo ufw app list

Die Ausgabe ist eine Liste der Anwendungsprofile:

Output
Available applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH

Wie aus der Ausgabe hervorgeht, sind drei Profile für Apache verfügbar:

  • Apache: Dieses Profil öffnet nur Port 80 (normaler, unverschlüsselter Webverkehr)
  • Apache Full: Dieses Profil öffnet sowohl Port 80 (normaler, unverschlüsselter Webverkehr) als auch Port 443 (TLS/SSL-verschlüsselter Verkehr)
  • Apache Secure: Dieses Profil öffnet nur Port 443 (TLS/SSL-verschlüsselter Datenverkehr)

Wir empfehlen, das restriktivste Profil zu aktivieren, das weiterhin konfigurierten Datenverkehr zulässt. Da wir in dieser Anleitung noch kein SSL für den Server konfiguriert haben, müssen wir nur Datenverkehr auf Port 80 zulassen.

sudo ufw allow 'Apache'

Sie können die Änderung überprüfen, indem Sie folgenden Befehl eingeben:

sudo ufw status

Die Ausgabe enthält eine Liste des erlaubten HTTP-Verkehrs:

Output
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Apache                     ALLOW       Anywhere                
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Apache (v6)                ALLOW       Anywhere (v6)

Wie Sie der Ausgabe entnehmen können, ist das Profil aktiviert und hat Zugriff auf den Apache-Webserver.

Schritt 3 – Überprüfen des Webservers

Am Ende des Installationsvorgangs startet Ubuntu 22.04 Apache. Ihr Webserver ist bereits eingerichtet und läuft. Stellen Sie sicher, dass der Dienst ausgeführt wird, indem Sie den folgenden Befehl ausführen:

sudo systemctl status apache2
Output
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese>
     Active: active (running) since Tue 2022-04-26 15:33:21 UTC; 43s ago
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 5089 (apache2)
      Tasks: 55 (limit: 1119)
     Memory: 4.8M
        CPU: 33ms
     CGroup: /system.slice/apache2.service
             ├─5089 /usr/sbin/apache2 -k start
             ├─5091 /usr/sbin/apache2 -k start
             └─5092 /usr/sbin/apache2 -k start

Wie diese Ausgabe bestätigt, wurde der Dienst erfolgreich gestartet. Der beste Weg, dies zu testen, ist jedoch, eine Seite von Apache anzufordern.

Sie können auf die Standard-Apache-Landingpage zugreifen, um zu bestätigen, dass die Software über Ihre IP-Adresse ordnungsgemäss ausgeführt wird. Wenn Sie die IP-Adresse Ihres Servers haben, geben Sie sie in die Adressleiste Ihres Browsers ein:

http://ip_des_servers

Sie sehen die standardmässige Ubuntu 22.04 Apache-Webseite wie im Folgenden dargestellt:

Apache2 Default Page

Diese Seite zeigt an, dass der Apache korrekt funktioniert. Sie enthält auch einige grundlegende Informationen über wichtige Apache-Dateien und -Verzeichnisse.

Grundsätzlich ist die Installation nun abgeschlossen. Dennoch empfehlen wir zusätzlich ein paar Einstellungen und Konfigurationen, welche wir in den nächsten Schritten zeigen werden.

Schritt 4 – Verwaltung des Apache-Prozesses

Nachdem Sie Ihren Webserver nun zum Laufen gebracht haben, wollen wir uns einige grundlegende Verwaltungsbefehle mit systemctl ansehen.

Um Ihren Webserver zu stoppen, geben Sie Folgendes ein:

sudo systemctl stop apache2

Um den Webserver zu starten, wenn er angehalten ist, geben Sie Folgendes ein:

sudo systemctl start apache2

Um den Dienst zu stoppen und dann wieder zu starten, geben Sie Folgendes ein:

sudo systemctl restart apache2

Wenn Sie lediglich Änderungen an der Konfiguration vornehmen, kann der Apache oft neu geladen werden, ohne dass die Verbindungen unterbrochen werden. Verwenden Sie dazu den folgenden Befehl:

sudo systemctl reload apache2

Standardmässig ist der Apache so konfiguriert, dass er beim Hochfahren des Servers automatisch gestartet wird. Wenn Sie dies nicht wünschen, deaktivieren Sie dieses Verhalten durch Ausführen von:

sudo systemctl disable apache2

Um den Dienst wieder zu aktivieren, damit er beim Booten startet, geben Sie Folgendes ein:

sudo systemctl enable apache2

Apache wird nun automatisch gestartet, wenn der Server wieder hochfährt.

Schritt 5 – Einrichten von virtuellen Hosts

Bei der Verwendung des Apache-Webservers können Sie virtuelle Hosts verwenden, um Konfigurationsdetails zu separieren und mehr als eine Domain auf einem einzigen Server zu hosten. Wir werden eine Domain namens aontech.ch einrichten, aber Sie sollten diese durch Ihren eigenen Domainnamen ersetzen.

Apache auf Ubuntu 22.04 hat standardmässig einen Serverblock aktiviert, der so konfiguriert ist, dass er Dokumente aus dem Verzeichnis /var/www/html bereitstellt. Während dies für eine einzelne Site gut funktioniert, kann es unhandlich werden, wenn Sie mehrere Sites hosten. Anstatt /var/www/html zu ändern, erstellen Sie eine Verzeichnisstruktur innerhalb von /var/www für eine aontech.ch-Site und belassen Sie /var/www/html als Standardverzeichnis, das bedient wird, wenn eine Client-Anfrage keiner anderen Site entspricht.

Erstellen Sie das Verzeichnis für aontech.ch wie folgt:

sudo mkdir /var/www/aontech.ch

Als Nächstes weisen Sie dem Benutzer, mit dem Sie gerade angemeldet sind, mit der Umgebungsvariablen $USER die Rechte an dem Verzeichnis zu:

sudo chown -R $USER:$USER /var/www/aontech.ch

Um sicherzustellen, dass Ihre Berechtigungen korrekt sind und dem Besitzer erlauben, die Dateien zu lesen, zu schreiben und auszuführen, während Sie Gruppen und anderen nur Lese- und Ausführungsrechte gewähren, können Sie den folgenden Befehl eingeben:

sudo chmod -R 755 /var/www/aontech.ch

Als nächstes erstellen Sie eine Beispielseite index.html mit nano oder Ihrem bevorzugten Editor:

sudo nano /var/www/aontech.ch/index.html

Fügen Sie darin das folgende HTML-Beispiel ein:

<html>
    <head>
        <title>Welcome to AonTech.ch!</title>
    </head>
    <body>
        <h1>Success!  The AonTech.ch virtual host is working!</h1>
    </body>
</html>

Damit der Apache diese Inhalte bereitstellen kann, muss eine virtuelle Hostdatei mit den richtigen Direktiven erstellt werden. Anstatt die Standardkonfigurationsdatei unter /etc/apache2/sites-available/000-default.conf direkt zu ändern, erstellen Sie eine neue Datei unter /etc/apache2/sites-available/aontech.ch.conf:

sudo nano /etc/apache2/sites-available/aontech.ch.conf

Fügen Sie den folgenden Konfigurationsblock ein, der dem Standardblock ähnelt, aber für Ihr neues Verzeichnis und Ihren neuen Domänennamen aktualisiert wurde:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName aontech.ch
    ServerAlias www.aontech.ch
    DocumentRoot /var/www/aontech.ch
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Beachten Sie, dass wir DocumentRoot auf unser neues Verzeichnis und ServerAdmin auf eine E-Mail aktualisiert haben, auf die der Administrator der Website aontech.ch zugreifen kann. Wir haben auch zwei Direktiven hinzugefügt: ServerName, der die Basisdomäne festlegt, die mit dieser Definition des virtuellen Hosts übereinstimmt, und ServerAlias, der weitere Namen definiert, die so übereinstimmen, als wären sie der Basisname.

Speichern und schliessen Sie die Datei, wenn Sie fertig sind.

Aktivieren Sie nun die Datei mit dem Tool a2ensite:

sudo a2ensite aontech.ch.conf

Deaktivieren Sie die in 000-default.conf definierte Standardsite:

sudo a2dissite 000-default.conf

Testen Sie als nächstes auf Konfigurationsfehler:

sudo apache2ctl configtest

Sie sollten die folgende Ausgabe erhalten:

Output
. . .
Syntax OK

Starten Sie Apache neu, um Ihre Änderungen zu übernehmen:

sudo systemctl restart apache2

Der Apache bedient nun Ihren Domänennamen. Sie können dies testen, indem Sie zu http://aontech.ch navigieren, wo Sie nun die neue Seite sehen sollten. Herzlichen Glückwunsch, Sie haben einen Virtuellen Host erstellt.

Zusätzliche Informationen

Server Konfigurationen

  • /etc/apache2: Das Apache-Konfigurationsverzeichnis. Alle Apache-Konfigurationsdateien befinden sich hier.
  • /etc/apache2/apache2.conf: Die Hauptkonfigurationsdatei von Apache. Sie kann modifiziert werden, um Änderungen an der globalen Apache-Konfiguration vorzunehmen. Diese Datei ist für das Laden vieler anderer Dateien im Konfigurationsverzeichnis verantwortlich.
  • /etc/apache2/ports.conf: In dieser Datei werden die Ports angegeben, auf denen der Apache lauschen soll. Standardmässig lauscht der Apache an Port 80 und zusätzlich an Port 443, wenn ein Modul mit SSL-Funktionen aktiviert ist.
  • /etc/apache2/sites-available/: Das Verzeichnis, in dem virtuelle Hosts pro Site gespeichert werden können. Apache verwendet die Konfigurationsdateien in diesem Verzeichnis nur dann, wenn sie mit dem Verzeichnis sites-enabled verknüpft sind. In der Regel wird die gesamte Serverblockkonfiguration in diesem Verzeichnis vorgenommen und dann durch Verknüpfen mit dem anderen Verzeichnis mit dem Befehl a2ensite aktiviert.
  • /etc/apache2/sites-enabled/: Das Verzeichnis, in dem aktivierte virtuelle Hosts pro Site gespeichert werden. Normalerweise werden diese durch Verknüpfung mit Konfigurationsdateien im Verzeichnis sites-available mit dem Befehl a2ensite erstellt. Der Apache liest die Konfigurationsdateien und Links in diesem Verzeichnis, wenn er startet oder neu geladen wird, um eine vollständige Konfiguration zu erstellen.
  • /etc/apache2/conf-available/, /etc/apache2/conf-enabled/: Diese Verzeichnisse stehen in der gleichen Beziehung wie die Verzeichnisse sites-available und sites-enabled, werden aber zum Speichern von Konfigurationsfragmenten verwendet, die nicht in einen virtuellen Host gehören. Die Dateien im Verzeichnis conf-available können mit dem Befehl a2enconf aktiviert und mit dem Befehl a2disconf deaktiviert werden.
  • /etc/apache2/mods-available/, /etc/apache2/mods-enabled/: Diese Verzeichnisse enthalten die verfügbaren bzw. aktivierten Module. Dateien mit der Endung .load enthalten Fragmente zum Laden bestimmter Module, während Dateien mit der Endung .conf die Konfiguration für diese Module enthalten. Module können mit den Befehlen a2enmod und a2dismod aktiviert und deaktiviert werden.

Server Logs

  • /var/log/apache2/access.log: Standardmässig wird jede Anfrage an Ihren Webserver in dieser Protokolldatei aufgezeichnet, sofern Apache nicht anders konfiguriert ist.
  • /var/log/apache2/error.log: Standardmässig werden alle Fehler in dieser Datei aufgezeichnet. Die LogLevel-Anweisung in der Apache-Konfiguration gibt an, wie detailliert die Fehlerprotokolle sein sollen.