Einführung
Apache ist derzeit der am weitesten verbreitete Webserver der Welt. Es handelt sich um eine Open-Source-Software, die vor über zwanzig Jahren entwickelt wurde und gepflegt wird von der Apache Software Foundation. Stand September 2020 bedient er schätzungsweise 35 % des gesamten Website-Traffics weltweit.
Entwickler bevorzugen Apache aufgrund seiner Geschwindigkeit, Sicherheit, Zuverlässigkeit, Robustheit und einfachen Anpassbarkeit. Darüber hinaus ist Apache in der Lage, die Anforderungen vieler Umgebungen zu erfüllen, da es die Installation verschiedener Erweiterungen und Module ermöglicht. Dies ist dank einer Reihe von Konfigurationen möglich, die Entwickler und Serveradministratoren für unterschiedliche Zwecke anpassen können. In diesem Tutorial führen wir Sie durch die allgemeinen Konfigurationsdateien und Optionen, die unterschiedliche Ergebnisse auf Ubuntu- und Debian-Servern beeinflussen können.
Debian und Ubuntu gehören zu den beliebtesten Server-Betriebssystemen. Die beiden weisen viele Ähnlichkeiten auf. Beispielsweise verwenden beide den APT-Paketmanager und DEB-Pakete für die manuelle Installation. Sie handhaben die Apache-Einstellungen und die Verzeichnisstruktur ähnlich. Daher sollten Sie diesem Tutorial mit jedem der beiden Betriebssysteme folgen können. Zuerst können Sie diesem Tutorial folgen, um einen Ubuntu-Server in wenigen Schritten einzurichten.
Melden Sie sich als Nächstes als Nicht-Root-Benutzer mit sudo-Rechten an, und lassen Sie uns beginnen!
So installieren Sie Apache auf Ubuntu und Debian
Wenn Ihr Server noch nicht über Apache verfügt, können Sie es ganz einfach mit einem einzigen Befehl installieren. Führen Sie zuerst den Update-Befehl aus:
|
1 |
sudo apt-get update |
Anschließend können Sie Apache installieren, indem Sie folgenden Befehl eingeben:
|
1 |
sudo apt-get install apache2 |
Nach Abschluss der Installation können Sie die installierte Version mit folgendem Befehl überprüfen:
|
1 |
apache2 -v |
Zum Zeitpunkt der Erstellung dieses Tutorials war die Version war:

Besuchen Sie danach die IP-Adresse oder den Domainnamen Ihres Servers. Sie sollten die Standard-Indexseite von Apache sehen können:

Die Apache-Dateihierarchie in Ubuntu- und Debian-Distributionen
Sowohl Ubuntu- als auch Debian-Distributionen verwenden den apt-Paketmanager. Ebenso wird beim Installieren eines Pakets eine ähnliche Dateihierarchie erstellt. In unserem Fall speichert Apache sowohl bei Ubuntu als auch bei Debian seine Konfigurationsdateien im Verzeichnis „/etc/apache2“. Wechseln Sie mit dem folgenden Befehl in das Verzeichnis und listen Sie den Inhalt des Verzeichnisses auf:
|
1 2 |
cd /etc/apache2 ls -F |
Sie können die Ausgabe des Befehls im folgenden Screenshot sehen:

Sie können eine Reihe von Dateien und Unterverzeichnissen sehen, mit denen Sie bei der Konfiguration einer Apache-Server-Einrichtung vertraut sein sollten. Hier ist ihre Beschreibung:
- apache2.conf – Dies ist die Hauptkonfigurationsdatei für einen Apache-Server. Sie enthält außerdem alle Standardkonfigurationen. Obwohl fast alle Konfigurationen in dieser Datei vorgenommen werden können, wird aus Gründen der Einfachheit und zum Schutz dieser Standarddatei vor Beschädigung immer empfohlen, separate, dafür vorgesehene Dateien zu verwenden.
- conf-available – Dies ist das Verzeichnis, das zusätzliche lokale Konfigurationsdateien und Dateien anderer Anwendungen enthält, die noch keinen Modulen zugeordnet sind. Die Konfigurationen in diesem Verzeichnis sind erst aktiv, wenn Sie sie aktivieren. Der Befehl a2enconf kann eine Konfigurationsdatei aktivieren. Hier ist der Inhalt dieses Verzeichnisses:

- conf-enabled – Dies ist das Verzeichnis, das zusätzliche lokale Konfigurationen und Konfigurationsdateien anderer Anwendungen enthält, die ihren entsprechenden Modulen zugeordnet sind. Die Konfigurationsdateien in diesem Verzeichnis sind aktiv und beeinflussen das Verhalten von Apache. Sie können eine Konfigurationsdatei mit dem Befehl a2disconf deaktivieren. Hier ist der Inhalt dieses Verzeichnisses:

- envvars – Dies ist die Datei, die die Umgebungsvariablen von Apache2 enthält. Die Variablen in dieser Datei betreffen nur Apache und stehen in keinem Zusammenhang mit Ihrem Linux-System. Hier ist der Inhalt der Datei:

- magic – Dies ist die Datei, die Anweisungen zur Bestimmung des MIME-Typs einer Datei enthält. Sie hilft dem Server, den Typ einer Datei zu bestimmen.
- mods-available –It is the directory containing configuration files to load modules and configure them. However, they are not yet enabled. You can enable them using the a2enmod command.
- mods-enabled – It is the directory containing configuration files to load modules and configure them. The configurations in this directory are already enabled and link to the corresponding modules. You can disable the modules with the a2dismod command.
- ports-conf –It is the file specifying the ports available for virtual hosts and TCP ports Apache is listening to.
- sites-available –It is the directory containing the available configuration files for Apache virtual hosts. Virtual hosts allow Apache to serve different websites. The files in this directory are not yet active. You can enable a virtual host file with the command a2ensite.
- sites-enabled – It is the directory containing the activated virtual host configuration files. It usually contains symbolic links to the files in the sites-available directory. You can disable a virtual host file using the command a2dissite.
The modular design of the Apache configuration files allows you to modify and add files as you need.
Contents of the Apache2.conf File
The file at “/etc/apache2/apache2.conf” contains the main configuration files for Apache. More specifically, it contains the configuration directives that give the server its instructions. It consists of three sections to define the globalen Server- Prozesskonfigurationen, der Standard-Server- Konfiguration und der virtuellen Hosts- Konfigurationen.
In Ubuntu and Debian systems, the majority of the file contains the global server process configurations. Towards the bottom you can find the configurations for the default server and the virtual hosts by using the “Include” directive. Apache uses the “Include” directive to read other configuration files and then include them into the current configuration file, from the point where the directive appears. This happens on the Apache server startup.
Scrolling to the bottom of the apache2.conf file, you should see several include directives. The directives load the modules’ definitions in the mods-enabled directory, the ports.conf file, the local configurations in the conf-enabled directory, and the virtual hosts’ configurations in the sites-enabled directory.
Global Server Configuration Section
The global server configuration section contains the settings and instructions that control how Apache works globally. It features some directives whose values you can modify to change the behavior of Apache. Let’s discuss some of them:
- Timeout – This directive specifies the maximum time for the server to fulfill a request. By default, it’s 300 seconds which is likely too high if you are developing a faster responsive app. You can change this to a lesser value if your server has enough resources.
- KeepAlive – Specifies that each connection should remain open to handle multiple requests from the same client. By default, it’s set to “On”. However, if it’s set to “Off”, then each request will have to establish a new connection, even if from the same client. This may cause significant server overload.
- MaxKeepAliveRequests – It controls the maximum number of requests to allow during a single persistent connection before dying. To allow an unlimited number of connections, set the value to 0. For maximum performance and efficiency, set the number to the highest possible.
- KeepAliveTimeout – It determines the maximum number of seconds to wait for the next request from the same client after the last one before the connection dies. The default is 5 seconds. If the time elapses, then in the next request, a new connection is made to handle the request.
- HostnameLookups – Decides whether DNS lookup should be enabled or not. By default, it’s off. If you enable it, then every request will result in at least one lookup to the nameserver which will greatly impact your server performance negatively.
Default Virtual Host File
Eine Neuinstallation des Apache-Servers enthält eine standardmäßige Virtual-Host-Datei namens 000-default.conf. Dies ist die Datei, die die standardmäßige Apache-index.html-Seite bereitstellt. Sie gehört in das Verzeichnis sites-available. Der Inhalt dieser Datei gibt Ihnen eine allgemeine Vorstellung vom Format der Apache-Virtual-Host-Dateien. Geben Sie den folgenden Befehl ein, um die Datei zu öffnen:
|
1 |
sudo nano /etc/apache2/sites-available/000-default.conf |
Hier ist der Inhalt der Datei. Wir haben die Kommentare zur besseren Übersichtlichkeit entfernt:
|
1 2 3 4 5 6 7 8 9 |
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
Wie Sie im Konfigurations-Header sehen können VirtualHost *:80, ist dieser virtuelle Host standardmäßig so konfiguriert, dass er Anfragen auf Port 80 verarbeitet. Dies ist der Standard-HTTP-Port.
Apache ist so konzipiert, dass er die spezifischste Virtual-Host-Definition verwendet, die auf eine bestimmte Anfrage passt. Dies bedeutet, dass dieser bestimmte virtuelle Host nicht unbedingt jede Anfrage an den Server verarbeitet. Wenn es vielmehr eine andere Virtual-Host-Datei mit einer spezifischeren Definition gäbe, würde diese diese Datei außer Kraft setzen.
Hier sind die Beschreibungen der Direktiven in der Virtual-Host-Datei:
- ServerAdmin – Gibt die Kontakt-E-Mail-Adresse an, die bei Serverproblemen verwendet werden soll. Apache zeigt diese normalerweise auf der generierten Fehlerseite an. Wenn Sie ServerSignature auf „Email“ in der Datei /etc/apache2/conf-enabled/security.conf setzen, wird die hier angegebene E-Mail-Adresse mit einem mailto
- DocumentRoot – Diese Direktive verweist auf das Verzeichnis, das die Website-Dateien enthält. Sie finden die standardmäßige Apache-Willkommens-Indexseite im Verzeichnis /var/www/html in Ubuntu 20.04.
- ErrorLog – Diese Direktive bestimmt den Speicherort der Fehlerprotokolldatei.
- CustomLog – Diese Direktive zeigt den Speicherort des Zugriffsprotokolls und das Format der Protokollanzeige an.
Zusätzliche Virtual-Host-Direktiven
- ServerName – Sie gibt den Domänennamen oder die IP-Adresse an, die der virtuelle Host verarbeiten soll. Wenn wir mehrere virtuelle Hosts definieren würden, damit unser Apache-Server mehrere Websites bereitstellen kann, würden wir eine ServerName-Direktive hinzufügen und die Domäne angeben, die jeder virtuelle Host bedienen soll.
- ServerAlias – Diese Direktive sorgt dafür, dass eine Virtual-Host-Datei für mehr als einen Namen gilt, und stellt alternative Domänen bereit, um auf denselben Inhalt zuzugreifen. Zum Beispiel, wenn Ihre Benutzer auf denselben Inhalt zugreifen können, wenn sie Ihrem Domänennamen ein www voranstellen. Beispielsweise könnten wir dem virtuellen Host für die Domäne example.com Folgendes hinzufügen:
|
1 2 |
ServerName example.com ServerAlias www.example.com |
Die Verzeichnisdefinitions-Direktive
In der Praxis werden Sie Ihre Website-Dateien wahrscheinlich in mehreren Verzeichnissen haben. Die standardmäßige Virtual-Host-Datei enthält nicht die Direktive Directory, da sie nur eine index.html-Datei bereitstellen kann. Die Direktive Directory gibt an, wie Apache mit verschiedenen Verzeichnissen innerhalb des Website-Dokumentenstamms umgeht. In dieser Direktive definieren Sie auch die Zugriffsbeschränkungen für das Dateisystem. Standardmäßig erlaubt Apache nur den Internetzugriff auf die Dateien im Verzeichnis /var/www. In diesem Verzeichnis können Sie andere Verzeichnisse erstellen, die Ihre Website-Dateien enthalten. Darüber hinaus können Sie festlegen, wie auf die Dateien im Verzeichnis zugegriffen werden soll. Eine Beispieldefinition kann so aussehen:
|
1 2 3 4 5 |
<Directory /var/www/html> Options Indexes FollowSymLinks MultiViews Require all granted AllowOverride all </Directory> |
Die Direktive <Directory /var/www/html> gibt das Verzeichnis an, für das diese Regeln gelten. Das „AllowOverride”-Option gibt an, ob eine “.htaccess”-Datei die Einstellungen überschreiben soll, wenn Sie sie im angegebenen Verzeichnis ablegen. Dies ist erforderlich, wenn Sie mit Frameworks wie Laravel arbeiten, die mit .htaccess und URL-Rewriting arbeiten.
Um mehr über virtuelle Hosts zu erfahren, können Sie unser Tutorial zur Einrichtung von virtuellen Apache-Hosts auf Ubuntu 20.04. Hier ist eine Beispiel-Virtual-Host-Datei mit allen von uns definierten Direktiven:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com ServerAdmin webmaster@localhost.com DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /var/www/html> Options Indexes FollowSymLinks MultiViews Require all granted AllowOverride all </Directory> </VirtualHost> |
Redirect-, Alias- und ScriptAlias-Direktiven
In einigen Fällen möchten Sie möglicherweise auf Website-Dateien oder ausführbare Dateien zugreifen, die sich nicht direkt im DocumentRoot-Verzeichnis befinden. Hier kommen diese drei Direktiven ins Spiel.
Die Redirect-Direktive weist Clients an, eine neue Anfrage mit einer anderen URL zu stellen. Normalerweise verwenden Sie sie, wenn Sie Ihre Website-Besucher auf einen anderen Domainnamen oder eine andere IP-Adresse leiten möchten. Beachten Sie, dass Redirect zuerst vor Alias und ScriptAlias ausgeführt wird. Die Alias-Direktive ordnet eine URL einem Verzeichnispfad zu. Die ScriptAlias-Direktive ordnet eine URL den Verzeichnissen zu, die ausführbare Skripte enthalten. Damit Alias und ScriptAlias funktionieren, müssen Sie die Verzeichnisberechtigungen für den vom Webserver verwendeten Benutzer www-data festlegen.
So aktivieren Sie Websites und Module in Apache
Virtuelle Hosts und Module müssen aktiviert werden, bevor sie aktiv und für den Apache-Prozess zugänglich werden. Darüber hinaus werden virtuelle Hosts im Verzeichnis sites-available erstellt, wie erklärt. Wenn Sie eine Virtual-Host-Datei mit dem Namen example.com.conf haben, können Sie diese mit dem folgenden Befehl aktivieren:
|
1 |
sudo a2ensite example.com.conf |
Der Befehl aktiviert den virtuellen Host. Damit die Änderungen wirksam werden, müssen Sie Apache jedoch anweisen, die Konfigurationsdateien neu zu laden, indem Sie den folgenden Befehl eingeben:
|
1 |
sudo service apache2 reload |
Möglicherweise möchten Sie eine Virtual-Host-Datei namens example.com.conf deaktivieren, damit Apache sie nicht zur Beantwortung von Anfragen verwendet. Geben Sie dazu den folgenden Befehl ein, um eine Datei zu deaktivieren:
|
1 |
sudo a2dissite example.com.conf |
Damit die Änderungen sofort wirksam werden, müssen Sie Apache erneut anweisen, die Konfigurationsdateien neu zu laden, indem Sie den folgenden Befehl eingeben:
|
1 |
sudo service apache2 reload |
Ebenso können Sie Module mit derselben Syntax aktivieren und deaktivieren. Der Befehl zum Aktivieren eines Moduls lautet “a2enmod” und der Befehl zum Deaktivieren eines Moduls lautet “a2dismod.” Beispielsweise gibt es ein Apache-Modul namens mod_rewrite, das beim Umschreiben von URLs in Abhängigkeit von .htaccess-Konfigurationen hilft. Sie müssen dieses Modul aktivieren, damit die .htaccess-Datei funktioniert. Sie können dies tun, indem Sie folgenden Befehl eingeben:
|
1 |
sudo a2enmod rewrite |
Damit diese Änderung wirksam wird, müssen Sie die Apache-Konfigurationen neu laden. Sie können das Modul auch deaktivieren, indem Sie folgenden Befehl eingeben:
|
1 |
sudo a2dismod rewrite |
Laden Sie danach die Apache2-Konfigurationen neu, damit die Änderungen sofort wirksam werden.
Schließlich finden Sie hier einige weitere Ressourcen, die Ihnen helfen, sich mit dem Apache-Webserver vertraut zu machen:
- Installation des Apache-Servers auf Ubuntu 18.04: Eine Anleitung
- So installieren Sie den Linux, Apache, MySQL, PHP (LAMP) Stack auf CentOS 7
- Apache mit Let’s Encrypt auf Ubuntu 18.04 absichern
- Die Welt der Webserver: Apache vs. Nginx
Fazit
In diesem Tutorial haben wir grundlegende Apache-Konfigurationsdateien auf Ubuntu- und Debian-Systemen definiert. Wie wir gezeigt haben, ist Apache hochgradig modular aufgebaut, was bedeutet, dass Sie viele Module installieren können, um verschiedene Aufgaben auszuführen.
Sie können diese Module ganz einfach aktivieren und deaktivieren und andere Konfigurationen ändern, um unterschiedliche Ergebnisse zu erzielen. Sie können nun lokale Konfigurationsdateien ändern, die dann in die Hauptkonfigurationsdatei eingebunden werden. So müssen Sie sich keine Sorgen machen, die globale Konfigurationsdatei zu beschädigen.
Viel Spaß beim Computing!
Kommentare
Noch keine Kommentare. Schreiben Sie den ersten.