Linux NetMag #5
Titel: SSI für Apache
URL: http://www.linuxnetmag.de/de/issue5/m5ssi1.html

Apache-Konfiguration Sie haben keine Lust mehr auf statische HTML-Seiten?
SSI-generiert Teile von HTML-Seiten erst bei der Anfrage eines Besuchers, und erlaubt es somit, die Seiten abwechslungsreicher zu gestalten.


(Die Konfiguration bezieht sich auf einen Apache Web-Server 1.3.x)

ServerSideIncluded

Statische HTML-Seiten sehen immer gleich aus, und das kann sehr schnell langweilig werden.
Techniken wie SSI und PHP generieren die HTML-Seiten erst dann, wenn ein Benutzer sie auch sehen will. Das erzeugt zwar etwas mehr Last für den Rechner, macht die Seiten dafür aber um so interessanter.
Sie können sogar immer aktuelle Nachrichten auf Ihren Seiten präsentieren, ohne daß sie jemals die Seiten per Hand ändern müssten.

Ein weiterer Vorteil ist es, daß Sie Ausgaben von Programmen, wie CGI-Skripten in die Seiten einbinden können.

Konfiguration

Bevor es aber soweit ist, diese Technik auch nutzen zu können, steht zumeist eine kurze Änderung in den Konfigurationsdateien an, da SSI bei vielen Distributionen standardmäßig ausgestellt ist.

Als erstes benötigt man einen Eintrag in der Datei /etc/httpd/acess.conf. In der Zeile Options benötigen wir die beiden Einträge Include und ExecCGI:

/etc/httpd/acess.conf

 # This may also be "None", "All", or any combination of "Indexes",
 # "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".
 
 # Note that "MultiViews" must be named *explicitly* --- "Options All"
 # doesn't give it to you.
 
 Options Indexes FollowSymLinks Includes ExecCGI
 #                              ^^^^^^^^^^^^^^^^Hinzugefuegt

Außerdem müssen wir noch einstellen, daß sowohl Seiten mit der Endung .shtml auch bisherige Seiten mit der .html-Endung auf SSI-Befehle untersucht werden.
Um Server-Last zu reduzieren kann man auch nur in .shtml-Seiten SSI-Befehle erlauben, da ansonsten jedes Dokument vor dem Anzeigen überprüft wird.

Die Datei /etc/httpd/srm.conf erhält dafür folgende Zeilen (häufig müssen auch nur die Kommentare entfernt werden):

/etc/httpd/srm.conf
 # To use server-parsed HTML files 
 AddType text/html .shtml 
 AddType text/x-server-parsed-html .html
 AddHandler server-parsed .shtml

Danach muß man den Apache Web-Server neu starten, damit die neue Konfiguration auch benutzt wird. Dies geschieht am schnellsten über das vorhandene init-Skript. Unter SuSE lautet der Befehl

>> /sbin/init.d/apache restart
Bei RedHat liegen die init-Skripte gewöhnlich unter /etc/rc.d/init.d/.
Sollte der Neustart des Web-Servers geglückt sein, steht Ihnen nun die Welt von SSI offen.

Die HTML-Dateien

Der Server ist nun korrekt konfiguriert, aber wie verwendet man jetzt SSI in den HTML-Seiten?

Die einfachste Methode ist es, eine externe Datei in eine bestehende Datei mit einzubinden, so daß der Besucher der Web-Seite statt des SSI-Befehls den Text der eingebundenen Datei sieht.
Die SSI-Befehle werden als Kommentare getarnt, so daß ein Besucher, falls SSI nicht aktiviert ist, die Befehle nicht auf Anhieb sieht.
Zum Einbinden einer Datei benutzt man den Befehl

 <!--#include file="./Dateiname.txt" -->
Zum Veranschaulichen hier eine Beispielseite:

ssi.html
<html>
<head>
<title>SSI Testing
</title>
</head>
<body>
<center>
Test mit SSI<br>
In der nächsten Zeile wird ein SSI-Befehl ausgeführt
</center>
<p>
 <!--#include file="./test.txt" -->
</body>
</html>

Zusätzlich benötigt man natürlich noch die einzubindende Datei test.txt.

test.txt
<h1> Dies ist ein Include-Test-Text
<br>Juhu, es hat funktioniert ;)
</h1>

Beides schnell auf den Server kopiert, und die Seite ssi.html dann mit einem Web-Browser besucht, sollte dann so aussehen:

Ausgabe von ssi.html


SSI Testing



Test mit SSI
In der nächsten Zeile wird ein SSI-Befehl ausgeführt

Dies ist ein Include-Test-Text
Juhu, es hat funktioniert ;)

Sollte die einzubindende Datei nicht in dem vorgegebenem Verzeichnis existieren, erhält man eine Fehlermeldung der Form:

[an error occurred while processing this directive] 
Erhalten Sie weder eine Fehlermeldung, noch wird die Datei test.txt angezeigt, dann schauen Sie sich den Seiten-Quelltext in ihrem Browser an. Steht dort an der entsprechenden Zeile
<!--#include file="./test.txt" -->
haben Sie etwas bei der Konfiguration des Web-Servers verkehrt gemacht.
Der Server führt anscheinend noch keine SSI-Befehle aus, sondern denkt, daß es sich bei der entsprechenden Zeile um einen HTML-Befehl handelt.

Neben dem Einbinden von Text-Dateien kann man auch die Ausgabe von CGI-Programmen anzeigen lassen. Dafür benötigt man den Befehl

<!--#exec cgi="/cgi-bin/programm.cgi" -->
In dieser Zeile erscheint dann der Text oder das Bild, welches das cgi-Programm ausgibt.


Links:
http://hoohoo.ncsa.uiuc.edu/docs-1.5/tutorials/includes.html Etwas Informationen zum Einsatz von SSI