SSIが使えるようにする

SSIとはServer Side Includeの略で,Webサーバーの情報をHTML内に引用する機能のことである. SSIを利用すれば,システム情報やコマンド実行結果などをHTML内に埋め込むことができる. また,CGIよりもサーバーの負荷が軽く,書式も簡単である.

Apacheの設定
使用例


Apahceの設定

Linuxの標準WebサーバーであるApacheでSSIが利用できるようにするためには (デフォルトでは使用できないようになっている),まず,/etc/httpd/conf/httpd.confの DirectoryセクションにIncludesを追加する.

<Directory />
    Options Indexes FollowSymLinks ExecCGI Includes
    AllowOverride None
</Directory>
上記のように書けば,すべてのディレクトリでSSIの実行が許可される. HTMLの置かれているディレクトリ毎にSSI実行の許可/不許可を指定することも可能であり, Directoryセクションの後に例が書かれている(デフォルトではコメントアウトされている).

次に以下の設定を追加する(これはデフォルトで設定されている).

AddType text/html .shtml
AddHandler server-parsed .shtml
この設定によって拡張子がshtmlのファイルに対してのみSSI命令が適用される. サーバーはHTMLにSSIコマンドが埋め込まれているか否かを解析するが,解析すべきファイルを限定することに よってサーバーの負荷を軽減させることができる.

httpd.confを書き換えたら,下記のコマンドを実行してApacheを再起動する.

# /etc/rc.d/init.d/httpd restart
なお,/etc/httpd/conf以下にはaccess.conf,httpd.confおよびsrm.confの三つの設定ファイルがある. httpd.confには他の二つのファイルの設定内容がすべて含まれており,httpd.conf,srm.conf,access.confの 順に処理される. srm.confおよびaccess.confにはデフォルトで何も設定されておらず,「設定内容の競合を防ぐために, Apacheの設定はすべてhttpd.confに記述せよ」という旨のコメントのみが書かれている. これに従い,ここで書いた設定はすべてhttpd.confに対して行った.


使用例

このサイトのトップページでは,最終更新日を表示するためにSSIを利用している. まず,Perlで次のようなCGIを作成した.

#!/usr/bin/perl

$filename = 'history.html';
( $dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, $atime,
    $mtime, $ctime, $blksize, $blocks ) = stat( $filename );
$lastupdate = localtime( $mtime );
print $lastupdate;
これは,更新履歴が書かれたhistory.htmlの最終更新日を標準出力に表示するものである. サイト自体の最終更新日はhistory.htmlの最終更新日となる. このCGIをlastupdate.cgiとして保存し,chmodで実行可能にする.
$ chmod a+x lastupdate.cgi
これを実行すれば以下のようになる.
$ perl lastupdate.cgi
Mon Jan 22 15:12:10 2001
このような出力結果をHTMLの一部としてクライアント側に返す. 具体的には,HTMLに以下のように記述する.
last update: <!--#exec cmd="./lastupdate.cgi"--><BR>
#execはサーバー上で実行したコマンドの出力を取得するものである. あるいは,HTML内に
<!--#exec cmd="date"-->
のように書けば,その部分にサーバー上の時刻が表示される. また,
<!--#echo var="REMOTE_ADDR"--> 
と書けば,その部分にHTMLをリクエストしたクライアントのIPアドレスが表示される. 上で書いたようにApacheを設定した場合,SSIが埋め込まれているHTMLファイルの拡張子は shtmlにしなければならない.

SSIについての詳しい解説が ここにある.


お問い合わせはメールにて: akasaka@klc.ac.jp

戻る
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送