Apache

Wechseln zu: Navigation, Suche
Der Apache HTTP-Server ist ein Produkt der Apache Software Foundation und der meist verbreitete Webserver im Internet, noch vor dem Internet Information Services (IIS) von Microsoft.
Getestet mit openSUSE Empfohlene Artikel Verwandte Artikel
Icon-checked.png

Icon-manual.png Icon-help.png


Apache

Apache logo.png

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

Beispiel Virtueller Host.png

Externe Links