ubuntuusers.de

Apache 2.4

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

./apache_feather.gif Apache 🇬🇧 ist der meistgenutzte Webserver im Internet. Er ist flexibel konfigurierbar und über eine Vielzahl von Modulen erweiterbar.

In Kombination mit MySQL und PHP oder Perl oder Python spricht man dann von einen LAMP-Server (Linux, Apache, MySQL und P wie PHP, Perl oder Python).

Der häufig empfohlene XAMPP bereitet unter Ubuntu immer wieder Probleme. Da Ubuntu (fast) alle in XAMPP enthaltenen Serverdienste auch über die offiziellen Paketquellen bereitstellt, sollten bevorzugt die Einzelpakete genutzt werden. Eine Kurzanleitung dazu findet sich im Artikel LAMP.

Installation

Apache 2.4 ist in den offiziellen Paketquellen von Ubuntu enthalten und kann über das folgende Paket installiert werden [1]:

  • apache2

Befehl zum Installieren der Pakete:

sudo apt-get install apache2 

Oder mit apturl installieren, Link: apt://apache2

Es wird Apache 2.4 installiert. Die Auswahl einer anderen Version ist nicht möglich.

Wer die englischsprachige Dokumentation lokal installieren möchte, kann ein weiteres Paket nutzen:

  • apache2-doc (optional)

Befehl zum Installieren der Pakete:

sudo apt-get install apache2-doc 

Oder mit apturl installieren, Link: apt://apache2-doc

Benutzung

Nach der Installation ist der Apache-Server sofort einsatzbereit und läuft auf localhost auf Port 80 (dem Standardport des HTTP-Protokolls).

In der Ausgangskonfiguration wird der Server bei jedem Systemstart automatisch mit gestartet. Wie der automatische Start deaktiviert wird, im Abschnitt Apache steuern erklärt.

Webseiten ablegen und aufrufen

Die Inhalte für den Server werden in einem als "document root" bezeichneten Verzeichnis abgespeichert. Dies bedeutet, dass der Apache Webserver dort nach den auszuliefernden (HTML-)Dateien schaut. Bei Apache 2.4 lautet das Verzeichnis:

  • /var/www/html/

Legt man dort Dateien ab, so können diese mit

http://localhost/ bzw. http://SERVER-IP_ODER_NAME/

im Browser aufgerufen werden. Dort wird bei der Installation des Servers die Seite index.html abgelegt, eine HTML-Testseite, welche jetzt im Browser zu sehen sein sollte, so wie hier unter Firefox: Screenshot localhost unter Apache 2.4

Möchte man mehrere verschieden Webseiten über den Server ausliefern - was problemlos möglich ist - dann konfiguriert man dafür in der Regel verschiedene "virtual hosts", wie im Artikel Apache/Virtual Hosts erklärt wird.

Apache steuern

Wie alle anderen Dienste bringt Apache Start/Stop-Skripte mit. Diese Skripte lassen sich natürlich auch zum Kontrollieren des Webservers gebrauchen.

Im Terminal[3] kann der Server über

sudo service apache2 BEFEHL 

gesteuert werden, wobei BEFEHL die folgenden Werte haben kann:

  • start - startet den Webserver

  • stop - stoppt den Server

  • restart - startet den Server neu, bestehende Verbindungen auf den Server werden gekappt

  • reload - lädt die Konfigurationsdateien neu, ohne dass Verbindungen getrennt werden

  • force-reload - Lädt die Konfigurationsdateien neu, auch wenn dabei Verbindungen getrennt werden müssen

Experten-Info:

Alternativ kann man auch das Programm apache2ctl benutzen, der allerdings etwas andere Optionen nutzt als das oben beschriebene service Programm. Da die Nutzung von service aber der Ubuntu/Debian-konforme Weg ist, wird hier apache2ctl nicht weiter beschrieben.

Per Voreinstellung startet der Server bei jedem Systemstart automatisch mit. Dieses Verhalten kann mit dem Befehl systemctl verändert werden. Details findet man unter systemd/Units (Abschnitt „Selbst-angelegte-Units-aktivieren“)

Konfiguration

Die zentrale Konfigurationsdatei des Server ist apache2.conf im Verzeichnis /etc/apache2. Diese muss in der Regel allerdings nicht bearbeitet werden, da zusätzliche Konfigurationen in separaten Dateien angelegt werden können.

Diese Dateien liegen im Verzeichnis /etc/apache2/conf-available. Hierbei handelt es um Textdateien, welche mit einem Editor mit Root-Rechten[4][5] mit Root-Rechten angelegt bzw. editiert werden können. Der Name der Datei darf beliebig sein, aber die Dateiendung muss .conf lauten. Die gültigen Direktiven, welche in den Konfigurationsdateien verwendet werden dürfen, sind in der Apache Dokumentation 🇩🇪 erläutert.

Zum Aktivieren der Konfiguration muss die .conf-Datei noch aktiviert werden. Dies geschieht mit dem Befehl[3][4]:

sudo a2enconf NAME_DER_DATEI.conf 

Die Deaktivierung erfolgt entsprechend mit:

sudo a2disconf NAME_DER_DATEI.conf 

Rechte

Falls bei einem Mehrbenutzersystem bestimmten Personen Schreibrechte für die in "document root" enthaltenen Dateien gegeben werden sollen, sollte dafür eine Gruppe angelegt werden. Dies ist nicht notwendig, wenn nur ein Mitglied der Gruppe sudo Inhalte erstellen oder bearbeiten soll. Diese können mit dem Befehl sudo Datei-Operationen ausführen.

Soll einem Nutzer ohne Root-Rechte Schreibzugriff gewährt werden, muss dafür eine Gruppe angelegt werden. Dies ist im folgenden Beispiel die Gruppe www. Dieser Name kann aber frei vergeben werden. Dieser Gruppe können Schreibrechte auf den "document root"-Ordner gegeben werden und die Nutzer hinzufügt werden [3].

sudo groupadd www
sudo adduser BENUTZERNAME www
sudo chgrp www /var/www/html
sudo chmod g+w /var/www/html
sudo find /var/www/html -type d -exec chmod g+s {} \;  

Damit die neuen Rechte greifen, muss man sich einmal ab- und neu anmelden oder den Befehl newgrp verwenden.

Hinweis:

Die bestehende Gruppe www-data sollte nicht genutzt werden. Mit den Rechten dieser Gruppe läuft der Apache Webserver und sollte ein Angreifer eine Lücke in Apache finden, so erhält er unnötigerweise Schreibrechte im "document root".

Virtual Hosts

Auf einem Apache-Webserver mit (nur) einer IP-Adresse können durchaus mehrere unabhängige Homepages, Blogs oder Wikis bereitgestellt werden. Wie dies funktioniert, ist im Artikel Apache/Virtual Hosts erklärt.

Module

Der Apache Server lässt sich über Module erweitern. Zu den Modulen zählt auch das Einbinden von PHP. Weiterführende Informationen sind im Artikel Apache/Module zu finden.

Problembehebung

Starten scheitert durch fehlendes LOG-Verzeichnis

Sollte /var/log/ nicht verfügbar sein (zum Beispiel durch ein temporäres Verzeichnis - siehe Tuning (Abschnitt „Temporaere-Dateien“)) wird ein Starten des Daemons abgebrochen.

 * Starting web server apache2
 *
 * The apache2 configtest failed.
Output of config test was:
(2)No such file or directory: AH02291: Cannot access directory '/var/log/apache2/' for error log of vhost defined at /etc/apache2/sites-enabled/NAME-DES-VIRTEULLEN-HOSTS.conf:1
(2)No such file or directory: AH02291: Cannot access directory '/var/log/apache2/' for error log of vhost defined at /etc/apache2/sites-enabled/000-default.conf:1
AH00014: Configuration check failed
Action 'configtest' failed.
The Apache error log may have more information.

Lösen kann man dieses Problem, in dem man die Apache-Logs ohne Unterordner unter /var/log/ ablegt. Hierzu ist eine Anpassung der Umgebungsvariablen von Apache unter /etc/apache2/envvars erforderlich. Zur Anpassung sind Root-Rechte erforderlich[4][5].

In folgender Zeile muss apache2 entfernt werden.

export APACHE_LOG_DIR=/var/log/apache2$SUFFIX
## nachher
export APACHE_LOG_DIR=/var/log/$SUFFIX 

Zudem sollte man das Apache-Log umbenennen, ansonsten könnte die Datei überschrieben werden, was eine Rückverfolgbarkeit verhindert. Hierzu ist ebenfalls mit Root-Rechten die Datei /etc/apache2/apache2.conf anzupassen

sudoedit -H /etc/apache2/apache2.conf 

und das zu erstellende Log-File umzubenennen. Leerstellen im Dateinamen werden nicht unterstützt.

ErrorLog ${APACHE_LOG_DIR}/error.log
#Nachher
ErrorLog ${APACHE_LOG_DIR}/apache-error.log 

Zusätzlich sollten die Log-Namen der virtuellen Hosts angepasst werden, um ebenfalls ein Überschreiben zu verhindern. Der Name der Datei /etc/apache2/sites-enabled/NAME-DES-VIRTUELLEN-HOSTS.conf' ist entsprechend anzupassen[4][5]

#Vorher
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# Nachher
ErrorLog ${APACHE_LOG_DIR}/apache-NAME-DES-VIRTUELLEN-HOSTS-error.log
CustomLog ${APACHE_LOG_DIR}/apache-NAME-DES-VIRTUELLEN-HOSTS-access.log combined 

Die Dateinamen der Logs sind nur Empfehlungen, für das System ist es irrelevant, wie die LOG-Datei heißt.

Diese Revision wurde am 1. Juli 2023 04:18 von mubuntuHH erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Netzwerk, Server, Internet, Apache