duyojiぶろぐ

技術系ときどき日常系

modpagespeedをインストールしてページの表示時間を短縮する

modpagespeedとは

以下の動画を見てもわかるとおりソースコードなどを最適化して
ページ表示を高速化してくれるGoogleが出しているApacheモジュールである

自分の環境でmodpagespeedを導入して表示スピードを比較してみる

インストール方法を説明する前に導入後スピードが本当に早くなっているのか
modpagespeedの導入前,導入後の実験を5回ずつしてキャプチャを撮ってみた。
(スピードを比較するためにpingdomというwebサービスを使った)

modpagespeed導入前



modpagespeed導入後


キャプチャを見ていただくと分かるが表示スピードが導入前と導入後を比較して
最大で約2倍のスピード差があることが確認できた。

インストール方法
https://developers.google.com/speed/docs/mod_pagespeed/build_from_source

上記URLの通りソースからインストールする方法で今回はやってみた。

上記ページに書いてある通りやったが一応順番に自分が行ったことを
まとめる。

Prerequisites

この章はすでに自分の環境では構築されていたので
飛ばす。

Install the Chromium Depot Tools

1行目に「We require the Chromium depot_tools, which are used to build open-source projects with dependencies on other open-source projects.」書かれているとおりdepot_toolsというツールが必要らしいので書かれているコマンドをそのまま実行。
svnを使ってチェックアウトしている

$ mkdir -p ~/bin
$ cd ~/bin
$ svn co http://src.chromium.org/svn/trunk/tools/depot_tools

上記のコマンドの後にdepotツールにパスを通すために以下のコマンドを実行

export PATH=$PATH:~/bin/depot_tools
Check out mod_pagespeed and dependencies

mod_pagespeedをダウンロードするためにmod_pagespeedようのディレクトリを作り
mod_pagespeed関連の処理をそのディレクトリで行う。

$ mkdir ~/mod_pagespeed
$ cd ~/mod_pagespeed

そしていよいよダウンロードするのだが本家のページでは(自分なりの解釈で)
安定した最新版をダウンロードするか安定していない最新版かダウンロードするか
選択する感じだったので、今回安定版をダウンロードすることにして以下のコマンドを
実行した。
ちなみにgclientコマンドはdepot_toolsの一つらしい。

$ gclient config http://modpagespeed.googlecode.com/svn/branches/latest-beta/src
$ gclient sync --force --jobs=1
Run Tests

この章では自分の環境でmod_pagesが動くかテストを行なう。
とりあえず本家ページの説明されたとおりとおりに以下のコマンドを実行するが
自分の環境ではmake(コンパイル)で失敗した。

$ cd ~/mod_pagespeed/src
$ make BUILDTYPE=Release mod_pagespeed_test pagespeed_automatic_test #ここで自分は失敗

自分の場合失敗した原因は「gperf」コマンドが無かったのが原因だったのでyumでインストールした。

# yum -y install gperf

もしかたしたら人によってはgperf以外で環境がきちんと出来ていない場合があると
思うのでその時は適宜エラー内容から必要なものを揃えれば大丈夫だと思う。
(Prerequisitesの章でgperfをインストールしなければ行けなかったが構築されていると
gperfが必要なことを見落としていたのが悪かった。
Prerequisitesできちんと必要なものをインストールしましょう)

もう一度先程のコマンド(以下のコマンド)を行うとうまくいった。

$ cd ~/mod_pagespeed/src
$ make BUILDTYPE=Release mod_pagespeed_test pagespeed_automatic_test #ここで自分は失敗

その後テストを行うが自分の場合2つ目のテストのコマンドが
なんかうまくいかなかった部分があったみたいだが特に問題ないと
勝手に判断してテストを終了した。

$ ./out/Release/mod_pagespeed_test
$ ./out/Release/pagespeed_automatic_test
Compile

以下のコマンドでmod_pagespeedをReleaceバージョン(本番環境)用でコンパイル

$ cd ~/mod_pagespeed/src
$ make BUILDTYPE=Release   # BUILDTYPEのデフォルトは'Debug'
Install

以下のコマンドでインストールするのだが本家ページのやり方では
うまくいかなかったので./install_apxs.shをスーパーユーザーになって
sh ./install_apxs.shで実行した。

#本家ページのやりかた
$ cd install
$ ./install_apxs.sh

#自分のやりかた
$ cd install
# sh ./install_apxs.sh

しかし本家ページでもこのコマンドの後の説明にもある通り
yumからではなくソースからコンパイル&インストールしたとき
yumの時とパスが異なっていると思うのでその時はapxsへのパスを
きちんと説明しなければいけないので以下のコマンドをやるといいらしい。

 APXS_BIN=/usr/local/exampleapache/bin/apxs ./install_apxs.sh

ちなみに自分は別の環境ではapacheを最新版でインストールするとき
CentOSにApache 2.4.1をインストールする
技術手引き書
などを参考にして構築しているのだが、その環境ではapxsはyumでインストールしたときと異なっている。

上記の「# sh ./install_apxs.sh」(自分の環境の場合)が終わるとmod_pagespeedがインストールされ、
httpd.confにインストールされたpagespeed.confが読み込まれるようになっていた。

Update

mod_pagespeedをアップデートするときここを読むのだろうが、
今回は関係ないと思い飛ばす。

Build Packages

この章もインストールすることが目的だったのでパッケージ化はしない。
(パッケージ化をしたことがなく今はそこに学習コストを書ける必要はないと判断しただけ)

Debug CSS

これも飛ばした

Other Systems

これも飛ばした

インストール後の設定

色々設定すればもっと最適化出来るのだろうが、とくにインストール後
設定をいじることなく最初に挙げたスクリーンショットを見る限りでも
最高で2倍の差で表示スピードが早くなっているので今はこれでOKということに
しておこうと思う。

まとめ

とりあえずmod_pagespeedをまだ使っていなくて、
ページ速度の表示を早くしたいのであればとりあえず
mod_pagespeedをインストールしよう!