Betrieb und grundlegende Konfiguration von Apache

Wichtung: 4

Beschreibung: Die Kandidaten sollen in der Lage sein, Apache zu betreiben und eine grundlegende Konfiguration vorzunehmen. Fortgeschrittene Anpassungen sind nicht inbegriffen.

Wichtigste Wissensgebiete:
Einfache Parameter in den Konfigurationsdateien von Apache verändern.
Starten und Stoppen des httpd und Neustart nach Konfigurationsveränderungen.
Automatischen Start des httpd beim Bootprozess einrichten.

Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
/etc/apache2/
httpd.conf
apache2ctl
apachectl
httpd

Apache HTTP-Server

In der LPIC-1-Prüfung werden ähnlich zum Thema sendmail nur grundlegende Kenntnisse zum Apache-Webserver vorausgesetzt. Der Apache-Webserver gehört neben dem Internet Information Server (IIS) zu den weitverbreitesten Webservern.

Die zentrale Konfigurationsdatei ist die /etc/apache2/httpd.conf, welche je nach Distribution und Version auch in einem anderen Verzeichnis liegen kann. Grundsätzlich können sämtliche Einstellungen in der Konfigurationsdatei httpd.conf abgelegt werden, aber in der Praxis werden bestimmte Sektionen in weitere Dateien ausgegliedert. Beispielsweise werden Einstellungen zu den zu ladenden Modulen in der Datei /etc/apache2/conf/modules.conf eingetragen. Diese Datei muss aber mittels include in die Datei httpd.conf eingebunden werden. Somit kann man sich auch eine ganz eigene Struktur erstellen.

Wichtige Einstellungen des Apache-Webserver

Wie bereits erwähnt erfolgt die Konfiguration des Apache-Werbservers in der Datei /etc/apache2/httpd.conf. Die wichtigsten Einstellungen werden nun hier erläutert:

Globale Einstellungen
ServerType standalone|inetd = Apache wird als eigenständiger Dämon oder durch inetd gestartet
ServerRoot "/usr/lib/apache2" = Verzeichnis der benötigten Bibliotheken, Modulen, etc, die zum Betrieb des Apache benötigt werden
LockFile /var/lock/subsys/httpd/httpd.accept.lock = Lock-File des Apache. Überprüfung, ob der Apache bereits gestartet ist oder nicht
PidFile /var/run/httpd.pid = Wird wie die Lockdatei beim Starten angelegt. Festlegung der Prozess-ID (u.a. zum späteren Beenden des Prozesses)
Timeout 300 = Zeit in Sekunden bis zum Timeout, die der Server beim Senden und Empfangen von Daten wartet.
KeepAlive On = KeepAlive ermöglicht es, mehrere Transfers pro Verbindung zuzulassen (On) oder zu verbieten (Off).
MaxKeepAliveRequests 100 = Maximale Menge der zulässigen Verbindungen, ohne erneuten TCP-Handshake.
KeepAliveTimeout 15 = Maximale Auszeit bis zur nächsten Verbindung ohne erneuten Handshake
StartServers 1 = Anzahl der Serverprozesse, die beim Start geladen werden sollen
MinSpareServers 1 = Minimale Anzahl der unbenutzten Serverprozesse (Childs). Bei Unterschreitung werden neue Server gestartet
MaxSpareServers 1 = Maximale Anzahl unbenutzter Serverprozesse (Childs). Bei Überschreitung werden unbenutzte Serverprozesse beendet
MaxClients 150 = Maximale Anzahl gleichzeitiger TCP-Verbindungen
MaxRequestsPerChild 0 = Anzahl der abgearbeiteten Aufträgen. Bei Überschreitung wird ein Child-Prozess beendet. Damit wird verhidert, dass ein Server-Child nicht mehr als eine bestimmte Anzahl beantwortet. Außerdem bleibt ein Prozess nicht über Tage hängen.

Hauptkonfiguration
Port 80 = Portnummer, auf die der Apache lauscht
User wwwrun = UserID, unter der die Child-Prozesse des Servers laufen
Group apache = Gruppenmitgliedschaft der Child-Prozesse
Listen 80 = Portnummer, in diesem Falle sind aber mehrere Angaben möglich
ServerAdmin user@gmx.de = E-Mail-Adresse des Administrators
DocumentRoot "/var/www/localhost/htdocs" = Dokumentenverzeichnis. Hier werden die Webseiten abgelegt
DirectoryIndex index.html index.php = Startdokumente

Directory & Location - Einstellungen für Verzeichnisse

Die Direktive Options legt fest, welche besonderen Eigenschaften ein bestimmtes Verzeichnis (mitsamt seinen Unterverzeichnissen) besitzen soll.

None = Schaltet sämtliche Optionen ab
Indexes = Wenn Verzeichnis aufgerufen wird, wird die mittels DirectoryIndex (siehe oben) festgelegte Indexdatei angezeigt.
FollowSymLinks = Symbolische Links innerhalb des Verzeichnisses werden aufgelöst – Apache liefert das entsprechende Ziel des Links aus.
SymLinksIfOwnerMatch = Symbolische Links werden nur verfolgt, wenn Apache der Eigentümer ist
ExecCGI = Ermöglichen des Ausführens von CGI-Skripten
Includes = Server Side Includes (SSI) sind erlaubt
IncludesNOEXEC = Server Side Includes (SSI) sind erlaubt, aber keine ausführbaren Skripte und Programme
MultiViews = Auslieferung alternativer Dokumente für unterschiedliche Sprach-, Zeichensatz- oder Dateityp-Präferenzen
All = Alle genannten Optionen außer MultiViews. Wenn Options für ein Verzeichnis nicht angegeben wird, ist dies der Standardwert.

Beispiele:

<Directory /var/www/localhost/htdocs>
AllowOverride None
</Directory>

<Directory /home/>
AllowOverride FileInfo
</Directory>

<Directory /var/www/localhost/htdocs/web2>
Order Deny,Allow
Deny from All
</Directory>

Die Direktive <Location> begrenzt die Reichweite der enthaltenen Anweisungen auf URLs. Sie ist der Direktive <Directory> ähnlich und startet einen Abschnitt, der mit der Anweisung </Location> abgeschlossen wird. Zur besseren Erklärung ist auf der Apache-Webseite folgendes zu lesen:

Wann sollte<Location> verwendet werden?

Verwenden Sie <Location>, um Anweisungen auf Inhalte anzuwenden, die außerhalb des Dateisystems abgelegt sind. Benutzen Sie <Directory> und <Files> für Inhalte, die innerhalb des Dateisystems abgelegt sind. Eine Ausnahme bildet <Location />, welches ein einfacher Weg ist, um eine Konfiguration auf den gesamten Server anzuwenden.

Scriptalias

Um zu verhindern, dass die Anwender in jedem Verzeichnis Skripte ausführen dürfen, kann man für bestimmte Verzeichnisse dieses ermöglichen.

ScriptAlias /cgi-bin/ "/var/www/localhost/htdocs/cgi-bin/"

Das bedeutet, dass jede aufgerufene URL endend auf /cgi-bin/ auf das Verzeichnis /var/www/localhost/htdocs/cgi-bin/ verweist. Ruft man beispielsweise www.pc-erfahrung.de/cgi-bin/test.pl auf, so befindet sich das CGI-Skript test.pl nicht im eigentlich Verzeichnis von www.pc-erfahrung.de, sondern in /var/www/localhost/htdocs/cgi-bin/.

Dem Verzeichnis für die CGI-Skripte muss man nun noch die entsprechenden Ausführrechte erteilen:

  <Directory "/var/www/localhost/htdocs/cgi-bin">
Options FollowSymLinks
Options ExecCGI
</Directory>

vhosts - virtuelle Server

Natürlich ist es möglich, auf einem Webserver mehrere Webseiten zu betreiben. Hierbei hat man die Möglichkeit, dem Linux-System mehrere IP-Adressen zu vergeben, so dass jede Webseite über die IP-Adresse aufgelöst wird, oder man konfiguriert die VHost-Einträge so, dass der Domain-Name analysiert wird.

NameVirtualHost 212.67.55.3
NameVirtualHost 212.67.55.4

<VirtualHost 212.67.55.3>
ServerName www.ich-bin-gut.de
ServerAlias ich-bin-gut.de
DocumentRoot /var/www/localhost/htdocs/web_ich-bin-gut.de
ServerAdmin root@ich-bin-gut.de
</VirtualHost>

<VirtualHost 212.67.55.3>
ServerName www.meine-neue-homepage.de
ServerAdmin root@meine-neue-homepage.de
DocumentRoot /var/www/localhost/htdocs/web_meine-neue-homepage.de
</VirtualHost>

<VirtualHost 212.67.55.4>
ServerName www.noch-eine-homepage.de
ServerAdmin root@noch-eine-homepage.de
DocumentRoot /var/www/localhost/htdocs/web_noch-eine-homepage.de
</VirtualHost>

In diesem Fall wird davon ausgegangen, dass für das Linux-System zwei IP-Adressen eingerichtet wurden. Entweder es sind zwei Netzwerkkarten eingebaut oder einer Netzwerkkarte wurden zwei IP-Adressen zugewiesen. Mit den Einträgen NameVirtualHost wurde Apache beauftragt, Anfragen für die IP-Adressen 212.67.55.3 und 212.67.55.4 entgegenzunehmen.

Die Domains www.ich-bin-gut.de und www.meine-neue-homepage.de sind beide über die IP-Adresse 212.67.55.3 erreichbar. Durch den Virtual-Host-Eintrag kann der Apache aber die Namen auflösen und die Anfragen in das entsprechende Verzeichnis weiterleiten. Gleichzeitig bietet der Apache noch die Webseite www.noch-eine-homepage.de an, welche aber über eine andere IP-Adresse erreichbar ist.

In diesem Beispiel wird also gezeigt, dass Virtuelle Hosts über IP-Adressen und Namensauflösung erreichbar sind. Der Leser merkt von der ganzen Technik nichts. Er ruft wie gewohnt die URL im Browser auf.

Weitere Informationen

http://buecher.lingoworld.de/apache2/showdir.php?id=632
http://httpd.apache.org/docs/2.0/de/mod/core.html#directory