ブログ

lighttpdでSSIを使ってみる (Armadillo-400シリーズ)

at_takuya.sasaki
2014年10月2日 22時54分
Armadillo-400シリーズに標準でインストールされているlighttpdではSSI( Server Side Include )が有効になっていません。
今回は、Armadillo-400シリーズでSSIを有効にしてみたいと思います。

1.設定ファイルを変更してみる

Armadillo-420を起動して、lighttpdの設定ファイルを変更して再起動してみます。
[root@armadillo420-0 (ttymxc1) ~]# killall lighttpd
[root@armadillo420-0 (ttymxc1) ~]# vi /etc/lighttpd.conf
 
                               "mod_ssi",            ← コメントを外す
ssi.extension              = ( ".shtml" )  ← コメントを外す
 
[root@armadillo420-0 (ttymxc1) ~]#  lighttpd -f /etc/lighttpd.conf
1970-01-01 09:02:24: (../../src/mod_ssi.c.129) mod_ssi: pcre support is missing, please recompile with pcre support or remove mod_ssi from the list of modules
[root@armadillo420-0 (ttymxc1) ~]# 1970-01-01 09:02:24: (../../src/server.c.849) Configuration of plugins failed. Going down.
pcre( Perl Compatible Regular Expressions )をサポートしていないと言われました。 lighttpdのVオプションで確認してみると、確かにサポートしていません。
[root@armadillo420-0 (ttymxc1) ~]# lighttpd -V | grep PCRE
        - PCRE support

2. lighttpdをPCREサポートするようにビルドし直す

*ここからはATDE3上でAtmark Dist/Kernelのビルドをしている前提としています。  フォルダ名などは随時読み替えてください。 1) pcreのヘッダファイルなどが必要になるのでATDE3でarmel版のlibpcre3-devパッケージを取得します。
atmark@atde3:~$ mkdir work
atmark@atde3:~$ cd work/
atmark@atde3:~/work$  wget http://ftp.kr.debian.org/debian-archive/debian/pool/main/p/pcre3/libpcre3-dev_7.6-2.1_armel.deb
2) 今回はこのままworkディレクトリ配下に取得したパッケージファイルを展開します。 (libpcreのライブラリ自体はすでに/usr/arm-linux-gnueabi/libに入っていました)
atmark@atde3:~/work$ dpkg -x libpcre3-dev_7.6-2.1_armel.deb ./
3) lighttpdのMakefileを修正します configureに渡すオプションにPCREに関するオプションを追加します。pcre-configとincludeの場所は随時読み替えてください.。
atmark@atde3:~$ cd atmark-dist
atmark@atde3:~/atmark-dist$ vi user/lighttpd/Makefile
 
                --prefix=/usr --libdir=/usr/lib/lighttpd --with-openssl \   ←末尾にバックスラッシュを追加して以下の3行を追加します
                PCRECONFIG=/home/atmark/work/usr/bin/pcre-config \
                PCRE_LIB=/usr/arm-linux-gnueabi/lib/libpcre.so \
                CFLAGS="$(CFLAGS) -DHAVE_PCRE_H=1 -DHAVE_LIBPCRE=1 -I/home/atmark/work/usr/include"
4) ビルド済のフォルダを削除します
atmark@atde3:~/atmark-dist$ rm -rf user/lighttpd/build
5) lighttpd.confを編集します(Armadillo-420の部分は随時読み替えてください)
atmark@atde3:~/atmark-dist$ vi vendors/AtmarkTechno/Armadillo-420/etc/lighttpd.conf 
 
                               "mod_ssi",            ← コメントを外す
ssi.extension              = ( ".shtml" )  ← コメントを外す
6) makeを実行します
atmark@atde3:~/atmark-dist$ make
7) images/romfs.img.gzをArmadillo-420に書き込みます。

3.SSIを試してみる

1) 新しいromfs.img.gzでArmadillo-420を起動して、lighttpdがPCREをサポートしているか確認してみます。
[root@armadillo420-0 (ttymxc1) ~]# lighttpd -V | grep PCRE
        + PCRE support
2) SSIのサンプルコードを書いてみます。(uname -aを実行するサンプル)
[root@armadillo420-0 (ttymxc1) ~]# vi /home/www-data/sample.shtml
 
<html>
<head><title>SSI sample</title></head>
<!--#exec cmd="/bin/uname -a" -->
</html>
3) Webブラウザから以下のURLを指定します。 http://Armadillo-420のIPアドレス/sample.shtml 以下のようにArmadillo-420上でuname -aを実行した結果が表示されます。 Linux armadillo420-0 2.6.26-at19 #8 PREEMPT Wed Oct 1 11:45:07 JST 2014 armv5tejl unknown 以上です。