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
- Die Apache-Dateihierarchie
- Erkunden der Apache2.conf-Datei
- Apache-Globale Konfigurationen festlegen
- Apache-Virtual-Host-Datei einrichten
- 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:
Outputenvars 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/
undsites-enabled/
: Das Verzeichnissites-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 Verzeichnissites-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 Verzeichnissites-enabled
, während es eine vollständige Konfiguration erstellt.conf-available/
undconf-enabled/
: Diese Verzeichnisse enthalten Konfigurationsfragmente, die nicht an die Konfigurationsdateien für virtuelle Hosts angehängt sind.mods-enabled/
undmods-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
:
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/
:
…
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:
OutputCompiled 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:
Outputevent
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:
<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/
:
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:
…
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:
Fügen Sie your_domain
der ServerName
-Direktive hinzu:
…
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
:
…
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:
…
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:
…
<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:
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:
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:
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:
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:
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:
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:
Ebenso können Sie ein Modul mithilfe des Befehls a2dismod
deaktivieren:
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.