Apache 2.4
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 20.04 Focal Fossa
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.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
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:
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 Webserverstop
- stoppt den Serverrestart
- startet den Server neu, bestehende Verbindungen auf den Server werden gekapptreload
- lädt die Konfigurationsdateien neu, ohne dass Verbindungen getrennt werdenforce-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.
Links¶
Projektseite 🇬🇧
Updating Virtual Host Settings from Apache 2.2 to Apache 2.4 🇬🇧 - Blogbeitrag, 03/2014
Serverdienste weitere Webserver