Apache

Der Standard Webserver auf Linux

Apache ist weltweit der Standard-Webserver für kleine und mittelgroße Systeme. Die installierte Anzahl ist größer als die Summe aller anderen Webserver.
OpenSource (keine Lizenzgebühren), schnell, sicher.
Alle gängigen Linux-Distributionen enthalten den Apache Server.
Apache Der weltweit erfolgreichste WebServer
LAMP Standard-Server mit Linux - Apache - MySQL - PHP - Samba
Quellen Apache Server aus der Linux-Distribution oder durch Download
Installation Installation von Apache-Webserver auf Linux-Systemen
Dienst-Verwaltung Dienste (services) sind Hintergrund-Programme ohne Oberfläche
Start & Stop Start, Stop, Restart
Zugangsrechte Auf Linux streng geregelt
Test Einfache Funktionstests
Probleme ? Probleme und Vorschläge zur Behebung
Konfiguration Einstellung der Apache Parameter
Verzeichnisse Arbeits-Verzeichnis, spezielle Verzeichnisse @ Zugriffsrechte
Win-Apache Apache Webserver auf einem Windows (WAMP) - System

Apache - Bezugsquellen

Apache Homepage

Linux-Distribution

Alle gängigen Linux-Distributionen enthalten Apache als Standard Webserver. Bevor sie versuchen, den Apache Webserver zu installieren, sollten sie feststellen, ob der Server bereits installiert ist oder sogar schon auf ihrem Linux-System läuft.
Hinweise dazu finden sie im Kapitel Test.
Das Werkzeug für Installation oder Konfiguration unterscheidet sich je nach Distribution.
Auf SuSE-Linux installieren sie Apache mit YAST | Software | Software installieren, danach Filter Produktivität | Netzwerk | Web | Server. Mindestens das Paket Apache2 - Webserver sollte installiert werden. Normalerweise werden dazu auch die Apache-Module der Programmiersprachen Perl, PHP und Python installiert.

Apache Update

Ein laufendes Linux-Apache System stellt einen erheblichen Wert dar, den man nicht leichtfertig aufs Spiel setzt. Überlegen sie daher gut, ein verläßlich laufendes System durch eine neue Version zu ersetzen.

Gute Distributoren bieten ein Update-Service an: Sie können installierte Pakete in ihrem Linux-System durch eine neue Version (z.B. von Apache) ersetzen. Das ist relativ sicher, weil der Distributor die Integration in ihr System bereits vorbereitet und getestet hat.

Compiler
Eine Variante für versierte EntwicklerInnen ist die Erstellung des gesamten Apache-Programms aus dem Quelltext. Alle Programmteile sind kostenlos und lizenzfrei (OpenSource) erhältlich. Jedes gängige Linux-System enthält das Entwicklungs-Werkzeug (Compiler), um daraus das Server-Programm zu erstellen.
Diese Variante kommt allerdings nur für erfahrene EntwicklerInnen und für Entwicklungs-Server in Frage.

(  Linux + Apache )

Je größer und wichtiger das System, je mehr Daten und User zu betreuen sind, desto höher sind die Anforderungen an einen Produktions-Server.
In einem Arbeits-System muss das Ausfalls-Risiko minimiert werden, daher sind Updates laufender Systeme meistens ausgeschlossen.

In diesem Fall wechseln sie die komplette Distribution, d.h. gleichzeitig auf eine neue Linux- und Apache-Version (und einige andere Komponenten). Der Distributor garantiert die harmonische Zusammenarbeit von System und Webserver. Selbst wenn nicht alle der hunderten oder tausenden Programme einer Linux-Distribution gleich gut getestet wurden - Apache ist als Grundpfeiler jedes Linux-Systems sicher sorgfältig angepasst und getestet.
Ein kompletter System-Wechsel stellt allerdings einen erheblichen Aufwand dar, der je nach Umfang einige Tage oder Wochen in Anspruch nimmt.

Daten-Sicherung

Selbst dann, wenn die Doku von Apache und / oder Linux-Distributor versprechen, vorhandene Daten sauber zu übernehmen, sollten sie vor einem Update unbedingt eine komplette ! Sicherung aller ! Daten vornehmen.

Installation von Apache Webserver auf Linux

Software-Paket-Verwaltung

Jede gängige Linux-Distribution bietet eigene Werkzeug-Programme zur Verwaltung der umfangreichen mitgelieferten Software-Pakete.
Diese Programme arbeiten unterschiedlich, je nach Hersteller und Version.

Suchen sie nach einem oder mehreren Paketen namens "Apache" und ordnen deren Installation an. Oft ist Apache bereits installiert, manchmal auch gestartet. Hilfe dazu finden sie im Kapitel Test dieser Seite.
Gute Verwaltungs-Software prüft die Abhängigkeiten der verlangten Pakete, macht sie auf eventuelle Kollisionen aufmerksam und installiert selbständig andere von der angeforderten Software benötigte Pakete.
Hinweis: Die Paket-Namen unterliegen geringen Veränderungen, oft wird darin auch die Version codiert.

PHP, Perl, Python
Ordnen sie gleichzeitig auch die Installation von Perl, PHP und Python an. (Pakete apache-mod_php, apache-mod_perl, apache-mod_python ). Diese Programmiersprachen ermöglichen die Erstellung von dynamischen Webseiten. Auch wenn sie selbst nicht entwickeln, können sie damit tausende von fertigen Script-Programmen nutzen, die u.a. im Internet kostenlos angeboten werden.
Details zu Entwicklung und Anwendung von Perl und PHP
Auf SuSE-Linux starten sie mit YAST | Software | Software installieren, danach Filter Produktivität | Netzwerk | Web | Server.
Mindestens das Paket Apache2 - Webserver sollte installiert werden.

MySQL
Wenn sie zusätzlich einen MySQL-Datenbank-Server betreiben, installieren sie auch die PHP-Module mysql und mysqli sowie die Perl-Module DBI und DBD-mysql
Das ist natürlich nur sinnvoll, wenn PHP und Perl bereits installiert sind oder gleichzeitig installiert werden.

RPM-Pakete

Komplette Programme oder Updates werden häufig als rpm-Pakete angeboten. Laden sie aus dem Internet nur solche Pakete, die ausdrücklich für ihre Linux-Distribution und -Version (!) bestimmt sind.
Wenn sie bereits eine ältere Apache-Version erfolgreich betreiben, dann sollten sie vor einem rpm-Update unbedingt alle Daten sichern !

Die Installation selbst führen sie als super-user (Administrator) aus. Melden sie sich im Linux-Betriebssystem als root an und öffnen sie ein Konsolen-(Shell)-Fenster
So installieren sie ein RPM-Paket:
# rpm -i /home/ich/neu/apache_xyz.rpm

Compiler

Die Installation eines selbst aus dem Quell-Code hergestellten Server-Programms ist nur für erfahrene EntwicklerInnen ratsam.
Wenn sie noch nie ein Programm compiliert haben, dann üben sie das besser an einem einfacheren Beispiel als Apache.

Programm-Datei

Das ausführbare Server-Programm (binary) trägt traditionell nicht den Namen apache sondern httpd - Normalerweise ist es hier installiert:
/usr/sbin/httpd2

Starten sie den Webserver nicht manuell sondern nur mit den dafür eingerichteten Script-Programmen.

Verwaltung von Apache-Webserver als Dienstprogramm (Service)

Dienstprogramm-(Service)-Verwaltung

Jede gängige Linux-Distribution bietet eigene Werkzeug-Programme zur Verwaltung aller im Hintergrund laufenden Server-Programme.
Diese Programme arbeiten unterschiedlich, je nach Hersteller und Version.
Auf SuSE-Linux starten sie YAST | System | Runlevel Editor. Der Apache-Server (Spalte Dienst: Apache2) sollte aktiviert sein (Spalte Aktiviert: Ja). Falls nicht, ändern sie das manuell. Aktivierte Dienstprogramme werden nach dem Systemstart automatisch gestartet - das ist für Server sinnvoll.

Programm ohne Oberfläche

Ein Dienstprogramm wie der Apache-Server läuft im "Hintergrund", d.h. sie sehen kein Fenster, keine "Bedienungs-Oberfläche" (user interface).
Das ist für AnfängerInnen ungewohnt, aber sinnvoll: Dienstprogramme sollen rasch, unauffällig und zuverlässig arbeiten, und keine Fragen stellen. Auf reinen Server-PC wäre auch kein menschlicher Benutzer da, um darauf zu reagieren, oft fehlt dort sogar der Bildschirm.

Die Konfiguration erfolgt auf Linux-Systemen typisch in ganz normalen Text-Dateien, die man mit jedem Text-Editor öffnen und ansehen (oder ändern - Vorsicht !!) kann.
Die Konfigurations-Datei wird beim Start oder Neustart vom Dienstprogramm gelesen. Die laufende Arbeit wird in Log-Dateien (ebenfalls reiner Text) protokolliert, im Notfall wird ein Mail an die/den AdministratorIn gesendet.

Start & Stop von Apache-Webserver

Ein Dienstprogramm wie der Apache Webserver läuft im Hintergrund und benötigt im normalen Betrieb keinerlei Wartung. Da es nach Systemstart automatisch startet und vor System-Stop kontrolliert 'heruntergefahren' wird, ist ein manueller Start und Stop überflüssig. Ausnahmen davon sind nur dann notwendig, wenn Änderungen in der Konfiguration von Apache oder einem Modul (z.B. PHP oder Perl) vorgenommen wurden:
Die Änderungen treten erst bei Neustart des Servers in Kraft.

Vorsicht

Während der Betriebszeit (wenn noch User angemeldet sind) sollten niemals Änderungen vorgenommen werden, daher normalerweise auch kein Neustart erfolgen.
Nach Abmeldung aller User wird eine Sicherung aller evtl. betroffenen Daten vorgenommen, das sind insbesondere alle Konfigurations-Dateien.
Danach wird die Konfiguration geändert, der Server neu gestartet und sorgfältig getestet.

Wenn die neue Konfiguration erwartungsgemäß funktioniert, ist die Arbeit abgeschlossen.
Wenn die neue Konfiguration nicht funktioniert, dann kehrt man rechtzeitig (!) vor Wieder-Aufnahme des Betriebs zur gesicherten Konfiguration zurück und testet die Änderung auf einem (anderen) Entwicklungs-Server.

Runlevel-Editor

Jede Linux-Distribution bietet ein Werkzeug zur Dienst-Verwaltung, mit welchem ein Dienstprogramm manuell angehalten und neu gestartet werden kann.

Auf SuSE-Linux starten sie YAST | System | Runlevel Editor.
Der Apache Webserver sollte aktiviert sein, d.h. nach Systemstart automatisch starten.

Runlevel

Linux unterscheidet nicht zwischen 'normalen' und Dienstprogrammen (services): Jedes (eigene) Programm kann auch als Dienst gestartet werden. Allerdings sollte es dann keine AnwenderInnen-Oberfläche haben, d.h. keine Fenster öffnen und 'keine Fragen stellen'.

Dienstprogramme werden durch Scripts in diesem Verzeichnis gesteuert:
/etc/init.d
Hier sind Scripts zur Steuerung aller installierten Dienst-Programme vorhanden, für Apache z.B. das Script
/etc/init.d/apache2

Jedes dieser Scripts akzeptiert normalerweise die Argumente status, start, stop und restart
An dieser Stelle können sie Scripts zur Steuerung eigener Programme einfügen.

Weiters befinden sich hier eigene Verzeichnisse für jeden RunLevel, der nach dem System-Start erreicht wird.
Apache wird notrmalerweise in RunLevel 5 gestartet, daher findet man im entsprechenden Verzeichnis diese Scripts
/etc/init.d/rc5.d/Sxxapache2
/etc/init.d/rc5.d/Kxxapache2

Je ein Script wird beim Hochfahren und Herunterfahren des Systems ausgelöst und sorgt für geordneten Start und Abschalten des jeweiligen Programms.
Die Zahlen an Stelle von xx bestimmen die Reihenfolge der Auslösung innerhalb des RunLevels.

Ändern sie nichts an diesen Scripts oder an ihren Namen !
Nach diesem Muster können sie Scripts zur Steuerung eigener Programme einfügen - sinnvoll mit der höchsten Nummer nach dem Einschalten und mit der ersten Nummer vor dem Abschalten.

Konsolen-(shell)-Scripts

Auf Linux-Systemen haben Script-Programme eine zentrale Bedeutung. Ein Script-Programm zur Steuerung des Apache-Servers finden sie (Varianten je nach System) meistens in diesem Pfad:
/etc/init.d/apache2
Sie sollten dieses Script keinesfalls verändern !
Verwendung in einem Konsolen-(shell)-Fenster:
# /etc/init.d/apache2

Eine praktische Möglichkeit ist die Herstellung eines SoftLinks:
Öffnen sie ein Konsolen-(shell)-Fenster und verzweigen sie zu einem beliebigen Verzeichnis (hier zum privaten Verzeichnis von User ich )
# cd /home/ich
# ln -s /etc/init.d/apache2 apache
# ls
Befehl ls erzeugt eine Liste aller Dateien im Verzeichnis, darunter sollte sich nun apache befinden.

Verwendung des SoftLinks:
# apache status
# /home/ich/apache status
# apache start
# apache stop
# apache restart
Wenn der Befehl der 1. Zeile nicht funktioniert, dann ist zu diesem Verzeichnis kein Ausführungs-Pfad (path) definiert. Sie müssen in diesem Fall entweder den Pfad ergänzen oder den kompletten Pfad (2. Zeile) eingeben. Die weiteren Zeilen zeigen die wichtigsten Optionen, welche das Script bietet.

Die meisten Distributionen enthalten kleine Werkzeuge, mit denen sich Konsolen-(shell)-Programme auf Mausklick ausführen lassen, auf SuSE-Linux z.B. das Applet Bookmarks, das sie mit Rechtsklick in die Befehlszeile (am unteren Seitenrand) einfügen können.

Status

Wenn sie wissen wollen, ob der Apache Server gerade läuft, dann gibt es dazu einige Möglichkeiten:

Verwendung eines Konsolen-Scripts (siehe Absatz oberhalb):
# apache status

Der Server speichert seine PID (process id-number) nach Linux-Praxis in einer Text-Datei, allerdings nur dann, wenn er bereits läuft.
# cat /var/run/httpd.pid
# cat /var/run/httpd2.pid
Sie können den aktuellen Prozess-Status anzeigen:
# ps -C httpd2-prefork -F
# ps -p 1234 -F
Statt 1234 setzen sie ihre aktuelle PID ein, oder eleganter mit Substitution durch backticks:
# ps -p `cat /var/run/httpd2.pid` -F

Je nach Konfiguration schreibt der Apache Server laufende Ereignisse in eine Log-Datei, z.B.
/var/log/apache2/access_log
/var/log/apache2/error_log

Jede dieser Informations-Quellen kann natürlich auch durch beliebige Programme verwendet werden (Zugriffsrechte vorausgesetzt):
Sie können beispielsweise die Daten der Log-Datei automatisch auswerten und die Ergebnise als Listen oder Statistik-Grafik auf einer (dynamischen) Webseite anzeigen lassen.

Zugangsrechte

User

Mit 'User' wird jener virtuelle User bezeichnet, welcher das Apache-Programm ausführt, nicht die Gäste des Webservers, die Webseiten von ihm anfordern.
Der Name des Apache-Users ist normalerweise wwwrun

Der Apache-User braucht mindestens Lese-Zugriff (read) auf alle Arbeits-Daten, d.h. normalerweise auf das Verzeichnis
/srv/www
sowie alle Unter-Verzeichnisse und Dateien.

Für einige Verzeichnisse werden Ausführungs-Rechte (execute) benötigt, z.B. für
/srv/www/cgi-bin

Für einige Verzeichnisse müssen auch Schreib-Rechte eingeräumt werden, wenn sie z.B. mit (PHP, Perl)-Script-Programmen andere Dateien erzeugen und zumindest temporär speichern, oder wenn sie den Gästen den Upload von Dateien erlauben. Diese Verzeichnisse sollten von Webseiten oder Script-Programme streng getrennt sein, da sie ein Sicherheits-Risko darstellen können.

Mit diesem Konsolen-Befehl werden alle Daten des laufenden Apache-Servers ausgegeben, in Spalte UID der Apache-User:
# ps -C httpd2-prefork -F
Der Apache-User hat normalerweise den Namen wwwrun

Erteilen sie dem Apache-User nicht mehr Rechte als unbedingt notwendig, keinesfalls jedoch Administrator-(root)-Rechte !

Group

Der Apache-User (siehe links) kann jeder beliebigen Gruppe als Mitglied angehören. Vom System ist er meistens der Gruppe www zugeordnet.
Damit können die Zugangs-Rechte zusätzlich gesteuert werden.
Beachten sie den Grundsatz, dem Apache-User nur so viel an Rechten zu erteilen, wie unbedingt nötig ist.

Auf SuSE-Linux können sie User und Gruppen mit dem komfortablen Administrations-Programm YAST verwalten:
YAST | Sicherheit und Benutzer.

Es ist üblich, den Apache-User wwwrun für den Zugriff auf andere Verzeichnisse in eine allgemeine Gruppe aufzunehmen, und dafür die Rechte mit speziellen Apache-Methoden (s.u. .htaccess ) zu begrenzen.

Web-Verwaltung

Am Server-PC selbst sollte sich kein normaler Arbeitsplatz befinden. Alle Webs werden normalerweise über das lokale Netzwerk (LAN) verwaltet. Damit das technisch möglich ist, brauchen die betreffenden User Schreib- und Lese-Zugriff auf die Verzeichnisse der Webseiten, d.h. normalerweise auf das Verzeichnis
/srv/www/htdocs
und alle enthaltenen Unter-Verzeichnisse und Dateien.

FTP
Der Standard-Zugriff erfolgt mit dem FTP-Protokoll. Das erfordert einen FTP-Server am Server-PC und FTP-Client-Programme für jeden PC, auf dem Webseiten entwickelt werden.
FTP-Client-Programme gibt es für jedes Betriebssystem, z.T. auch kostenlos. Professionelle Web-Editor-Programme enthalten bereits FTP-Funktionen zur Kommunikation mit einem FTP-Server.
Ein FTP-Server ist auch aus anderen Gründen sehr empfehlenswert: Er verwaltet z.B. ein Verzeichnis
/srv/ftp/pub
in welchem gemeinsam genutzte Dateien zum freien Download (read-only) für alle PC des LAN zur Verfügung gestellt werden. Zusätzlich ist es sinnvoll, das Verzeichnis der Webseiten
/srv/www/htdocs
nur für EntwicklerInnen freizugeben (read + write). Das stellt ein erhebliches Risiko dar, z.B. können unabsichtlich alle Web-Daten gelöscht werden. Daher ist es sehr empfehlenswert, diese Einrichtung durch ein System zur automatischen Datensicherung zu ergänzen, die in jeder gängigen Linux-Distribution enthalten ist.
Die Konfiguration des FTP-Servers richtet sich nach der verwendeten Software / Version.
Details zum FTP-Server pureftpd

SMB
Wenn die Web-EntwicklerInnen auf Win-PC arbeiten, dann ist die Einrichtung eines Samba-Servers sinnvoll und üblich.
Damit werden ganze Verzeichnisse eines Linux-Servers als "Netzlaufwerke" für Win-Systeme im lokalen Netzwerk (LAN) zur Verfügung gestellt.
Zur Verwaltung der Webseiten wird das Verzeichnis
/srv/www/htdocs
nur für EntwicklerInnen freigegeben (read + write). Das stellt ein erhebliches Risiko dar, z.B. können unabsichtlich alle Web-Daten gelöscht werden. Daher ist es sehr empfehlenswert, diese Einrichtung durch ein System zur automatischen Datensicherung zu ergänzen, die in jeder gängigen Linux-Distribution enthalten ist.

NFS
Wenn die Web-EntwicklerInnen auf Linux-PC arbeiten, dann ist die Einrichtung eines NFS-Sewrvers sinnvoll. Damit werden ganze Verzeichnisse im lokalen Netzwerk exportiert und können von jedem dazu berechtigten Linux-PC importiert werden. Das Server-Verzeichnis wird dabei 'fugenlos' in den gewünschten Pfad der lokalen Linux-Verzeichnisse integriert.
(Stichworte nfs, mount)

Synchronisation
Wenn der Apache Webserver als Entwicklungs-Zentrum arbeitet, dann wird das gesamte Arbeits-Verzeichnis mit einem entfernten Server (Web-Provider) synchronisiert.
Dieser Vorgang erfolgt am besten über FTP.
Jenes Programm, welches die Synchronisation ausführt, benötigt Lese-Rechte (readonly) für die Web-Daten des eigenen Entwicklungs-Servers.
cgi-bin
Das Verzeichnis
/srv/www/cgi-bin
ist absichtlich nicht im Pfad aller anderen Webseiten enthalten. Darin befinden sich ausführbare Programme und Scripts. Durch den besonderen Pfad sind sie wesentlich besser als 'normale' Webseiten gegen unbefugten Zugriff geschützt.
Dieses Verzeichnis ist daher meist auch durch die hier genannten Dienste (FTP, Samba, NFS) nicht erreichbar. Der Preis der zusätzlichen Sicherheit: Allfällige Änderungen müssen manuell (als privilegierter user root) ausgeführt werden.
SoftLinks (symbolic links)
Diese Objekte erlauben es, Verzeichnisse (zusätzlich zur hierarchischen Organisation) nach logischen Gesichtspunkten zu verknüpfen. Im Gegensatz zu anderen Betriebssystemen erlauben Linux SoftLinks die volle Funktionalität, d.h. sie verhalten sich identisch wie die Original Ziel-Verzeichnisse.

Oft wird der Arbeitsbereich eines Servers (FTP, Samba, NFS) mit SoftLinks ausgeweitet:
# ln -s /home/ich/test /srv/www/htdocs/test

Dieser Befehl erzeugt im Verzeichnis der Webseiten ein virtuelles Verzeichnis test, welches sich in Wirklichkeit im privaten Verzeichnis von user ich befindet. Dafür gelten die Zugangsrechte des Original-Verzeichnisses: Der Server-User wwwrun wird daher sinnvoll in eine Gruppe aufgenommen, welche die gewünschten Zugangsrechte zu diesem Verzeichnis hat. Auch in der Server-Konfiguration muss der Zugriff auf dieses Verzeichnis ausdrücklich erlaubt werden.

Apache Zugangs-Regelung

Unabhängig vom Dateisystem verfügt der Apache Server über ein eigenes System zur Regelung der Zugangsrechte. Damit können die Rechte des Dateisystems nicht ausgeweitet, sondern nur zusätzlich eingeschränkt werden.

Alles verboten
In der Konfigurations-Datei
/etc/apache2/httpd.conf
wird zunächst der Zugang zum gesamten Dateisystem verboten:
<Directory />
Options None
AllowOverride None
Order deny,allow
Deny from all
</Directory>

Manches erlaubt
Später wird durch andere Anweisungen der Zugang zu einzelnen, genau bezeichneten Verzeichnissen freigegeben, z.B. wird in
/etc/apache2/default-server.conf
das Arbeits-Verzeichnis freigegeben:
<Directory "/srv/www/htdocs">
Order allow,deny
Allow from all
</Directory>

Nur für LAN-PC
Diese Variante bietet noch mehr Sicherheit: Nur die PC des eigenen lokalen Netzwerks (LAN) haben Zugriff auf den Webserver.
<Directory "/srv/www/htdocs">
Order allow,deny
Allow from 192.168.0.0/255.255.255.0
</Directory>
Ersetzen sie die Adresse 192.168.0.0 durch die Basis-Adresse ihres LAN.
.htaccess
In der Konfigurations-Datei
/etc/apache2/httpd.conf
wird der Zugang durch eigene 'AccessFiles' geregelt:
AccessFileName .htaccess
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
Wenn Apache in einem Verzeichnis eine Datei mit dem Namen .htaccess findet, dann wird sie wie eine Konfigurations-Datei gelesen und regelt den Zugang zu diesem speziellen Verzeichnis.

Beachten sie den Punkt als erstes Zeichen des Datei-Namens - Damit wird die Datei im Dateisystem 'versteckt'.

So werden auf der Shell-Konsole alle (auch versteckte) Dateien angezeigt:
# ls -l
(Die Option ist ein kleines L, nicht die Zahl 1)

Test von Apache-Webserver

Voraussetzung: Apache Webserver installiert und gestartet.
Der Apache Webserver läuft meistens nach Installation problemlos. Führen sie den ersten Test vor einer Änderung der Konfiguration durch, danach ändern sie die Konfiguration nach Bedarf in kleinen schritten und testen jedesmal den Betrieb.
Die Tests werden zuerst direkt am Server-PC ausgeführt, erst danach auf anderen PC im lokalen Netzwerk (LAN).
Im Kapitel Probleme dieser Seite finden sie Hinweise zur Lösung typischer Anlauf-Schwierigkeiten.

Browser-Programm:

Starten sie einen Browser, z.B. Firefox, Konqueror, Mozilla, Netscape, oder Opera, ...
Ihr Webserver sollte mit jedem gängigen Browser funktionieren.

Ein Browser kann Webserver (nur) dann erreichen, wenn der Server am gleichen PC läuft, oder der PC über das Netzwerk Zugang bis zum Webserver hat.

Proxy-Router:

Das ist ein Dienstprogramm auf einem (Server)-PC (meist ebenfalls als Proxy bezeichnet), welches zwischen dem lokalen Netzwerk (LAN) und dem Internet vermittelt und so den Web-Zugang koordiniert.

Falls sie in ihrem lokalen Netzwerk (LAN) einen Proxy verwenden, dann muss in den meisten Fällen die Browser-Einstellung für den Apache-Webserver angepasst werden.
Der Grund: Ihr eigener Apache-Webserver soll innerhalb des LAN direkt adressiert werden, die Anfragen dürfen nicht über den Proxy ins Internet laufen.

Einstellung für Firefox (kann je nach Version unterschiedlich sein):
Befehl Extras | Einstellungen | Allgemein | Verbindung | Verbindungs-Einstellungen | Kein Proxy für:
Hier sollte immer die eigene Adresse jedes PC eingetragen sein:
"localhost" bzw. "127.0.0.1", dazu die (für Server meist fix eingestellte) IP-Adresse.

Auf allen anderen PC im LAN geben sie als Proxy-Ausnahme Name und IP-Adresse jenes PC ein, auf dem der Apache-Webserver läuft. Der System-Administrator kann auch dabei behilflich sein und die Registrierung dieser Proxy-Ausnahme zentral ausführen.

Achtung: Die Proxy-Ausnahme muss meist für jeden verwendeten Browser an jedem PC einzeln eingegeben werden.
Unabhängig davon führt ein Proxy-Dienst auch andere Aufgaben aus, z.B. das Zwischenspeichern (Caching) häufig verwendeter Webseiten.

Homepage:

Nach Installation ist normalerweise eine provisorische Startseite des Servers verfügbar.
Sie befindet sich (je nach Version) meist hier:
/srv/www/htdocs/index.html

Öffnen sie die Homepage durch Eingabe der HTTP-Adresse in die Browser-Adresszeile:
Am Server-PC selbst sollten diese Adressen funktionieren:
Aus allen PC im lokalen Netzwerk (LAN) und am Server-PC selbst tragen sie Name oder IP-Adresse des Webservers ein:
http://192.168.0.1
Ersetzen sie die Adresse durch die tatsächliche IP-Adresse des Webservers.

Der Browser sollte die provisorische Homepage des Servers anzeigen, bei neueren Versionen eine Minimal-Webseite ("It works !").

Firewall:

Heute verfügt jeder (Server)-PC über einen Firewall, das ist eine Software zum Schutz gegen unerwünschte Eindringlinge aus dem Netzwerk. Sie sollten damit rechnen, dass der Zugriff auf einen Webserver im lokalen Netzwerk (LAN) sowohl vom Server-PC selbst als auch von jedem einzelnen PC evtl. blockiert wird.
Je nach Firewall-Software erfolgt die Freigabe auf unterschiedliche Weise, kann daher hier nicht vorgestellt werden.

Für Anfragen aus dem eigenen LAN müssen sie den Zugriff auf ihren Webserver (Port 80) freigeben.
Wenn sie aus ihrem LAN keine Verbindung (ping) mit ihrem Webserver aufnehmen können, und alle anderen Bedingungen erfüllt sind, dann können sie die Firewall-Software kurzfristig abschalten - Das bringt Klarheit, ob der Zugriff dadurch blockiert wird.

Wenn sie ihren Webserver auch für Zugriffe aus dem weltweiten Internet freigeben wollen, dann sollten sie vorher alle verfügbaren Sicherheits-Maßnahmen genau studieren und ausgiebig testen.

Probleme mit dem Apache Webserver

Apache ist eines der stabilsten Programme und läuft nach Installation meist ohne besondere Einstellung problemlos. Konsultieren sie bei problemen die zahlreichen FAQ-Webseiten und Foren im Internet: Sie sind sicher nicht die/der erste mit dem bei ihnen aufgetretenen Problem, und die Chance ist sehr groß, dass sie Hinweise zur Lösung erhalten.
Führen sie jeden Test zuerst direkt am Server-PC aus. Nur dann, wenn der Test am Server-PC funktioniert, hat es einen Sinn, die gleiche Funktion von einem anderen PC im lokalen Netzwerk (LAN) zu testen.
Server nicht installiert
Professionelle Linux-Distributionen installieren den Apache Webserver normalerweise ungefragt.
Neuere Linux-Distributionen sind immer öfter für AnwenderInnen-PC ausgelegt und installieren den Webserver nur auf Anfrage.
Kontrollieren sie mit dem Software-Verwaltungs-Programm ihrer Distribution, ob Apache installiert ist und holen sie die Installation bei Bedarf nach.
Details dazu im Kapitel Installation.
Server nicht gestartet
Auf einem Server-PC sollte der Webserver automatisch beim Hochfahren des Betriebssystems starten.
Kontrollieren sie, ob der Apache-Dienst läuft, und ob er für automatischen Start eingerichtet ist.
Details dazu im Kapitel Start & Stop .
Fehler in der Konfiguration
Wenn der Apache-Server bereits funktioniert hat, jedoch nach Änderung der Konfiguration nicht mehr (korrekt) läuft, dann liegt der Fehler in einer der Konfigurations-Dateien.

Kehren sie zur vorherigen Konfiguration zurück und überprüfen sie sorgfältig jedes kleinste Detail der Änderung. Führen sie Änderungen nur in möglichst kleinen Schritten durch.
Details dazu im Kapitel Konfiguration.
Fehlende oder defekte Index-Datei
Kontrollieren sie, ob sich in dem durch DocumentRoot (Konfiguration) definierten Verzeichnis eine 'Homepage' index.html befindet.
Linux unterscheidet Groß- und Kleinbuchstaben in Pfad-Angaben: Pfad und Dateiname müssen exakt übereinstimmen.

Wenn die index-Datei fehlt, defekt oder zu kompliziert ist, wird sie zumindest temporär durch eine Minimal-Webseite ersetzt. Damit sollte sich der Server auf Anfrage melden.
Port-Probleme
Kontrollieren sie, welcher Port in der Apache Konfiguration angegeben ist. Die Zahlen-Angaben der beiden Anweisungen
Listen 80
ServerName MeinApache:80
müssen übereinstimmen. Standard ist Port 80.

Wenn ein anderer Port als 80 eingestellt ist, müssen sie das im Adressfeld des Browsers angeben.
Ein Webserver auf Port 8080 wird z.B. so adressiert:
http://localhost:8080
Browser-Probleme
Wenn ihr lokales Netzwerk (LAN) über einen Proxy-Server (Router) mit dem Internet verbunden wird, dann ist die Proxy-Adresse in der Konfiguration jedes Browsers an jedem PC eingetragen: Der Proxy erhält dann alle Web-Anfragen aller PC des LAN.

Ihr eigener Webserver kann nur dann erreicht werden, wenn seine Adresse als Ausnahme in der Konfiguration aller Browser eingetragen ist.
Details im Kapitel Test
Netzwerk-Probleme
Wenn die Tests auf dem Server-PC funktionieren, jedoch nicht auf einem anderen PC im lokalen Netzwerk, dann liegt vermutlich ein Netzwerk-Problem vor.

Die Ausführung von Netzwerk-Tests ergibt nur dann einen Sinn, wenn sie den Server direkt am Server-PC getestet haben und er dort korrekt läuft.
Ping: Ist der Server-PC erreichbar ?
Versuchen sie, den Server-PC mit dem Werkzeug-Programm ping zu erreichen, das auf jedem Betriebssystem verfügbar ist. Dazu benötigen sie die Internet-(IP)-Adresse des Server-PC.
Wenn der Server in kurzer Zeit (<1..10ms) antwortet, dann funktioniert zumindest die grundlegende Netzwerk-Verbindung. Suchen sie den Fehler in der übergeordneten Software.
Wenn sie keine Antwort erhalten, überprüfen sie die Hardware.
Netzwerk-Hardware ?
Wenn der Server auf einen Ping nicht antwortet, dann kann er vermutlich auch mit keinem anderen Programm erreicht werden. Beheben sie das Netzwerk-Problem und wiederholen sie den Test.
Moderne Netzwerk-Karten haben neben dem Netzwerk-Stecker grüne Leuchtdioden eingebaut. Sie leuchten (nur dann), wenn das Netzwerk korrekt angeschlossen ist. Das gleiche gilt für Hubs (Netzwerk-Verteiler): Die grüne Anzeige leuchtet nur dann, wenn die Hardware-Verbindung funktioniert.
Wenn sie keine grüne Anzeige erhalten, tauschen sie das betreffende Netzwerk-Kabel. Nur in sehr seltenen Fällen sind andere Netzwerk-Komponenten defekt.
Wenn die Hardware funktioniert (grüne Anzeige), dann sollte auch ein Ping (s.o.) gelingen. Falls nicht, haben sie mit ziemlicher Wahrscheinlichkeit beim Ping die falsche IP-Adresse verwendet.

Prüfen sie die Konfiguration der Netzwerk-Karte(n), auf SuSE Linux mit YAST | Netzwerk-Geräte | Netzwerk-Karte

Versuchen sie alle Ping-Kombinationen:
Ping vom Server zu verschiedenen PC und umgekehrt, zwischen den PC in jeweils beide Richtungen, usw. Das Ergebnis zeigt, wo der Fehler liegt.
Firewall-Probleme Firewall-Probleme
Wenn der Ping zum Webserver funktioniert, der Webserver jedoch vom Browser nicht erreichbar ist, dann kann ein Firewall den Zugang verhindern. Sowohl am Server als auch an jedem einzelnen PC kann ein Firewall die Verbindung mit dem Webserver unterbinden.
Kontrollieren sie die Firewall-Einstellungen:

Am Server sollten eingehende Anfragen aus dem eigenen Netzwerk auf Port 80 erlaubt sein.
Jeder einzelne PC muss auf diesem Port ausgehende Anfragen stellen und auf verschiedenen Antwort-Ports empfangen dürfen.

Wenn die Firewall-Einstellungen korrekt erscheinen, können sie beide Firewalls (Server + Client-PC) probeweise für einige Minuten abschalten. Testen sie, ob jetzt die Verbindung klappt:

Wenn ja, dann müssen sie die Firewall Einstellungen ändern, damit ist das Problem behoben.

Extrem (paranoid) eingestellte Firewalls erlauben nicht einmal einen Ping an den Server. In diesem Fall sollten sie entweder die Einstellung lockern oder auf einen Server ganz verzichten, da er unter solchen Bedingungen nicht arbeiten kann.

Konfiguration des Apache-Webservers

Die Konfiguration von Apache Version 1 wurde mit einer einzigen Text-Datei eingestellt. Das führte zu 2 Problemen:
- Die Datei wurde recht groß und für Amateure unübersichtlich.
- Spezielle Einstellungen wurden bei jedem Update überschrieben, mussten daher mühsam wieder neu eingetragen werden.
Ab Apache Version 2 ist die Konfiguration auf mehrere Text-Dateien aufgeteilt. Das hat Vorteile:
+ Die Konfiguration einzelner Apache-Teilgebiete ist in eigene Dateien ausgelagert: Diese können unabhängig verändert oder ausgetauscht werden, ohne die übrige Konfiguration zu ändern.
- Die Übersicht ist dadurch nicht besser geworden. Leider ist es besonders für Amateure mühsam, bestimmte Details der Konfiguration in den zahlreichen Dateien zu finden. Allerdings sind alle Dateien gut dokumentiert.

Strategie

Lesen sie die Dokumentation !
Führen sie vor jeder Änderung der Konfiguration einen Funktions ↑ Test aus.
Legen sie vor jeder Änderung der Konfiguration eine Sicherungs-Kopie aller Konfigurations-Dateien an.

Ändern sie immer nur ein kleines Detail der Konfiguration, niemals mehrere Einträge gleichzeitig.
Dokumentieren sie jede Änderung mit Kommentaren direkt in der jeweiligen Text-Datei.
Wiederholen sie den Funktions-Test nach Ausführung der Änderung und Neustart des Apache-Servers.

Organisation


Übergeordnete Steuerung:
Professionelle Linux-Distrubutionen enthalten eigene Script-Programme zur Erzeugung (!) der Apache Konfigurations-Dateien. In diesem Fall kann eine manuelle Änderung der eigentlichen Konfigurations-Dateien sinnlos sein, da diese Änderungen evtl. bei jedem Systemstart oder Apache-Start überschrieben werden.

+ Auf SuSE-Linux befindet sich die übergeordnete Konfiguration in
/etc/sysconfig/apache2
Diese Text-Datei ist recht gut dokumentiert.
Sie wird von diesem Script gelesen und zur automatischen Herstellung der Apache Konfigurations-Dateien verwendet:
/usr/sbin/rcapache2

+ Die wichtigste Funktion: Geben sie in die übergeordnete Konfiguration einen oder mehrere Pfade zu eigenen Konfigurations-Verzeichnissen an. Diese Pfade sollten ausserhalb von /etc/apache2 liegen und sind daher auch von Neu-Installation oder Update der Software nicht betroffen, z.B.
/etc/my_apache2

+ Organisieren sie alle gewünschten Änderungen der Konfiguration in Text-Dateien, die in ihren eigenen bezeichneten Verzeichnissen liegen.
+ Wenn unklar ist, ob und welche Dateien das übergeordnete Script überschreibt, dann fügen sie in eine Text-Datei einen # Kommentar ein, starten sie System und / oder Apache neu, und sehen sich die Datei danach nochmals an.

Apache-Konfigurations-Verzeichnis
Die gesamte Konfiguration befindet sich in diesem Pfad:
/etc/apache2
Beachten sie: Wenn ihre Linux-Distribution ein übergeordnetes Script (siehe oben) enthält, dann sollten sie nicht die Dateien im Konfigurations-Verzeichnis ändern, sondern diese durch eigene Dateien in einem anderen Pfad ergänzen !

httpd.conf
Die zentrale Datei der Apache-Konfiguration ist
/etc/apache2/httpd.conf
Sie ist direkt in der Datei recht gut kommentiert. Kommentare beginnen mit dem # Zeichen, alle anderen Zeilen enthalten Anweisungen.
Die Gliederung umfasst die Kapitel:
+  Global Environment
+  'Main' server configuration
+  Virtual server configuration
Die Datei enthält nur wenige direkte Einstellungen, dafür aber viele Include-Befehle wie z.B.
Include /etc/apache2/sysconfig.d/loadmodule.conf

Include
Jeder einzelne Include-Befehl liest die darin angegebene Datei und ergänzt damit die Apache Konfiguration. Spätere Einträge überschreiben dabei frühere.
Ihre eigenen Einstellungen sollten daher möglichst spät 'Includiert' werden.
Apache-Module
Die Konfiguration der einzelnen Module ist in eigene Dateien ausgelagert. Rechts das wichtige Beispiel
/etc/apache2/conf.d/php5.conf

Die Anweisungen für die einzelnen Module werden in einen <If>-Block eingeschlossen. Damit kann die Datei unverändert im Konfigurations-Verzeichnis bleiben, auch wenn das Modul selbst abgeschaltet sein sollte.

Die PHP-Anweisungen sind sehr üppig gehalten. Für normale Anwendung (nur *.php Dateien) können die Anweisungen in grauer Schrift wegfallen.

Mit AddType wird festgelegt, alle Dateien mit Namen *.php als PHP-Script-Programme zu behandeln.
Mit DirectoryIndex wird bestimmt, ein Script (dynamische Webseite) index.php auszuführen, wenn vom Browser nur der Name eines Verzeichnisses (ohne Datei) angefordert wurde, und sich darin keine der vorher festgelegten Dateien (index.html, index.htm, ..) befindet.
<IfModule mod_php5.c>
# AddType application/x-httpd-php .php3
# AddType application/x-httpd-php .php4
# AddType application/x-httpd-php .php5
AddType application/x-httpd-php .php
# AddType application/x-httpd-php-source .php3s
# AddType application/x-httpd-php-source .php4s
# AddType application/x-httpd-php-source .php5s
# AddType application/x-httpd-php-source .phps
# DirectoryIndex index.php3
# DirectoryIndex index.php4
# DirectoryIndex index.php5
DirectoryIndex index.php
</IfModule>
Umgebungs-Variable TZ
PHP erwartet auf Linux eine Umgebungs-Variable TZ mit Angabe der Zeitzone in der Form Region/Stadt
Wenn diese Umgebungs-Variable nicht existiert, dann funktioniert PHP einwandfrei, erzeugt jedoch → Warnungen bei Verwendung von → Datum & Zeit-Funktionen.
Quick-&-Dirty-Lösung:
Erzeugen sie eine Text-Datei /etc/profile.local und tragen sie (in Mitteleuropa) diese Zeile ein:
export TZ="Europe/Vienna"
Mit dem nächsten System-Neustart ist die Umgebungs-Variable TZ gesetzt und wird von PHP verwendet.
Details im Kapitel Linux & Datum & Zeit

XHTML CSS