投稿

8月, 2011の投稿を表示しています

mod_pagespeed を FreeBSD で動かす

html や CSS を動的に書き換えて、ページの読み込みを高速化させる Google 製の apache モジュール mod_pagespeed ですが、今のところ FreeBSD はサポートされていません。Web 上にも動かそうとチェレンジしている人が何人かいるようですが、動かしたという話を聞かないので方法を調べてみました。 ※この記事を書いた2ヶ月後に、以下に書いたパッチがそのまま FreeBSD の ports ツリーに取り込まれました 。今は ports の www/mod_pagespeed をビルドするだけで導入できるようになっています。 調査過程を説明した後、方法を述べます。 コンパイルエラーの対処 Web 上で躓いている人は大抵以下のコンパイルエラーで困っているようです。   CXX(target) out/Release/obj.target/pagespeed_output_pb/gen/protoc_out/pagespeed/proto/pagespeed_output.pb. o In file included from out/Release/obj/gen/protoc_out/pagespeed/proto/pagespeed_output.pb.cc:4: out/Release/obj/gen/protoc_out/pagespeed/proto/pagespeed_output.pb.h:1470: error: expected unqualified-id before 'int' 調べてみたところ、protocol buffer の定義ファイル pagespeed_output.proto から major/minor というシンボルが生成されており、 これがマクロで定義されている major(3), minor(3) と衝突していました。適当なところで #undef すればエラーを回避できます。 その後は、apr のビルドがエラーになったのでシステムの apr を使うようにすると最後までビルドできました。 テスト失敗の対処 これで動くかなと思いきや、自動テストの pagespeed_automatic_test を実行すると、 FAIL と出た後 abor