Wie man den Apache-Webserver auf einem Ubuntu- oder Debian-VPS konfiguriert

Einführung

Apache ist einer der beliebtesten Webserver im Internet. Er wird verwendet, um mehr als die Hälfte aller aktiven Websites zu bedienen. Obwohl es viele geeignete Webserver gibt, die Ihren Inhalt bedienen können, ist es hilfreich zu verstehen, wie Apache funktioniert, aufgrund seiner Allgegenwart.

In diesem Artikel werden einige allgemeine Konfigurationsdateien und die Optionen, die in ihnen kontrolliert werden können, untersucht. Dieser Artikel folgt dem Layout der Apache-Dateien unter Ubuntu/Debian, das sich von der Konfigurationshierarchie anderer Distributionen unterscheidet.

Voraussetzungen

Wenn Sie Ubuntu Version 16.04 oder älter verwenden, empfehlen wir Ihnen, auf eine neuere Version zu aktualisieren, da Ubuntu für diese Versionen keinen Support mehr bietet. Diese Sammlung von Anleitungen wird Ihnen beim Aktualisieren Ihrer Ubuntu-Version helfen.

  • Ein Server, der Ubuntu ausführt, zusammen mit einem nicht-root Benutzer mit sudo-Berechtigungen und einer aktiven Firewall. Für Anleitungen zur Einrichtung dieser Komponenten wählen Sie bitte Ihre Distribution aus dieser Liste und folgen Sie unserem Leitfaden zur Initial Server Setup.

  • Bevor Sie mit der Erkundung Ihrer Apache-Konfigurationen beginnen, sollten Sie Apache auf Ihrem Server installiert haben. Sie können dies lernen, indem Sie unserem Tutorial „So installieren Sie den Apache-Webserver unter Ubuntu“ 22.04 / 20.04 / 18.04 oder dem Tutorial „So installieren Sie den Apache-Webserver unter Debian 10“ folgen.

5 Schritte zum Konfigurieren des Apache-Web-Servers unter Ubuntu

  1. Die Apache-Dateihierarchie
  2. Erkunden der Apache2.conf-Datei
  3. Apache-Globale Konfigurationen festlegen
  4. Apache-Virtual-Host-Datei einrichten
  5. Websites und Module aktivieren

Schritt 1: Die Apache-Dateihierarchie

Apache speichert seine Hauptkonfigurationsdateien im Ordner /etc/apache2. Wenn Sie den folgenden Befehl ausführen, werden alle Dateien in diesem Ordner aufgelistet:

  1. ls -f /etc/apache2
Output
envars sites-available . apache2.conf .. sites-enabled mods-available ports.conf magic mods-enabled conf-enabled conf-available

Es gibt eine Reihe von Klartextdateien und einige Unterverzeichnisse in diesem Verzeichnis. Hier sind einige nützliche Orte, mit denen Sie vertraut sein sollten:

  • apache2.conf: Dies ist die Hauptkonfigurationsdatei für den Server. Fast alle Konfigurationen können aus dieser Datei heraus vorgenommen werden, obwohl es empfohlen wird, separate, speziell dafür vorgesehene Dateien zur Vereinfachung zu verwenden. Diese Datei konfiguriert Standardwerte und ist der zentrale Zugriffspunkt für den Server, um Konfigurationsdetails zu lesen.
  • ports.conf: Diese Datei wird verwendet, um die Ports anzugeben, auf denen virtuelle Hosts hören sollen. Stellen Sie sicher, dass diese Datei korrekt ist, wenn Sie SSL konfigurieren.
  • sites-available/ und sites-enabled/: Das Verzeichnis sites-available enthält Konfigurationsdateien für virtuelle Hosts. Konfigurationen in diesem Ordner legen fest, welcher Inhalt für welche Anfragen bereitgestellt wird. Dies wird durch Verlinken mit dem Verzeichnis sites-enabled aktiviert, das aktivierte Konfigurationsdateien für virtuelle Hosts speichert. Wenn Apache startet oder neu lädt, liest es die Konfigurationsdateien und Links aus dem Verzeichnis sites-enabled, während es eine vollständige Konfiguration erstellt.
  • conf-available/ und conf-enabled/: Diese Verzeichnisse enthalten Konfigurationsfragmente, die nicht an die Konfigurationsdateien für virtuelle Hosts angehängt sind.
  • mods-enabled/ und mods-available/: Diese Verzeichnisse definieren Module, die optional geladen werden können. Die Verzeichnisse enthalten zwei Komponenten: Dateien mit der Endung .load, die Fragmente enthalten, um bestimmte Module zu laden, und Dateien mit der Endung .conf, die die Konfigurationen dieser Module speichern.

Die Apache-Konfiguration erfolgt nicht in einer einzigen monolithischen Datei, sondern erfolgt durch ein modulares Design, bei dem neue Dateien bei Bedarf hinzugefügt und geändert werden können.

Schritt 2: Erkunden der Apache2.conf-Datei

Die Hauptkonfigurationsdetails für Ihren Apache-Server werden in der Datei /etc/apache2/apache2.conf gespeichert.
Diese Datei ist in drei Hauptabschnitte unterteilt:

  • Konfiguration für den globalen Apache-Server-Prozess
  • Konfiguration für den Standardserver
  • Konfiguration von virtuellen Hosts.

Öffnen Sie diese Datei mit Ihrem bevorzugten Texteditor. Das folgende Beispiel verwendet nano:

  1. sudo nano /etc/apache2/apache2.conf

In Ubuntu und Debian wird diese Datei verwendet, um globale Definitionen zu konfigurieren. Die Konfiguration des Standard-Servers und der virtuellen Hosts erfolgt durch Verwendung der Include-Direktive.
Die Include-Direktive ermöglicht es Apache, andere Konfigurationsdateien in die aktuelle Datei an der Stelle einzulesen, an der die Anweisung erscheint. Das Ergebnis ist, dass Apache beim Start dynamisch eine übergreifende Konfigurationsdatei generiert.

In dieser Datei befinden sich verschiedene Include– und IncludeOptional-Anweisungen. Diese Direktiven laden Moduldefinitionen, das Dokument ports.conf, die spezifischen Konfigurationsdateien im Verzeichnis conf-enabled/ und die virtuellen Host-Definitionen im Verzeichnis sites-enabled/:

/etc/apache2/apache2.conf
…
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
…
Include ports.conf
…
IncludeOptional conf-enabled/*.conf
…
IncludeOptional sites-enabled/*.conf

Schritt 3: Konfiguration der globalen Apache-Einstellungen

Es gibt einige Optionen, die Sie in der globalen Konfiguration ändern möchten:

Timeout

Standardmäßig ist dieser Parameter auf 300 eingestellt. Dies bedeutet, dass der Server maximal 300 Sekunden Zeit hat, um jede Anfrage zu bearbeiten.
Dieser Parameter kann sicher auf etwas zwischen 30 und 60 Sekunden reduziert werden.

KeepAlive

Diese Option, wenn auf Ein gesetzt, erlaubt es, dass jede Verbindung offen bleibt, um mehrere Anfragen vom selben Client zu bearbeiten.
Wenn dies auf Aus gesetzt ist, muss jede Anfrage eine neue Verbindung herstellen, was je nach Ihrer Konfiguration und Verkehrssituation zu erheblichem Overhead führen kann.

MaxKeepAliveRequests

Dies steuert, wie viele separate Anfragen jede Verbindung bearbeiten wird, bevor sie beendet wird. Ein hoher Wert ermöglicht es Apache, Inhalte für jeden Client effektiver bereitzustellen.
Die Standardeinstellung ist auf 100 gesetzt. Das Festlegen dieses Werts auf 0 ermöglicht es Apache, eine unbegrenzte Anzahl von Anfragen für jede Verbindung zu bearbeiten.

KeepAliveTimeout

Diese Einstellung legt fest, wie lange nach Abschluss der letzten Anfrage auf die nächste Anfrage gewartet wird. Wenn die Timeout-Schwelle erreicht ist, wird die Verbindung beendet.
Dies bedeutet, dass beim nächsten Mal, wenn Inhalte angefordert werden, der Server eine neue Verbindung herstellt, um die Anfrage für den Inhalt zu bearbeiten, der die Seite ausmacht, die der Client besucht. Die Standardeinstellung ist auf 5 gesetzt.

Nachdem Sie den Inhalt dieser Konfigurationsdatei überprüft haben, können Sie diese durch Drücken von STRG+X schließen.

Mehrprozessmodule

A Multi-Processing Module (MPM) extends Apache’s modular design. MPMs are responsible for listening, directing, and handling different network requests. You can cross-reference which section your Apache installation was compiled in with using the following command:

  1. apache2 -L
Output
Compiled in modules: core.c mod_so.c mod_watchdog.c http_core.c mod_log_config.c mod_logio.c mod_version.c mod_unixd.c

Sie können den MPM-Typ auf Ihrem Server mit dem Befehl a2query -M überprüfen:

  1. a2query -M
Output
event

Die Ausgabe zeigt, dass das event MPM auf diesem Server verwendet wird. Ihre Installation kann mehrere zur Auswahl haben, aber nur eines kann ausgewählt werden.

Schritt 4: Aktualisieren der Apache Virtual Host-Datei

Die Standard-Virtual-Host-Deklaration befindet sich in einer Datei namens 000-default.conf im Verzeichnis sites-available/. Sie können das allgemeine Format einer Virtual-Host-Datei kennen lernen, indem Sie diese Datei untersuchen.

Öffnen Sie die Datei mit dem folgenden Befehl:

  1. sudo nano /etc/apache2/sites-available/000-default.conf
/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
…
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
…
ErrorLog ${APACHE LOG DIR}/error.log
CustomLog ${APACHE LOG DIR}/access.log combined
…

Der Standard-Virtual-Host ist so konfiguriert, dass er jede Anfrage auf Port 80, dem Standard-HTTP-Port, behandelt. Dies ist in der Deklarationskopfzeile definiert, wo es heißt *:80, was bedeutet, Port 80 auf jeder Schnittstelle.
Dies bedeutet jedoch nicht zwangsläufig, dass er jede Anfrage an den Server auf diesem Port bearbeitet. Apache verwendet die spezifischste Definition des virtuellen Hosts, die zur Anfrage passt. Wenn es eine spezifischere Definition gäbe, könnte diese diese Definition überschreiben. Nachdem Sie die Datei untersucht haben, können Sie sie durch Drücken von STRG+X schließen.

Apache Virtual Host Konfiguration

Die folgenden Optionen sind innerhalb der virtuellen Host-Definition außerhalb jeder anderen untergeordneten Unterdeklaration festgelegt. Sie gelten für den gesamten virtuellen Host.
Um zu beginnen, öffnen Sie die Datei security.conf im Verzeichnis conf-available/:

  1. sudo nano /etc/apache2/conf-available/security.conf

Diese Datei enthält die Direktive Server Signature, mit der Sie eine Kontakt-E-Mail angeben können, die verwendet werden soll, wenn es Serverprobleme gibt. Sie können die Standardoption von On auf EMail ändern, um die E-Mail-Adresse des Serveradministrators anzuzeigen. Stellen Sie sicher, dass Sie bereit sind, die E-Mail zu empfangen, wenn Sie diese Einstellung anpassen:

/etc/apache2/conf-available/security.conf
…
ServerSignature EMail

Verlassen Sie die Datei, indem Sie CTRL+X drücken. Nachdem Sie eine Konfigurationsdatei bearbeitet haben, werden Sie aufgefordert, Ihre Änderungen zu bestätigen. Drücken Sie Y, um die Änderungen in Ihrer Datei zu speichern, oder drücken Sie N, um sie zu verwerfen.

In Ihrer virtuellen Host-Datei können Sie eine Direktive ServerName hinzufügen, die den Domainnamen oder die IP-Adresse angibt, die dieser Anforderung behandeln soll. Dies ist die Option, die Spezifität für den virtuellen Host hinzufügen würde, sodass er die Standarddefinition überschreiben kann, wenn er mit dem Wert von ServerName übereinstimmt.

Führen Sie den folgenden Befehl aus, um Ihre virtuelle Host-Datei zu öffnen, wobei Sie die Variable Ihr_Domänenname durch Ihren tatsächlichen Domänennamen ersetzen:

  1. sudo nano /etc/apache2/sites-available/your_domain.conf

Fügen Sie your_domain der ServerName-Direktive hinzu:

/etc/apache2/sites-available/your_domain.conf
…
ServerName your_domain

Ebenso können Sie auch den virtuellen Host auf mehr als einen Namen anwenden, indem Sie die ServerAlias-Direktive verwenden. Dies bietet alternative Pfade, um auf denselben Inhalt zuzugreifen. Ein guter Anwendungsfall hierfür ist das Hinzufügen derselben Domain, vorangestellt von www:

/etc/apache2/sites-available/your_domain.conf
…
ServerAlias www.your_domain.com

Die DocumentRoot-Direktive gibt an, wo sich der angeforderte Inhalt für diesen virtuellen Host befinden wird. Auf Ubuntu ist der Standard-Virtual-Host so eingerichtet, dass Inhalte aus dem Verzeichnis /var/www/ bereitgestellt werden:

/etc/apache2/sites-available/your_domain.conf
…
DocumentRoot /var/www/your_domain/public_html

Verzeichnisdefinitionen

In der Definition des virtuellen Hosts gibt es Definitionen dafür, wie der Server verschiedene Verzeichnisse im Dateisystem behandelt. Apache wendet alle diese Anweisungen in der Reihenfolge von der kürzesten zur längsten an, sodass es erneut eine Chance gibt, vorherige Optionen zu überschreiben.

Öffnen Sie die Datei apache2.conf mit diesem Befehl:

  1. sudo nano /etc/apache2/apache2.conf
/etc/apache2/apache2.conf
…
<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
…

Die erste Verzeichnisdefinition gilt für das /– oder root-Verzeichnis. Dies stellt die Grundkonfiguration für Ihren virtuellen Host bereit, da sie für alle im Dateisystem bereitgestellten Dateien gilt. Beachten Sie die Verzeichniskonfigurationsoptionen sowie einige hilfreiche Kommentare, die in dieser Datei enthalten sind. Diese Standardkonfiguration verweigert den Zugriff auf alle Inhalte, es sei denn, sie wird in nachfolgenden Verzeichnisdefinitionen anderweitig festgelegt.

Die Require-Anweisung kann den Zugriff auf verschiedene Ressourcen innerhalb Ihres Servers einschränken oder öffnen.
Die AllowOverride-Anweisung wird verwendet, um zu entscheiden, ob eine .htaccess-Datei Einstellungen überschreiben kann, wenn sie im Inhaltsverzeichnis platziert wird. Dies ist standardmäßig nicht erlaubt, kann aber in verschiedenen Situationen nützlich sein.
Nachdem Sie den Inhalt dieser Datei untersucht haben, können Sie ihn durch Drücken von STRG+X schließen.

Alias- und ScriptAlias-Anweisungen

Verzeichnisdefinitionen werden manchmal von den Anweisungen Alias oder ScriptAlias vorangestellt.
Öffnen Sie Ihre virtuelle Host-Konfigurationsdatei mit diesem Befehl und ersetzen Sie die Variable your_domain durch Ihren Domainnamen:

  1. sudo nano /etc/apache2/sites-available/your_domain.conf

Die Alias-Anweisung ordnet einen URL-Pfad einem Verzeichnispfad zu. Zum Beispiel würde in einem virtuellen Host, der Anfragen an your_domain bearbeitet, das Folgende den Zugriff auf Inhalte innerhalb von /usr/local/apache/content/ ermöglichen, wenn Sie zu your_domain.com/content/ navigieren:

/etc/apache2/sites-available/your_domain.conf
Alias “/content/” “/usr/local/apache/content/”

Die ScriptAlias-Anweisung funktioniert auf die gleiche Weise, wird jedoch verwendet, um Verzeichnisse zu definieren, die ausführbare Komponenten enthalten:

/etc/apache2/sites-available/your_domain.conf
ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"

Denken Sie daran, das Verzeichnis mit Zugriffsrechten wie im vorherigen Abschnitt besprochen zu definieren. Nachdem Sie Ihre Bearbeitungen an der Datei abgeschlossen haben, verlassen Sie die Datei, indem Sie CTRL+X drücken. Wenn Sie Änderungen an dieser Datei vorgenommen haben, drücken Sie Y, um die Änderungen an Ihrer Datei zu speichern, oder drücken Sie N, um die Datei so zu belassen, wie sie vor den Änderungen an der Konfiguration war.

Schritt 5: Aktivieren von Websites und Modulen

Sobald Sie eine virtuelle Host-Datei haben, die Ihren Anforderungen entspricht, können Sie die Tools verwenden, die mit Apache mitgeliefert werden, um sie in Live-Websites zu überführen.
Um eine symbolische Verknüpfung im Verzeichnis sites-enabled zu einer vorhandenen Datei im Verzeichnis sites-available zu erstellen, geben Sie den folgenden Befehl ein. Stellen Sie sicher, dass Sie Ihr_Domain durch den Namen Ihrer eigenen virtuellen Host-Site-Konfigurationsdatei ersetzen:

  1. sudo a2ensite your_domain

Nachdem Sie eine Website aktiviert haben, geben Sie den folgenden Befehl aus, um Apache anzuweisen, seine Konfigurationsdateien neu zu laden, damit die Änderung übernommen wird:

  1. sudo systemctl restart apache2

Es gibt auch einen Begleitbefehl zum Deaktivieren eines virtuellen Hosts. Er funktioniert, indem er die symbolische Verknüpfung aus dem Verzeichnis sites-enabled entfernt. Zum Beispiel können Sie mit Ihrer aktivierten virtuellen Host-Site die Standard-Site 000-default deaktivieren:

  1. sudo a2dissite 000-default

Module können durch Verwendung der Befehle a2enmod und a2dismod aktiviert oder deaktiviert werden. Sie funktionieren analog zu den Befehlen a2ensite und a2dissite. Um beispielsweise das Modul info zu aktivieren, können Sie den folgenden Befehl verwenden:

  1. sudo a2enmod info

Ebenso können Sie ein Modul mithilfe des Befehls a2dismod deaktivieren:

  1. sudo a2dismod info

Vergessen Sie nicht, Apache nach der Modifikation der Konfigurationsdateien und der Aktivierung oder Deaktivierung von Modulen neu zu starten.

Abschluss

Apache ist vielseitig und sehr modular, daher sind die Konfigurationsanforderungen je nach Setup unterschiedlich.
Nachdem Sie einige allgemeine Anwendungsfälle oben überprüft haben, sollten Sie ein gutes Verständnis dafür haben, wofür die Hauptkonfigurationsdateien verwendet werden und wie sie miteinander interagieren. Wenn Sie mehr über spezifische Konfigurationsoptionen erfahren möchten, sind die bereitgestellten Dateien gut kommentiert und Apache bietet eine ausgezeichnete Dokumentation. Hoffentlich sind die Konfigurationsdateien jetzt nicht mehr so einschüchternd, und Sie fühlen sich wohler dabei, zu experimentieren und sie Ihren Bedürfnissen anzupassen.

Source:
https://www.digitalocean.com/community/tutorials/how-to-configure-the-apache-web-server-on-an-ubuntu-or-debian-vps