Home > Apache

Apache Archive

Debian/GNU Linux etch に mod_chxj をインストールしたよ

携帯電話向けにコンテンツを変換する Apache モジュールの mod_chxj が約1年半ぶりにバージョンアップしていたのでインストールしてみました。

deb パッケージだと Apache2.2 に対応していないのでソースからビルドします。

mod_chxjをインストールする前に、下記のものを用意する必要があります。

  1. Apache2.0のヘッダーファイル群
  2. Apache2.0用のapxs
  3. apr(Apache Portable Runtime)ライブラリとそのヘッダファイル郡(apu含む)
  4. automake、autoconf、libtool1.3.X
  5. ImageMagick(MagickWand)
  6. libiconvまたはlibiconv_hook
  7. Linux

と、ありますので、libapr や libmagick を aptitude でインストールしておきます。

libconv は http://ftp.gnu.org/pub/gnu/libiconv/
libconv の日本語パッチは http://www2d.biglobe.ne.jp/~msyk/software/libiconv-patch.html にありますので、それぞれ wget して gzip -dc libiconv-1.12-ja-1.patch.gz | patch -p1 とパッチをあててからインストールします。

$ wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.12.tar.gz
$ tar xvzf libiconv-1.10.tar.gz
$ cd libiconv-1.10
$ wget http://www2d.biglobe.ne.jp/~msyk/software/libiconv/libiconv-1.12-ja-1.patch.gz
$ gzip -dc libiconv-1.10-ja-1.patch.gz | patch -p1
$ ./configure
$ make
$ sudo make install

という感じ。

次に mod_chxj のダウンロードとインストール。

$ wget http://osdn.dl.sourceforge.jp/modchxj/28979/mod-chxj_0.8.1p1.src.tar.gz
$ tar vxzf mod-chxj_0.8.1p1.src.tar.gz
$ cd mod-chxj_0.8.1p1

こんな感じで解凍したら、エディタで ./src/chxj_cookie.c を開きます。
120行辺りに下記のコードがありますので、ap_run_http_method(r), をコメントアウトして下さい。

if (! has_refer) {
    apr_uri_parse(r->pool,r->uri, &parsed_uri);
    refer_string = apr_psprintf(r->pool,
                                "%s://%s%s",
#if AP_SERVER_MAJORVERSION_NUMBER == 2 && AP_SERVER_MINORVERSION_NUMBER == 2
                                ap_run_http_scheme(r),
#else
                                ap_run_http_method(r),
#endif
                                r->hostname,
                                apr_uri_unparse(r->pool,
                                                &parsed_uri,
                                                APR_URI_UNP_OMITSITEPART));
    if (r->args && strlen(r->args)) {
      refer_string = apr_pstrcat(r->pool, refer_string, "?", r->args, NULL);
    }
    apr_table_setn(new_cookie_table, REFERER_COOKIE_KEY, refer_string);
    DBG1(r, "ADD REFER[%s]", refer_string);
    has_cookie++;
  }

次にコンパイル&インストール。

$ ./buildconf.sh
$ ./configure --prefix=/usr --with-apache-header=/usr/include/apache2 --with-apxs=/usr/bin/apxs2 --with-iconv=/usr/bin/iconv --with-apr-config=/usr/bin/apr-config --with-apu-config=/usr/bin/apu-config
$ make
$ sudo make install

こんな感じです。

インストールできたらソースパッケージの中にある etc ディレクトリの xml ファイルを /etc/apache2/chxj などという名前のディレクトリを作成してコピーします。
インストール時にモジュールをロードする設定ファイルが Apache のモジュール設定ファイルのディレクトリにコピーされているはずですが、されていなかった場合にはソースパッケージの debian ディレクトリにある chxj.load を適時コピーして下さい。

設定は http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/modchxj/mod_chxj/doc/modchxj.html?rev=1.20#doc1_102 を参考にして下さい。

僕は試しに mb サブドメインでバーチャルホストを立てて

<virtualHost *>
      ServerName mb.example.com
      DocumentRoot /var/www/mb/httpdocs
	<directory /var/www/mb/httpdocs>
		Options FollowSymLinks MultiViews ExecCGI
		AllowOverride All
	</directory>
	ChxjLoadDeviceData  /etc/apache2/chxj/device_data.xml
	ChxjLoadEmojiData   /etc/apache2/chxj/emoji.xml
	ChxjConvertRule "^/chxj.+$" "EngineOn" "UTF-8" "PC"
	<location /images>
		ChxjImageEngine On
		ChxjImageCacheDir /tmp
	</location>
</virtualHost>

という風にしました。
絵文字や画像のキャリアごとの差異を web プログラム側で気にしなくても良いのはとても素晴らしいことですね。

ホーム > Apache

Search
Feeds
Meta

Return to page top