Ari Rantala -> Oppaat -> Apache Web-palvelin: muistiinpanot

7 . SSI - Server Side Includes

Server Side Includes (SSI), tunnetaan myös nimellä Server Parsed HTML (SPML). HTML-tiedostoon voidaan upottaa komentoja suoritettavaksi ennen varsinaista dokumentin siirtoa. Myös osa HTML-koodista voidaan tuottaa CGI-ohjelmilla.

Web-palvelin siis kokoaa tällaiset HTML-tiedostot ennen lähetystä. Koska palvelin ei normaalisti tutki HTML-tiedostojen sisältöä, vaan lähettää kopion niistä sellaisenaan, täytyy tällaiset SPML-dokumentit jotenkin kertoa palvelimelle. Jos jokainen dokumentti tutkittaisiin etukäteen, se hidastaisi palvelimen toimintaa ratkaisevasti.

Huomaa

SSI:n merkitys on vähentynyt modernien dynaamisten Web-ohjelmointikielien kuten PHP:n yleistyessä. Lyhyesti sanottuna: Prosentilla/promillella PHP:n ominaisuuksista hoitaa kaiken, mikä SSI:llä on mahdollista.

 

SSI:n käyttöönotto

Ottamalla kommentit pois seuraavilta riveiltä httpd.conf (tai srm.conf) -tiedostossa SPML-dokumenteiksi valitaan kaikki .shtml -loppuiset tiedostot. Palvelin siis tutkii tällaiset tiedostot etukäteen ja suorittaa mahdolliset SSI-komennot ja kokoaa lähetettävän tiedoston. Voit siis käyttää SSI-komentoja tällaisissa tiedostoissa:

AddOutputFilter INCLUDES .shtml

Joissakin kokoonpanoissa määritys voidaan tehdä myös:

AddType text/html .shtml
AddHandler server-parsed .shtml

Lisäksi httpd.conf-tiedostossa kerrotaan Options-direktiivin "Includes"-arvolla, missä hakemistoissa SSI-komennot ovat käytettävissä:

Options Includes

Jos SSI-komentojen välityksellä halutaan ajaa myös CGI-ohjelmia, niin halutussa Directory-lohkossa tulee olla rivi:

Options Includes ExecCGI

Tällöin sekä ympäristömuuttujat/tiedostotiedot (Includes) että CGI-ohjelmien (ExecCGI) ajaminen sallitaan.

Muutamia SSI-komentoja

config, echo, exec, cmd, fsize, flastmod ja include

SSI-kommennot ovat syntaksiltaan muotoa:

<!--#komento optio=arvo optio=arvo ...-->

Esimerkkejä:

1. Viimeisimmän muutospäivämäärän tulostus:

<!--#echo var="LAST_MODIFIED"-->

Tiedoston liitos (include)

Tätä voidaan käyttää sivuilla esim. koko Web-palvelussa yhtenäisten valikkojen luomiseen jne. Kaikkia sivuja voidaan muuttaa vaivattomasti muuttamalla vain top.html tai bottom.html -tiedostoja:

<!--#include file="top.html"-->

..
..
<!--#include file="bottom.html"-->

Suorittaa halutun CGI-ohjelman. Liittää CGI-ohjelman tulostuksen tähän kohtaan:

<!--#exec cgi="cgi-bin/counter.cgi"-->

 

counter.cgi

Varsinainen counter.cgi voisi olla yksinkertaisimmillaan seuraava Shell-scripti. Scripti ei ota huomioon ( tiedoston lukituksella ) yhtäaikaisia pyyntöjä, joten siinä mielessä se ei ole täydellinen. Mutta se on täysin vapaa ja hinta/laatusuhteeltaan hyvä! :

#!/bin/sh
# Ari Rantala 2.3.1998
# Päättele toiminta itse....
#
luku=`cat /home/ara/public_html/cgi-bin/kplmaara`
luku=`expr $luku + 1`
echo -e "Content-type: text/html"
echo -e ""
echo -e "Tällä sivulla käyty $luku kertaa"
echo "$luku" > /home/ara/public_html/cgi-bin/kplmaara