2012年4月12日木曜日

SPDY 構築太郎

やっと構築までこぎつけたので、一旦メモで。

SPDYとはGoogleが策定を進めている通信プロトコルらしく
HTTPよりはやいお!!ってことらしい。

gmail、googlecalenderとか、Twitterとかが実装しているらしい太郎。

なんかみたところ、通常のHTTPの50%近くの高速化を目標としているらしい。
今後の主流となること間違いないという予想太郎。

ただ、Firefox11系と、Choromeの最新版?でしか対応してないので
大規模サービスの画像配信とかで使うにはちょっと難しいのかな・・・

まあ、apacheのモジュール公開されてたんで構築してみた。
環境は、Ubuntu 11.04


#まずは事前準備
apt-get install subversion curl g++ apache2 patch binutils julius make

#任意のディレクトリで

mkdir mod_spdy
mkdir temp
cd temp

#depot_tools持ってくる
svn co http://src.chromium.org/svn/trunk/tools/depot_tools

#PATH通す
export PATH="$PATH":`pwd`/depot_tools
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/yattarou/temp/depot_tools

#SPDYのコード落としてくる ちなみにrootで実行してる
gclient config "http://mod-spdy.googlecode.com/svn/trunk/src"
Running depot tools as root is sad.
#失敗したw

#gclientソース見てみる
#base_dirんとこでうまくいってないっぽいので、パワープレイ。
#パス直書きにしてやったw
vim /home/yattarou/temp/depot_tools/gclient

#!/usr/bin/env bash
# Copyright (c) 2009 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

base_dir=$(dirname "$0")

"$base_dir"/update_depot_tools

PYTHONDONTWRITEBYTECODE=1 exec python "$base_dir/gclient.py" "$@"

#もっかいチャレンジ
/home/yattarou/temp/depot_tools/gclient config "http://mod-spdy.googlecode.com/svn/trunk/src"
Running depot tools as root is sad.

#失敗した
#update_depot_toolsのコードみる
#rootの権限チェック、コメントアウトした。
vim /home/yattarou/temp/depot_tools/update_depot_tools

#!/usr/bin/env bash
# Copyright (c) 2011 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# This script will try to sync the bootstrap directories and then defer control.

if [ "$USER" == "root" ];
then
echo Running depot tools as root is sad.
exit
fi

#もっかいやってみる
/home/yattarou/temp/depot_tools/gclient config "http://mod-spdy.googlecode.com/svn/trunk/src"

#いけたぽいので
/home/udagawa/temp/depot_tools/gclient sync --force
1>________ running 'svn checkout http://mod-spdy.googlecode.com/svn/trunk/src /home/udagawa/mod_spdy/src --non-interactive --force --ignore-externals' in '/home/yattarou/mod_spdy'
・・・・
いっぱいおとしてくる。

26>Checked out revision 933.
Syncing projects: 96% (26/27), done.ols/gyp

________ running '/usr/bin/python src/build/gyp_chromium' in '/home/yattarou/mod_spdy'
Updating projects from gyp files...

#落としてきたら


cd src/
./build_modssl_with_npn.sh

#.soをコピー
cp -rp mod_ssl.so /usr/lib/apache2/modules/
a2enmod ssl

#おれおれ証明書作成
apt-get install ssl-cert

make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /tmp/selfsigned.crt
mkdir /etc/apache2/ssl
mv /tmp/selfsigned.crt /etc/apache2/ssl/

#証明書の設定編集
vim /etc/apache2/sites-available/default-ssl

SSLCertificateFile /etc/apache2/ssl/selfsigned.crt
#コメントアウト
#SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

a2ensite default-ssl

#apache再起動
/etc/init.d/apache2 restart

#SPDYのBUILD
make BUILDTYPE=Release
・・・・
#いっぱいでる

cp out/Release/libmod_spdy.so /usr/lib/apache2/modules/mod_spdy.so
echo "LoadModule spdy_module /usr/lib/apache2/modules/mod_spdy.so" | tee /etc/apache2/mods-available/spdy.load
echo "SpdyEnabled on" | tee /etc/apache2/mods-available/spdy.conf

a2enmod spdy
Enabling module spdy.
Run '/etc/init.d/apache2 restart' to activate new configuration!

#apache再起動
/etc/init.d/apache2 restart


#これでおk
#下のでいろいろ見れる
chrome://net-internals/#spdy

#あと、SPDY用のベンチマークツール
#windowsで確認するとき、chrome.exe --enable-benchmarkingしないと起動しないので注意
http://dev.chromium.org/developers/design-documents/extensions/how-the-extension-system-works/chrome-benchmarking-extension


すこし、確認したところ、まあまま早い感じがする。
検証結果は、あとでちゃんと載せます。

1 件のコメント:

Unknown さんのコメント...

SPDYの詳細までは詳しく見てないけどリクエスト数の多い、サーバー間のAPIをRESTで使っているとこの置き換えとかありな気がする。