ブログ

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

以上です。