2010年11月29日月曜日

Thrift導入メモ

/*
*Thrift(スリフト)のインストール事前準備
*/
thriftでbootstrapをした際にautoconf-2.65以上を求められるので
予めバージョンアップしておく(CentOSだと駄目っだ)

cd /usr/local/src
wget ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.68.tar.gz
tar zxvf autoconf-2.68.tar.gz
cd autoconf-2.68
CC="gcc44" \
GCC="gcc44" \
CXX="g++44" \
CFLAGS="-march=native -O3 -m64 -pipe -fomit-frame-pointer -mfpmath=sse -msse4 -msse4.1 -msse4.2" \
CXXFLAGS="-march=native -O3 -m64 -pipe -fomit-frame-pointer -mfpmath=sse -msse4 -msse4.1 -msse4.2" \
./configure \
--host=x86_64-redhat-linux-gnu \
--build=x86_64-redhat-linux-gnu \
--target=x86_64-redhat-linux \
--program-prefix= \
--prefix=/usr \
--exec-prefix=/usr \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--sysconfdir=/etc \
--datadir=/usr/share \
--includedir=/usr/include \
--libdir=/usr/lib64 \
--libexecdir=/usr/libexec \
--localstatedir=/var \
--sharedstatedir=/usr/com \
--mandir=/usr/share/man \
--infodir=/usr/share/info
make -j4
sudo make install

/*
*Thrift(スリフト)のインストール、設定
* http://wiki.apache.org/thrift/ThriftInstallation
* http://d.hatena.ne.jp/hagaeru3sei/20100729
*/
cd /usr/local/src
svn co http://svn.apache.org/repos/asf/thrift/trunk thrift
cd thrift

./bootstrap.sh

//libtoolizeが無いと怒られたら下記をインストール
sudo yum install automake libtool

//javaを利用するにはantが必須なのでインストール
sudo yum install ant.x86_64 byacc flex

//antを実行するときに下記ディレクトリがない場合エラーになるので作成
sudo mkdir /usr/share/java-1.6.0
sudo mkdir /usr/lib/java-1.6.0

//phpだけにした
CC="gcc44" \
GCC="gcc44" \
CXX="g++44" \
CFLAGS="-march=native -O3 -m64 -pipe -fomit-frame-pointer -mfpmath=sse -msse4 -msse4.1 -msse4.2" \
CXXFLAGS="-march=native -O3 -m64 -pipe -fomit-frame-pointer -mfpmath=sse -msse4 -msse4.1 -msse4.2" \
./configure \
--host=x86_64-redhat-linux-gnu \
--build=x86_64-redhat-linux-gnu \
--target=x86_64-redhat-linux \
--program-prefix= \
--prefix=/usr \
--exec-prefix=/usr \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--sysconfdir=/etc \
--datadir=/usr/share \
--includedir=/usr/include \
--libdir=/usr/lib64 \
--libexecdir=/usr/libexec \
--localstatedir=/var \
--sharedstatedir=/usr/com \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
--enable-gen-php \
--disable-gen-java \
--disable-gen-cpp \
--disable-gen-c_glib \
--disable-gen-go \
--disable-gen-as3 \
--disable-gen-csharp \
--disable-gen-py \
--disable-gen-rb \
--disable-gen-perl \
--disable-gen-erl \
--disable-gen-cocoa \
--disable-gen-st \
--disable-gen-ocaml \
--disable-gen-hs \
--disable-gen-xsd \
--disable-gen-html \
--disable-gen-js \
--disable-gen-javame \
--with-php \
--with-php_extension \
--without-java \
--without-cpp \
--without-csharp \
--without-erlang \
--without-python \
--without-perl \
--without-ruby \
--without-haskel \
--without-go

//結果こうなるはず
Building code generators ..... : php

Building C++ Library ......... : no
Building C (GLib) Library .... : no
Building Java Library ........ : no
Building C# Library .......... : no
Building Python Library ...... : no
Building Ruby Library ........ : no
Building Haskell Library ..... : no
Building Perl Library ........ : no
Building PHP Library ......... : yes
Building Erlang Library ...... : no
Building Go Library .......... : no

Using php-config ............. : /usr/bin/php-config


//build
make -j4
sudo make install

//php用のライブラリをアクセス出来る箇所に移動
mkdir /var/www/library/Thrift
cp -rf lib/php/src/* /var/www/library/Thrift

//[追記]/usr/lib/phpに自動でinstallされてた
//あわせて/etc/php.d/thrift_protocol.iniも入っている
//手動はこちら
// cd lib/php
// sudo make install

//Cassandra - Thriftプロトコルを使用するために生成
cd /usr/local/cassandra/interface/
sudo cp -p cassandra.thrift cassandra.thrift.org
//cassandra.thrift内のnamespaceで始まる箇所で
//php以外をコメントアウト
sudo vi cassandra.thrift
sudo thrift --gen php cassandra.thrift
//あとはこれもアクセスできる箇所へ移動
// Thrift/packages/cassandraが多かったので合わせる
mkdir -p /var/www/library/Thrift/packages
cp -rf gen-php/cassandra /var/www/library/Thrift/packages/
sudo chown cassandra:cassandra -R gen-php

0 件のコメント :