Beschreibung: Prüfungskandidaten sollten in der Lage sein, einfache Einstellungen in den Apache Konfigurationsdateien vorzunehmen, httpd zu starten, anzuhalten und neu zu starten und das automatische starten von httpd bei Systemstart einzurichten. Dies beinhaltet nicht fortgeschrittene Konfiguration von Apache.
Die wichtigsten Dateien, Bezeichnungen und Anwendungen:
Die Konfiguration des Webservers apache ist ein weites Feld, das problemlos ganze Bücher füllen kann. An dieser Stelle wird aber nur ein Grundwissen über den Webserver und seine Konfiguration gefordert, das relativ schnell erlernbar ist.
Die beiden Dateien srm.conf und access.conf sind zwar noch vorhanden, werden jedoch nicht mehr benötigt, da alle Einstellungen heute in der Datei httpd.conf vorgenommen werden.
Standardmäßig erwartete der Webserver seine Konfigurationsdateien in /usr/local/etc/httpd/conf. Dieses Verzeichnis entspricht aber nicht dem Dateisystem-Standard von Linux. Aus diesem Grund wird heute der Webserver in der Regel über eine Kommandozeilenoption -f Dateiname gestartet, die ihm ein anderes Verzeichnis für die Konfigurationsdatei angibt. In der Regel ist das Verzeichnis entweder /etc/httpd oder /etc/apache. Dort liegen dann alle Konfigurationsdateien des Webservers.
Neben diesem Verzeichnis gibt es noch zwei weitere, die für den Webserver eine große Rolle spielen.
Die Festlegung, welche Verzeichnisse für diese beiden Aufgaben benutzt werden sollen, wird in der Konfigurationsdatei httpd.conf gemacht.
Diese Datei ermöglicht es, den Webserver komplett zu konfigurieren, von der Einstellung, auf welchen Port er hören soll, bis hin zur Angabe welcher User welche Verzeichnisse sehen darf. Die standardmäßige Konfigurationsdatei des Webservers enthält bereits eine wohldurchdachte und sehr gut kommentierte Konfigurationsdatei, die entsprechend angepasst werden kann.
Grunsätzlich ließt der Webserver diese Datei beim Start. Das heißt, wenn in dieser Datei Veränderungen vorgenommen werden sollen, dann muß der Server danach neu gestartet werden. Bitte nochmal zur Definition: Server meint hier das Programm und nicht den Rechner!
Die Konfigurationsdatei des Webservers kennt hunderte verschiedener Anweisung, die hier nicht alle dargestellt werden können. Wir werden uns hier also auf die wichtigsten Anweisungen beschränken. Die Konfigurationsdatei ist in drei Bereiche aufgeteilt: Die globalen Einstellungen, die Einstellungen des Hauptservers und die Einstellungen für die virtuellen Server.
Nach diesen Grundeinstellungen werden die Module geladen. An diesen Einstellungen ist eigentlich keinerlei Veränderung nötig, es sei denn, Sie haben eigene Module entwickelt und wollen sie einbinden.
<IfDefine SSL> Listen 80 Listen 443 </IfDefine>
http://www.myhost.mydomain.de/cgi-bin/irgendwas.plauf das genannte Verzeichnis umgeleitet. Es ist zwar zu empfehlen, daß das Script-Verzeichnis außerhalb des Dokumentenbaums liegt, jedoch nicht notwendig. Falls mehrere solcher Aliase angelegt werden sollen, müssen sie jeweils andere Aliasnamen tragen:
ScriptAlias /cgi-bin/ "/usr/local/httpd/cgi-bin/" ScriptAlias /test/cgi-bin/ "/usr/cgi-bin/" ScriptAlias /users/hans/cgi-bin/ "/home/hans/cgi-bin/"Die entsprechenden URLs für die drei verschiedenen Verzeichnisse wären jetzt:
http://www.myhost.mydomain.de/cgi-bin/irgendwas.pl http://www.myhost.mydomain.de/test/cgi-bin/irgendwas.pl http://www.myhost.mydomain.de/users/hans/cgi-bin/irgendwas.pl
Die meisten weiteren Einstellungen benützen jetzt ein HTML-ähnliches Format, um die Gültgkeit auf bestimmte Bereiche zu reduzieren. Dazu werden die gewünschten Bereiche (Verzeichnisse, Dateien und URLs) in spitze Klammern geschrieben und mit einem entsprechenden Abschlußtag beendet. Ein paar Beispiele:
<Directory "/usr/local/httpd/htdocs"> Options FollowSymLinks DirectoryIndex default.htm </Directory>Diese Angabe legt fest, daß die beiden Befehle in den Klammern nur für das Verzeichnis "/usr/local/httpd/htdocs" und alle darin enthaltenen Unterverzeichnisse gelten.
Statt <Directory> kann auch <Location> stehen. Dann wird statt einer absoluten Pfadangabe eine URL angegeben. Das erspart einem Systemverwalter das Wissen über die tatsächliche Positionierung des DocumentRoot. Das muß dann selbstverständlich mit </Location> abgeschlossen werden.
Um einzelne Dateien direkt anzusprechen kann auch die Klammerung mit <Files> erfolgen. In der Klammer stehen dann Dateinamen, auf die sich die Angaben beziehen.
Die Definition eines virtuellen Servers ermöglicht es also dem Webserver zu entscheiden, an welchen DNS-Namen bzw. welche IP-Adresse die Anfrage ging. Diese Entscheidung führt dann zu unterschiedlichen DocumentRoots also werden unterschiedliche Seiten angezeigt.
Linux bietet zu diesem Zweck die Möglichkeit, daß eine einzige Ethernetkarte mehrere IP-Adressen bekommen kann. Dazu wird der Bezeichnung der Ethernetkarte (z.B. eth0) einfach ein Doppelpunkt und eine Nummer zugefügt (eth0:1, eth0:2, ...). Jeder dieser "virtuellen Netzwerkkarten" kann jetzt eine eigene IP-Adresse vergeben werden. Entweder mit dem entsprechenden Konfigurationsprogramm (yast, linuxconf,...) oder mit dem Befehl:
ifconfig eth0:1 Adresse netmask MaskeWenn diese zweite (dritte, vierte, ...) Adresse jetzt im Nameserver einen eigenen Eintrag erhält, so kann tatsächlich der Webserver darauf reagieren. Dazu müssen in der Konfigurationsdatei ein paar zusätzliche Einträge vorhanden sein:
NameVirtualHost IP-AdresseDieser Eintrag ist nur nötig, um mehrere namensbasierte Virtuelle Server aufzubauen. Die IP-Adresse ist die der "virtuellen Netzwerkkarte" wie oben beschrieben.
Jetzt können wir die einzelnen virtuellen Server definieren. Dazu werden wiederum Angaben in spitzen Klammern gemacht, entweder mit IP-Adressen (von virtuellen Karten) oder mit Hostnamen (Alias-Einträge im Nameserver, die auf die virtuelle Karte verweisen).
Jeder dieser Einträge bekommt jetzt einen eigenen DocumentRoot und kann alle bisher besprochenen Direktiven des normalen Servers enthalten. Ein Beispiel:
NameVirtualHost 10.230.1.101 <VirtualHost 10.230.1.101> ServerAdmin root@marvin.mydomain.de DocumentRoot /www2 ServerName virtual1.mydomain.de </VirtualHost> <VirtualHost 10.230.1.101> ServerAdmin hans@marvin.mydomain.de DocumentRoot /www3 ServerName virtual2.mydomain.de <Directory /www3/specialdir> AllowOverride All </Directory> </VirtualHost>Hier haben wir also zwei virtuelle Hosts definiert, beide wurden über ein und dieselbe IP-Adresse (10.230.1.101) definiert, aber beide unterscheiden sich anhand ihres Namens. Natürlich muß der zweite Name entsprechend im Nameserver vorhanden sein und als Alias auf den ersten Rechner gesetzt sein.
Die zweite Möglichkeit virtueller Hosts ist die Adressenbasierte. Hier ist die Angabe des NameVirtualHost-Befehls nicht nötig. Dafür muß jeder virtuelle Server eine eigene IP-Adresse besitzen. Mit der oben gezeigten Methode ist das bis zu einem bestimmten Punkt möglich. Ab einer gewissen Anzahl (etwa ab 4 virtuellen Hosts) bietet es sich aber an, namensbasierte Hosts zu generieren, statt mit x virtuellen Netzwerkkarten zu arbeiten...
Innerhalb der <VirtualHost> Klammerung können alle Direktiven stehen, die auch schon für die Konfiguration des Hauptservers zur Anwendung kamen. Es sind also vollständig autarke Server, denen sogar eigene CGI-Verzeichnisse gegeben werden können. Das folgende Beispiel zeigt zwei virtuelle Hosts, die Adressenbasiert aufgebaut sind und je ein eigenes cgi-bin Verzeichnis besitzen:
<VirtualHost 10.230.1.105> ServerAdmin root@marvin.mydomain.de DocumentRoot /www1/htdocs ScriptAlias /cgi-bin/ "www1/cgi-bin/" ServerName virtual1.mydomain.de </VirtualHost> <VirtualHost 10.230.1.106> ServerAdmin hans@marvin.mydomain.de DocumentRoot /www2/htdocs ScriptAlias /cgi-bin/ "www2/cgi-bin/" ServerName virtual2.mydomain.de </VirtualHost>
In diesem Script wird - wie oben schon erwähnt - als Parameter für den Webserver die Konfigurationsdatei mit angegeben. Typische Einträge zum Starten wären also z.B.
/usr/bin/httpd -f /etc/httpd/httpd.confAuch das Herunterfahren des Webservers kann in der Regel mit diesem Script ausgeführt werden, indem ihm der Parameter stop mitgegeben wird.
Nach jeder Änderung an der Konfigurationsdatei muß der Server neu gestartet werden. Damit das nicht nur über das Init-Script erfolgen kann, gehört zum Lieferumfang von apache ein Serverkontrollprogramm, mit dem diese Aufgaben erledigt werden können. Dieses Programm ist ein Shellscript, das eventuell an abweichende Pfade angepasst werden muß.
Die Aufrufform des Programms ist
apachectl KommandoEs stehen verschiedene Kommandos zur Verfügung. Die wichtigsten sind: