Bis Ubuntu 13.04 befindet sich die Version 2.2 von Apache in den offiziellen Paketquellen. Wer sich für diese Version interessiert, findet im Artikel Apache weitere Informationen.
Ubuntu 14.04 Trusty Tahr
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.
Apache 2.4 ist ab Ubuntu 13.10 in den offiziellen Paketquellen von Ubuntu enthalten und kann über das folgende Paket installiert werden [1]:
apache2
mit apturl
Paketliste zum Kopieren:
sudo apt-get install apache2
sudo aptitude install apache2
Die gezielte Auswahl einer Version (z.B. des Vorgängers 2.2) ist nicht möglich. Dazu muss eine ältere LTS-Version wie z.B. Ubuntu 12.04 installiert werden.
Wer die englischsprachige Dokumentation lokal installieren möchte, kann ein weiteres Paket nutzen:
apache2-doc (optional)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install apache2-doc
sudo aptitude install apache2-doc
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.
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 einfache HTML-Testseite, welche jetzt im Browser zu sehen sein sollte.
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.
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
Alternativ kann man auch den Befehl apache2ctl
benutzen, der allerdings etwas andere Optionen nutzt als der oben beschriebene service
Befehl. 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. Diese Verhalten kann man wie folgt ändern:
sudo update-rc.d -f apache2 remove
entfernt Apache2 aus der Autostart-Liste und
sudo update-rc.d apache2 defaults
fügt in wieder hinzu.
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
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 Nutzern 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
Damit die neuen Rechte greifen, muss man sich einmal ab- und neu anmelden oder den Befehl newgrp verwenden.
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".
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.
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.
Sollte /var/log/ nicht verfügbar sein (zum Beispiel durch ein temporäres Verzeichnis - siehe Tuning) 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
sudo nano /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 heisst.
Updating Virtual Host Settings from Apache 2.2 to Apache 2.4 - Blogbeitrag, 03/2014
Serverdienste weitere Webserver
Diese Revision wurde am 25. Februar 2017 17:20 von nitimax erstellt.