|
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 |
|
||||
Linux-DistributionAlle 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 UpdateEin 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-SicherungSelbst 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-VerwaltungJede 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-PaketeKomplette 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
|
CompilerDie 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-DateiDas 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. |
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. |
|
Runlevel-EditorJede 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)-ScriptsAuf 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
Befehl ls erzeugt eine Liste aller Dateien im Verzeichnis,
darunter sollte sich nun apache befinden.
# ln -s /etc/init.d/apache2 apache # ls |
▲ Verwendung des SoftLinks:
# apache status
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.# /home/ich/apache status # apache start # apache stop # apache restart ▲ 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. |
StatusWenn 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
Sie können den aktuellen Prozess-Status anzeigen:
# cat /var/run/httpd2.pid
# ps -C httpd2-prefork -F
Statt 1234 setzen sie ihre aktuelle PID ein,
oder eleganter mit Substitution durch backticks:
# ps -p 1234 -F # 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 |
|
UserMit '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 ! |
GroupDer 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-VerwaltungAm 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-RegelungUnabhä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
</Directory>
AllowOverride None Order deny,allow Deny from all
|
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
</Directory>
Allow from all
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">
Ersetzen sie die Adresse 192.168.0.0 durch die
Basis-Adresse ihres LAN.
Order allow,deny
</Directory>
Allow from 192.168.0.0/255.255.255.0
|
|
.htaccess
In der Konfigurations-Datei
/etc/apache2/httpd.conf
wird der Zugang durch eigene 'AccessFiles' geregelt:
AccessFileName .htaccess
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.
<Files ~ "^\.ht">
Order allow,deny
</Files>
Deny from all |
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 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. |
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. |
|
▲ 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. |
|
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 . |
|
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. |
|
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. |
|
Kontrollieren sie, welcher Port in der Apache Konfiguration angegeben ist. Die Zahlen-Angaben der beiden Anweisungen
Listen 80
müssen übereinstimmen. Standard ist Port 80.
ServerName MeinApache: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
|
|
► 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 |
|
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. |
|
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 .php
# AddType application/x-httpd-php .php4 # AddType application/x-httpd-php .php5
# AddType application/x-httpd-php-source .php3s
DirectoryIndex index.php# 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 </IfModule> |
|
Umgebungs-Variable TZ
PHP erwartet auf Linux eine Umgebungs-Variable TZ mit Angabe
der Zeitzone in der Form Region/StadtWenn 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 |