Amazon LinuxでApache+mod_pagespeedを使ってみる
はじめに
PageSpeedとは
Googleが開発したWebサイト最適化ツール群で、Webサイトを解析し最適化の為のアドバイスをしてくれるツールと、コンテンツを最適な形に自動変換するツールの、大きく2つが用意されています。
前者の解析ツールはPageSpeed Insightsで、この画面でWebサイトのURLを入力すると、コンテンツを解析しPCで閲覧した場合とモバイルで閲覧した場合とそれぞれの結果を表示してくれます。なおAPIも用意されているので外部プログラムから解析を実行することも可能です。
後者の自動変換ツールはCDNのように動作するサービスと、Webサーバ(Apache,Nginx)に組み込んで動作するモジュールと、C++クラスライブラリのSDKの3つが提供されています。
今回は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.dにpagespeed.confとpagespeed_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によって変換された名前になっていることが分かります。(画像をクリックすると拡大されます)
更にレスポンスヘッダを確認すると、X-Mod-Pagespeedというヘッダが付与されていることが分かります。
サーバ上を確認してみましょう。/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サイト最適化手法の一つとしてご参考になれば幸いです。