Apache2.4 の新機能 mod_sed を試してみる

Apache2.4.2 が出たので、インストールついでに mod_sed を試してみたいと思います。

ダウンロードしたソースをコンパイルするわけですが APR を入れていないと configure でエラーになります。

$ ./configure --prefix=/usr/local/apache242
checking for chosen layout... Apache
checking for working mkdir -p... yes
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu

Configuring Apache Portable Runtime library ...

checking for APR... no
configure: error: APR not found.  Please read the documentation.

下記のページを参考に apr を入れてコンパイルします。

[参考]
Apache 2.4 で mod_lua を使ってみる

/usr/local/apache242 に入れます。

$ ./configure --prefix=/usr/local/apache242 \
  --with-apr=/usr/local/apr-httpd/ \
  --with-apr-util=/usr/local/apr-util-httpd/
$ make
$ sudo make install

最後に mod_sed のモジュールを有効にします。

$ vi /usr/local/apache242/conf/httpd.conf

コメントを外します。

#LoadModule sed_module modules/mod_sed.so

これでインストールは終了です。

次に実際の動作のための mod_sed の設定をします。 mod_sed は、入力と出力の内容に対して sed コマンドを使うように置換することができます。

入力と出力は使うディレクティブが違うだけなので 簡単に試せる出力で使ってみます。

次のように設定します。 AddOutputFilter で、拡張子 html に対して Sed フィルタを指定しています。

<IfModule sed_module>
    <Directory "/usr/local/apache242/htdocs/sed">
        AddOutputFilter Sed html
        OutputSed "s/monday/MON/g"
        OutputSed "s/sunday/SUN/g"
    </Directory>
</IfModule>

/usr/local/apache242/htdocs/sed にある .html のファイルは "monday","sunday" を出力すると "MON","SUN" に置換されます。

試してみます。次のファイルを用意。

$ cat /usr/local/apache242/htdocs/sed/test.html

<body>
sunday monday tuesday wednesday thursday friday saturday
</body>

アクセスします。

$ wget -q --no-proxy -O - http://localhost/sed/test.html

<body>
SUN MON tuesday wednesday thursday friday saturday
</body>

sunday monday が SUN MON に変わりました。

Google サイト内検索

Amazonアソシエイト