携帯向け Apache モジュールの本命 mod_chxj
昨日、携帯向け Apache モジュール mod_chxj バージョン 0.10.3 がリリースされました。
http://sourceforge.jp/projects/modchxj/files/?release_id=30473#30473
mod_chxj には以下のような機能があります。
- CHTML や HTML を User-Agent を見て適切な形(docomo向け、au向け、softbank向け、PC向け)に自動で変換してくれます
- QRコードを出力できます
- docomo の cookie 非対応端末向けに cookie をエミュレートしてくれます
- cookie-id を保存する場所を変えることができます
一言でいえば、ロードバランシング環境に設置された PC 向けのアプリをそのまま(場合によっては多少手直しするだけで)、携帯に対応させることができます。
似たようなものにゆめみの mod_ktai という Apache モジュールがありますが、まだリリースされていません。
http://labs.yumemi.co.jp/labs/mod.html
携帯対応は、ウェブアプリケーション側で対応するのはナンセンスで、最終的には Apache モジュールに落ち着くと思います(速度も抜群に早いですし)。
memcached を使う場合のインストール方法
あらかじめ memcached をインストールしておいてください。ubuntu の場合は以下のようにしてインストールします。
$ sudo apt-get install memcached
以下のサイトから「apr_memcache v0.7.0」をダウンロードします。
http://www.outoforder.cc/projects/libs/apr_memcache/
configure.acの33行目を
LIBTOOL="`${apr_config} --apr-libtoool`"
から
LIBTOOL="`${apr_config} --apr-libtool` --tag=CC"
に変更して、以下のようにビルド・インストールします。
$ autogen.sh $ ./configure --prefix=/usr $ make $ sudo make install
次に mod-chxj_0.10.3.src.tar.gz を展開してインストールします。
$ buildconf.sh $ ./configure --enable-memcache-cookie \ --with-apr-memcache-header=/usr/include/apr_memcache0 \ --with-apr-memcache-lib-dir=/usr/lib $ make $ sudo make install
ubuntu の場合、なぜかヘッダファイルがうまく読めなかったので以下のようにしました。
$ cd include $ ln -s /usr/include/apr_memcache0/apr_memcache.h . $ cd ..
etc 以下の設定ファイルを適当な場所にコピーします。
$ cd etc $ sudo cp *.xml /etc
Apache の設定ファイルを書きます。以下はバーチャルホストで Catalyst アプリを動かす例です。Catalyst アプリは UTF-8 で記述されており、携帯では SJIS に自動変換されて表示されます。
Listen 4000 <IfModule mod_fastcgi.c> FastCgiServer /somewhere/MyApp/script/myapp_fastcgi.pl -idle-timeout 300 -processes 2 </IfModule> <VirtualHost 192.168.1.xx:4000> # mod_chxj ChxjCookieStoreType "memcache" ChxjCookieLazyMode "true" ChxjCookieMemcacheHost "localhost" ChxjCookieMemcachePort 11211 ChxjCookieTimeout 3600 ChxjLoadDeviceData "/etc/device_data.xml" ChxjLoadEmojiData "/etc/emoji.xml" ChxjConvertRule ".+$" "EngineOn,CookieOn" "UTF-8" "PC" # log LogLevel debug # fastcgi ScriptAlias / /somewhere/MyApp/script/myapp_fastcgi.pl/ </VirtualHost>