Amazon LinuxでApache+mod_pagespeedを使ってみる

はじめに

PageSpeedとは

Googleが開発したWebサイト最適化ツール群で、Webサイトを解析し最適化の為のアドバイスをしてくれるツールと、コンテンツを最適な形に自動変換するツールの、大きく2つが用意されています。

前者の解析ツールはPageSpeed Insightsで、この画面でWebサイトのURLを入力すると、コンテンツを解析しPCで閲覧した場合とモバイルで閲覧した場合とそれぞれの結果を表示してくれます。なおAPIも用意されているので外部プログラムから解析を実行することも可能です。

PageSpeed_Insights

後者の自動変換ツールはCDNのように動作するサービスと、Webサーバ(Apache,Nginx)に組み込んで動作するモジュールと、C++クラスライブラリのSDKの3つが提供されています。

Make_the_Web_Faster_—_Google_Developers

今回はPageSpeed ModuleのうちApache用のモジュールであるmod_pagespeedを、Amazon Linux上で組み込んでみました。

やってみた

今回EC2のOSとして使用したのは「amzn-ami-hvm-2014.09.0.x86_64-ebs」です。

Apacheのインストール

まずさくっとyumコマンドでApacheをインストールします。

$ sudo yum install httpd

mod_pagespeedのインストール

Google Developersにあるmod_pagespeedのダウンロードページから最新のCentOS/Fedora用のrpmファイルをダウンロードします。

$ wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_x86_64.rpm

ダウンロードしたrpmファイルをrpmコマンドでインストールします。

$ sudo rpm -ivh ./mod-pagespeed-stable_current_x86_64.rpm

インストールが完了すると、/etc/httpd/conf.dpagespeed.confpagespeed_libraries.confが配置されます。

$ ls -alF /etc/httpd/conf.d
合計 108
drwxr-xr-x 2 root root  4096 10月  7 01:50 ./
drwxr-xr-x 4 root root  4096 10月  7 01:48 ../
-rw-r--r-- 1 root root   392  9月 15 19:42 README
-rw-r--r-- 1 root root   347  9月 15 19:40 notrace.conf
-rw-r--r-- 1 root root 17165  8月  4 21:27 pagespeed.conf
-rw-r--r-- 1 root root 67417  8月  4 21:27 pagespeed_libraries.conf
-rw-r--r-- 1 root root   299  9月 15 19:40 welcome.conf

このpagespeed.confの中にある以下の行によって、mod_pagespeedが有効になります。

$ cat pagespeed.conf | grep "ModPagespeed on"
    ModPagespeed on

最後にApacheを起動します。

$ sudo service httpd start
Starting httpd:                                            [  OK  ]

テストしてみる

それではテストしてみましょう。今回はJavaScriptやCSSが含まれているTechmix HokkaidoのWebコンテンツをテストとして使いました。

Chromeのデベロッパーツールを使ってWebコンテンツのアクセスを確認してみます。以下のように、JavaScriptやCSSがファイル名そのままでは無く、pagespeedによって変換された名前になっていることが分かります。(画像をクリックすると拡大されます)

Techmix_Hokkaido_2014

更にレスポンスヘッダを確認すると、X-Mod-Pagespeedというヘッダが付与されていることが分かります。

Techmix_Hokkaido_2014 2

サーバ上を確認してみましょう。/var/cache/mod_pagespeed以下を確認すると、Webサイトにアクセスしたことによってキャッシュディレクトリに変換後のコンテンツが蓄積されていることが分かります。

$ ls -alF /var/cache/mod_pagespeed/
合計 20
drwxr-xr-x  5 apache apache 4096 10月  7 01:59 ./
drwxr-xr-x  8 root   root   4096 10月  7 01:50 ../
drwxr-xr-x  3 apache apache 4096 10月  7 01:59 54.64.235.31/
drwxr-xr-x  3 apache apache 4096 10月  7 01:59 prop_page/
drwxr-xr-x 10 apache apache 4096 10月  7 01:59 rname/

ということで、ちゃんと動いてますね!

まとめ

今回はWebサイトを丸ごと自動変換の対象にしましたが、バーチャルホスト毎やディレクトリ毎、又はコンテンツの種類毎など、様々な変換対象の設定が行えます。またFiltersという形で細かく設定の適用が調整出来ます。

この最適化自動変換を行った場合、Webコンテンツによっては正常に表示されない可能性がありますので、特に動的なWebシステムの場合は事前にしっかりとテストを行うことをオススメします。またWebサーバのモジュールとして動作するため、サーバリソースに負荷がかかりますので、最適化処理によってCPUやメモリ等が枯渇しないようにリソースを監視しておくことも必要です。

とはいえ、お手軽にWebサイトを最適化し、画面表示を"軽く"することが出来るのはとても便利ですので、Webサイト最適化手法の一つとしてご参考になれば幸いです。