SSIとはServer Side Includeの略で,Webサーバーの情報をHTML内に引用する機能のことである. SSIを利用すれば,システム情報やコマンド実行結果などをHTML内に埋め込むことができる. また,CGIよりもサーバーの負荷が軽く,書式も簡単である.
Linuxの標準WebサーバーであるApacheでSSIが利用できるようにするためには
(デフォルトでは使用できないようになっている),まず,/etc/httpd/conf/httpd.confの
DirectoryセクションにIncludesを追加する.
上記のように書けば,すべてのディレクトリでSSIの実行が許可される.
HTMLの置かれているディレクトリ毎にSSI実行の許可/不許可を指定することも可能であり,
Directoryセクションの後に例が書かれている(デフォルトではコメントアウトされている).
<Directory />
Options Indexes FollowSymLinks ExecCGI Includes
AllowOverride None
</Directory>
次に以下の設定を追加する(これはデフォルトで設定されている).
この設定によって拡張子がshtmlのファイルに対してのみSSI命令が適用される.
サーバーはHTMLにSSIコマンドが埋め込まれているか否かを解析するが,解析すべきファイルを限定することに
よってサーバーの負荷を軽減させることができる.
AddType text/html .shtml
AddHandler server-parsed .shtml
httpd.confを書き換えたら,下記のコマンドを実行してApacheを再起動する.
なお,/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に対して行った.
# /etc/rc.d/init.d/httpd restart
このサイトのトップページでは,最終更新日を表示するためにSSIを利用している.
まず,Perlで次のようなCGIを作成した.
これは,更新履歴が書かれたhistory.htmlの最終更新日を標準出力に表示するものである.
サイト自体の最終更新日はhistory.htmlの最終更新日となる.
このCGIをlastupdate.cgiとして保存し,chmodで実行可能にする.
#!/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;
これを実行すれば以下のようになる.
$ chmod a+x lastupdate.cgi
このような出力結果をHTMLの一部としてクライアント側に返す.
具体的には,HTMLに以下のように記述する.
$ perl lastupdate.cgi
Mon Jan 22 15:12:10 2001
#execはサーバー上で実行したコマンドの出力を取得するものである.
あるいは,HTML内に
last update: <!--#exec cmd="./lastupdate.cgi"--><BR>
のように書けば,その部分にサーバー上の時刻が表示される.
また,
<!--#exec cmd="date"-->
と書けば,その部分にHTMLをリクエストしたクライアントのIPアドレスが表示される.
上で書いたようにApacheを設定した場合,SSIが埋め込まれているHTMLファイルの拡張子は
shtmlにしなければならない.
<!--#echo var="REMOTE_ADDR"-->
SSIについての詳しい解説が ここにある.
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||