Apache
Getestet mit openSUSE | Empfohlene Artikel | Verwandte Artikel | |||
|
Server Anwendung
Download für openSUSE:
Hersteller: Apache Software Foundation
Lizenz: Apache Lizenz v2.0
Webseite: Projektseite
Funktion
Der Apache-Webserver ist der meistgenutzte Webserver im Internet. Er ist flexibel konfigurierbar und modular aufgebaut: Durch entsprechende Module kann er beispielsweise die Kommunikation zwischen Browser und Webserver verschlüsseln (mod_ssl), als Proxy-Server eingesetzt werden (mod_proxy) oder komplexe Manipulationen von HTTP-Headern (mod_headers) und URLs (mod_rewrite) durchführen.
Der Apache bietet die Möglichkeit, mittels Server seitiger Skriptsprachen Webseiten dynamisch zu erstellen. Häufig verwendete Skriptsprachen dafür sind PHP oder Perl. Diese sind kein Bestandteil des Webservers, sondern müssen ebenfalls entweder als Module eingebunden oder über die CGI-Schnittstelle angesprochen werden. Über das bei der Apache-Installation enthaltene mod_include können so genannte Server Side Includes (SSI) ausgeführt werden. Damit ist es möglich, einfache dynamische Webseiten zu erstellen und den Verwaltungsaufwand von statischen Webseiten zu minimieren.
Installation
Apache 2.4 ist in den offiziellen Paketquellen von openSUSE enthalten und kann wie folgt installiert werden:
sudo zypper in apache2 apache2-example-pages
Möchte man zusätzlich die englischsprachige Dokumentation lokal installieren wählt man noch apache2-doc zusätzlich aus.
Benutzung
Nach der Installation kann der Apache folgendermaßen gestartet werden:
sudo systemctl enable apache2 sudo systemctl start apache2
Er läuft dann auf localhost (http://localhost/ bzw. http://SERVER-IP_ODER_NAME/) auf Port 80 (Standard HTTP-Port) und zeigt eine Webseite an auf der steht "It works!".
Die Inhalte für den Webserver werden in einem als "document root" bezeichneten Verzeichnis abgespeichert. In diesem Verzeichnis "/srv/www/htdocs/" sucht der Apache Webserver zuerst nach HTML-Dateien, die ausgeliefert werden können.
Wenn man mehrere verschieden Webseiten ausliefern möchte, dann konfiguriert man dafür in der Regel verschiedene virtuelle Hosts.
Wie alle anderen Dienste kann der Apache mit dem Systemd-Werkzeug systemctl gestartet und gestoppt werden:
sudo systemctl BEFEHL apache2
Wobei BEFEHL folgenden Inhalt haben kann:
- start - startet den Webserver
- stop - stoppt den Server
- restart - startet den Server neu
- reload - lädt Konfigurationsdateien neu
- force-reload - erzwingt das Laden der Konfigurationsdateien
Alternativ kann auch das Programm apache2ctl verwendet werden.
Konfiguration
Die zentrale Konfigurationsdatei des Apache Web-Servers ist httpd.conf im Verzeichnis /etc/apache2. In der Regel muss sie allerdings nicht bearbeitet werden, da zusätzliche Konfigurationen in separaten Dateien angelegt werden können. Einzelne Module können mit YaST oder manuell aktiviert werden.
Wenn Module manuell aktiviert oder deaktiviert werden sollen, werden dafür die Befehle a2enmod bzw. a2dismod verwendet. Mit a2enmod -l wird eine Liste aller derzeit aktiven Module ausgegeben. Konfigurationsdateien für externe Module befinden sich im Verzeichnis /etc/apache2/conf.d. Der Name der Datei kann beliebig sein, muss aber die Endung .conf haben. Um eine neue Konfigurationsdatei zu aktivieren muss noch der folgende Befehl ausgeführt werden:
sudo a2enmod NAME_DER_DATEI.conf
Die Deaktivierung erfolgt entsprechend mit:
sudo a2dismod NAME_DER_DATEI.conf
Virtuelle Hosts
Mit virtuellen Hosts können viele Webseiten auf einem Apache-Webserver zur Verfügung gestellt werden. Es ist nicht notwendig, für jede dieser Webseiten eine eigene IP Adresse zu haben, alle virtuellen Hosts können sich eine IP-Adresse teilen.
Im Verzeichnis /etc/apache2/vhosts.d/ befindet sich die Beispieldatei vhost.template, die als Vorlage für virtuelle Hosts verwendet werden kann. Für jeden virtuellen Host wird eine eigene Datei angelegt, die zwingend auf .conf enden muss, damit sie aktiviert werden kann:
sudo cp /etc/apache2/vhosts.d/vhost.template /etc/apache2/vhosts.d/deinvhost.conf
In der Konfigurationsdatei des virtuellen Hosts wird unter ServerAdmin die E-Mail-Adresse des Server-Administrators hinterlegt. Die wird u.a. in den Fehlermeldungen des Webservers stehen und ist für den Kontakt zum Administrator erforderlich.
Mit der Direktive ServerName wird der primäre Name der Webseite festgelegt. Dabei ist es zwingend erforderlich, diesen Name entweder per DNS oder alternativ über die /etc/hosts auflösbar zu machen.
Wenn dieselbe Seite unter verschiedenen Hostnamen erreichbar sein soll, sollte die ServerAlias Direktive definiert werden.
Unter der Direktive DocumentRoot wird das Basisverzeichnis des virtuellen Hosts (bzw. der Seite) angegeben. Wenn über den Browser verucht wird, auf http://SERVERNAME/datei.html zuzugreifen, würde der Apache Webserver die Datei /var/www/html/datei.html ausliefern.
Mit der Directory und Location Direktive können Einstellungen und Berechtigungen für die Verzeichnisse des Apache Webservers vergeben werden.
Die wichtigsten Direktiven innerhalb von Directory sind z.B.:
- Options - Optionen für diesen Pfad
- AllowOverride - Was ist innerhalb der Seite mit einer vorhandenen .htaccess erlaubt
- Require - Zugriffsrechte für dieses Verzeichnis angegeben
Beispiel für einen virtuellen Host
Eine funktionierende Konfiguration für den virtuellen Host unter /etc/apache2/vhosts.d/meinvhost.conf könnte wie folgt aussehen:
<VirtualHost *:80> ServerName meinewebseite.example.com ServerAdmin webmaster@localhost DocumentRoot /srv/www/vhosts/meinewebseite.example.com <Directory /srv/www/vhosts/meinewebseite.example.com> Options Indexes FollowSymLinks MultiViews AllowOverride None Require all granted </Directory> ErrorLog /var/log/apache2/error_log LogLevel warn CustomLog /var/log/apache2/access_log combined ServerSignature On </VirtualHost>
Anschließend wird ein Verzeichnis für den "document root" erstellt:
sudo mkdir -p /srv/www/vhosts/meinewebseite.example.com
Und eine HTML-Datei /srv/www/vhosts/meinewebseite.example.com/index.html:
<html><head></head><body><h1>Hallo Welt!</h1></body></html>
Um einen virtuellen Host ohne vorhandenen DNS Eintrag zu testen, muss die Datei /etc/hosts angepasst werden:
127.0.0.1 localhost meinewebseite.example.com
Danach wird der Apache Webserver neu gestartet:
sudo systemctl restart apache2
Anschließend erscheint die Seite im Webbrowser unter der Adresse: meinewebseite.example.com