Inhaltsverzeichnis

, , , , , ,

Tipp HTTP-Server (1)

letzte inhaltliche Überarbeitung: 09.09.2009

1. Apache - DER HTTP-Server in der Linux (und Windowswelt) - Teil 1

1.1. Allgemeine Beschreibung

Apache ist ein kompletter und sehr komplexer HTTP-Server der mittels Modulen und Plugins um zusätzliche und neue Eigenschaften erweitert und ergänzt werden kann.

Dieser Server läuft hinter 60-70% aller Internet-Seiten da er sich im Laufe der Zeit durch ständige Code-Pflege und viele Patches (this is a patchi Server) eine hervorragende Stabilität und Anpassbarkeit an die verschiedensten Einsatzszenarien erworben hat.

Das Programm ist für Linux kostenlos und Open-Source. Darüberhinaus gibt es Versionen für MS-Windows ab NT, NovellNetware, HP MPE/iX, UnixWare und TPE.

1.2. Installation

Ich habe Apache einfach von der CD meiner Distribution bzw. aus dem Internet als RPM-Paket installiert. Dabei sollte man wieder beachten → im Internet nach Updates zu suchen und diese dann auch einzuspielen Tipp Linux-Grundlagen (1)>(RPM-Pakete updaten). Heutzutage wird dies durch die Softwareverwaltung bzw. den SW-Paketmanager im Rahmen der regelmäßigen Updates erledigt.

Beachte: sobald ihr eine neue Version des Apache-Servers einspielt oder darauf upgradet, müssen auch die dazu gehörigen Module eingespielt (erneuert) werden. Heutzutage wird dies durch die Softwareverwaltung bzw. den SW-Paketmanager erledigt.

1.3. Konfiguration

Die (Haupt-)Konfigurationsdatei von Apache heißt httpd.conf und liegt unterhalb von /etc/httpd. Die Konfigurationsoptionen werden meist in Form von Option Wert angegeben. Zusätzlich gibt es Abschnitte die von Start- und End-'Tags' eingeschlossen sind. Alle dazwischen liegenden Optionen und Einstellungen gelten für dieses (von den 'Tags' eingeschlossene) Objekt.

Das folgende Beispiel zeigt einen solchen Abschnitt (die Hochkommas dienen nur zum Sichtbarmachen der 'Tags'). Darin wird bestimmt, das nur wenn SSL definiert ist die darin enthaltenen Optionen („lauschen“ an Port 80 und 443) wirksam werden.

<IfDefine SSL>
Listen 80
Listen 443
</IfDefine>

Im nächsten „Abschnitt“ werden Optionen für das Root-Verzeichnis („/“) des Servers festgelegt:

<Directory />
    AuthUserFile  /etc/httpd/passwd
    AuthGroupFile /etc/httpd/group
    Options +FollowSymLinks +Multiviews
    AllowOverride None
</Directory>

Die HTML-, Bild- und Script(CGI)-Dateien liegen im Normalfall in Unterverzeichnissen von /usr/local/httpd. Bei SuSE 8.1 wurde dieser Pfad geändert. Neuerdings findet man das Apache-root-Verzeichnis unter /srv/www.

1.3.1 Bedeutung der Konfigurationsoptionen

Nachfolgend werde ich versuchen die wichtigsten Optionen zur Konfiguration von Apache in Ihrer Bedeutung zu erklären, oder zumindest zu übersetzen. Die meisten Einstellungen kann man so übernehmen, wie es von der SuSE-Installation vorgegeben wurde. Die wenigen Werte die ich geändert oder angepasst habe markiere ich in der folgenden Liste ROT.

ServerType inetd - inetd nur auf Unix-Systemen verfügbar (Server wird bei Anfragen an den Server-Host über inetd gestartet)
standalone - standalone (Defaultwert; für uns geeignet)
ServerRoot „/usr/local/httpd“ Wurzelverzeichnis in dem die darzustellenden Dateien (cgi-Skripte, HTML-Seiten, Bilder) dieses Servers liegen;
für virtuelle Server werden eigene Root-Verzeichnisse festgelegt
LockFile [Pfad/Name] Pfad und Namen der „Lock-Datei“
hier werden Zugriffe auf Dateien aufgezeichnet und diese Dateien teilweise gesperrt (speziell beim Schreiben darauf)
PidFile [Pfad/Name] In diese Datei wird beim Start des Servers die ProzessID des Serverprozesses geschrieben
ScoreBoardFile [Pfad/Name] In diese Datei werden vom laufenden Server interne ProzessInformationen geschrieben (zwei getrennte Serverinstanzen sollten nicht auf ein und dieselbe Datei zugreifen!!!)
Timeout 300 Anzahl von Sekunden, bevor der Empfang bzw. Versand von Seiten mit einem Timeout beendet wird.
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
MinSpareServers 1 Festlegung einer Mindestanzahl an aktiven Serverprozessen,
für stark frequentierte Sites sollte man diese Zahl höher setzen,
bei SuSE 8.1 wird dieser Wert durch SuSEconfig entsprechend dem Wert der Variablen HTTPD_PERFORMANCE in /etc/sysconfig/apache gesetzt.
MaxSpareServers 1 s.o. ⇒ Maximale Anzahl Server
StartServers 1 Anzahl der beim Systemstart zu startenden Server ⇒ Variable s.o.
MaxClients 150 Erlaubte maximale Anzahl gleichzeitig anfragender Clients ⇒ Variable s.o.
MaxRequestsPerChild 0
Listen 192.168.100.50:80 Auf welche IP-Adresse:Port (außer Standard) lauscht Apache;
auf jeder neuen Zeile kann man weitere Listen IP:Port-Kombinationen angeben;
anpassen an Virtuelle Domains;
wenn hier nicht eingeschränkt lauscht Apache auf alle eingehenden IP's und den Default-Port
Listen 192.168.100.50:443
Listen 192.168.100.51:80
Listen 192.168.100.51:443
Listen 192.168.100.52:80
Listen 192.168.100.52:443
Port 80 Standardport auf dem Apache lauscht (irgendeine IP)
<if define ssl> [Optionen] Wenn SSL definiert ist, dann … ⇒ [Optionen], im o. g. Beispiel: lauschen auf Port 80 und 443
[Optionen]
[Optionen]
User wwwrun User und Gruppe unter denen Apache laufen soll (als root laufen lassen bedeutet ein hohes Sicherheitsrisiko)
Group nogroup
ServerAdmin webmaster@meine-domain.de Mail-Adresse wird bei Error-Seiten mit angezeigt; bei SuSE 8.1mithilfe von HTTPD_SEC_SERVERADMIN in /etc/sysconfig/apache gesetzt
ServerName mein-intranet.meine-domain.de Name unter dem der HTTP-server ansprechbar sein soll
DocumentRoot /srv/www/htdocs Verzeichnis mit den anzuzeigenden HTML-, PHP- und anderen Dateien.
<directory /> [Optionen] Hier werden für alle von Apache benutzten Verzeichnisse grundlegende Sicherheitsrichtlinien festgeschrieben.
Soll später ein Verzeichnis anders (legerer) behandelt werden, muß speziell für dieses oder ein übergeordnetes die Restriktionen gelockert werden.
[Optionen]
[Optionen]
AuthUserFile [Pfad/Name] Pfad und Name einer Username-Passwort Datei zur Berechtigungsprüfung
AuthGroupFile [Pfad/Name] Pfad und Name einer Group:Username-Datei zur Berechtigungsprüfung
Options -FollowSymlinks
+Multiviews
AllowOverride None Durch eine .htaccess-Datei mit entsprechend gesetzten Berechtigungen, können die global festgelegten Limitierungen nicht umgangen werden (für dieses Verzeichnis)

… der Installation des Apache-HTTP-Servers, muß man in der Datei “/etc/httpd/httpd.conf“ noch so einiges anpassen.

Hier könnt ihr meine <a href=„downloads/apache/httpd.conf“>„/etc/httpd/httpd.conf“</a> herunterladen oder einfach mal so reinschauen.

Sobald ich noch etwas Zeit finde baue ich meine Konfigurationtips noch etwas aus. Bis dahin bitte ich euch um etwas Geduld.

Die wichtigsten Teile habe ich mal an das Ende der Datei geschrieben. Hierbei handelt es sich um „include-Anweisungen“ mit denen man andere Konfigurationsdateien in die große einbinden kann.

Das habe ich mit meinen virtuellen Domains so gemacht. Damit ich alles auf einem Haufen und auch etwas übersichtlich habe, habe ich alle Angaben für diese (IP-basierten) virtuellen Domains in extra Konfigurations-Dateien zusammen gefasst. Hier habe ich aber noch kein extra SSL-Zertifikat für jede Domain erstellt, geschweige denn eingebunden.

Hier nur der Übersichtlichkeit halber diese Einbindung der Include-Dateien, da die Datei „httpd.conf“ doch sehr lang ist:

    Include /etc/httpd/suse_include.conf
    #############################################
    # Einbinden von virtuellen Hosts/Domains    #
    #############################################

Include /etc/httpd/www.sw-meerane.de/httpd.conf
Include /etc/httpd/swm-intranet/httpd.conf
Include /etc/httpd/www.tei-lin-net.de/httpd.conf
Include /etc/httpd/test-site/httpd.conf

    ### Vorlage - nur noch die /your-domain/httpd.conf anpassen
    # Include /etc/httpd/your-domain/httpd.conf