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

2010年11月14日日曜日

Cassandra導入メモ

/*
* Cassandra(カサンドラ)
*/
http://wiki.apache.org/cassandra/FrontPage
http://labs.unoh.net/2010/08/cassandra.html
http://www.pablowe.net/2010/03/cassandra-quick-install-on-centos-5/

cd /usr/local
//ここでダウンロード・展開
ln -s apache-cassandra-* cassandra
cd cassandra

//batは使わないので-x
chmod a-x bin/*.bat

groupadd cassandra
useradd -d /usr/local/cassandra -c Cassandra -g cassandra cassandra
chown cassandra:cassandra -R /usr/local/cassandra/*
mkdir -p /var/lib/cassandra; chown cassandra:cassandra /var/lib/cassandra
mkdir -p /var/log/cassandra; chown cassandra:cassandra /var/log/cassandra

//あとはconfを変更する
//cassandra.yamlでは基本的なディレクトリなどの設定
//cassandra-env.shのJMX_PORTなど(default:8080)


//起動用shell
cd /etc/init.d
wget http://www.pablowe.net/cassandra
vi cassandra
------------------------------------------------------------
#!/bin/bash
#
# /etc/init.d/cassandra
#
# Startup script for Cassandra
# http://www.pablowe.net/cassandra
#
# chkconfig: 2345 20 80
# description: Starts and stops Cassandra

#export JAVA_HOME=/usr/java/default
export CASSANDRA_HOME=/usr/local/cassandra/
export CASSANDRA_INCLUDE=/usr/local/cassandra/bin/cassandra.in.sh
export CASSANDRA_CONF=/usr/local/cassandra/conf
export CASSANDRA_OWNR=cassandra
export PATH=$PATH:$CASSANDRA_HOME/bin
log_file=/var/log/cassandra/cassandra.log
pid_file=/var/lib/cassandra/cassandra.pid

if [ ! -f $CASSANDRA_HOME/bin/cassandra -o ! -d $CASSANDRA_HOME ]
then
echo "Cassandra startup: cannot start"
exit 1
fi

case "$1" in
start)
# Cassandra startup
echo -n "Starting Cassandra: "
su $CASSANDRA_OWNR -c "$CASSANDRA_HOME/bin/cassandra -p $pid_file" > $log_file 2>&1
echo "OK"
;;
stop)
# Cassandra shutdown
echo -n "Shutdown Cassandra: "
su $CASSANDRA_OWN -c "kill `cat $pid_file`"
echo "OK"
;;
reload|restart)
$0 stop
$0 start
;;
status)
;;
*)
echo "Usage: `basename $0` start|stop|restart|reload"
exit 1
esac

exit 0

-----------------------------------------------------------------

chmod +x /etc/init.d/cassandra
chkconfig --add cassandra
chkconfig cassandra on

//実際はコンフィグとかログ変更があるけどここまでで動く
service cassandra start

//PATHとJAVA_HOMEを宣言しておく
vi /etc/profile
//一番下でよいので下記3行追加
//Ver SL6.0
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64
export CLASS_PATH=$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin:/usr/local/cassandra/bin