TokyoTyrantをPHPから使うための環境構築
2011-04-19 paco, pecl, php, tokyotyrant, ubuntu
PHPのプロジェクトでTokyoTyrantを使う必要があったのでその環境構築方法をメモしておきます。
環境は以下の通り:
- サーバー
- Ubuntu 9.04
- PHP
- 5.2.10-2ubuntu6.7
環境構築は以下の順序で行います。
- TokyoCabinetインストール
- TokyoTyrantインストール
- パッケージオーガナイザー 「paco」インストール
- phpizeが必要なのでphp5-develインストール
- PECLのTokyoTyrantをインストール
- PHPから接続確認
3.と4.は、Peclライブラリをpeclコマンドでインストールする場合は不要です。 それでは行ってみましょう!
1. TokyoCabinetインストール
# cd /usr/local/src/
# wget http://1978th.net/tokyocabinet/tokyocabinet-1.4.47.tar.gz
# tar zxvf tokyocabinet-1.4.47.tar.gz
# cd tokyocabinet-1.4.47
# ./configure
..
configure: error: bzlib.h is required
怒られたのでlibbz2-devインストール。
# aptitude install libbz2-dev
再度configure。
# ./configure
..
#================================================================
# Ready to make.
#================================================================
# make
..
#================================================================
# Ready to install.
#================================================================
# make install
..
#================================================================
# Thanks for using Tokyo Cabinet.
#================================================================
2. TokyoTyrantインストール
# pwd
/usr/local/src
# wget http://1978th.net/tokyotyrant/tokyotyrant-1.1.41.tar.gz
--2011-04-10 23:49:09-- http://1978th.net/tokyotyrant/tokyotyrant-1.1.41.tar.gz
Resolving 1978th.net... 182.48.59.139
Connecting to 1978th.net|182.48.59.139|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 196196 (192K) [application/x-gzip]
Saving to: `tokyotyrant-1.1.41.tar.gz'
100%[========================================================================================>] 196,196 --.-K/s in 0.1s
2011-04-10 23:49:09 (1.33 MB/s) - `tokyotyrant-1.1.41.tar.gz' saved [196196/196196]
# pwd
/usr/local/src
# tar zxvf tokyotyrant-1.1.41.tar.gz
# cd tokyotyrant-1.1.41
# ./configure
..
#================================================================
# Ready to make.
#================================================================
# make
..
#================================================================
# Ready to install.
#================================================================
# make install
..
#================================================================
# Thanks for using Tokyo Tyrant.
#================================================================
起動してみる。
# ttservctl start
Starting the server of Tokyo Tyrant
Executing: ttserver -port 1978 -dmn -pid /var/ttserver/pid
Done
起動確認。
# ps aux | grep ttserver
root 4822 0.1 0.0 142328 1004 ? Sl 23:49 0:00 ttserver -port 1978 -dmn -pid /var/ttserver/pid /var/ttserver/casket.tch#bnum=1000000
root 4833 0.0 0.0 1776 640 pts/0 R+ 23:50 0:00 grep --color=auto ttserver
3. pacoインストール
通常パッケージをソースコードからmake/make installすると、バイナリファイルや設定ファイルがいたるところに散らばってしまいます。アンインストールする際にそれらのファイルが何処にあるのか把握できなくて、ゴミファイルが残る可能性があります。
pacoは「make install」コマンドをラップし、その際に散らばったファイルを管理することができます。今回はPECLライブラリをソースからインストールしたいと思うのでこのpacoを用いたいと思います。
参考: paco - a source code pacKAGE oRGANIZER for Unix/Linux
# pwd
/usr/local/src
# wget http://sourceforge.net/projects/paco/files/paco/2.0.9/paco-2.0.9.tar.gz
--2011-04-11 00:40:57-- http://sourceforge.net/projects/paco/files/paco/2.0.9/paco-2.0.9.tar.gz
..
Saving to: `paco-2.0.9.tar.gz'
100%[==================================================================>] 430,797 2.58M/s in 0.2s
2011-04-11 00:41:01 (2.58 MB/s) - `paco-2.0.9.tar.gz' saved [430797/430797]
# tar zxvf paco-2.0.9.tar.gz
# cd paco-2.0.9
# ./configure --disable-gpaco
# make
..
# make install
..
自分自身を記憶しておく。
# make logme
..
paco-2.0.9:
4k /usr/local/bin/ocap
1M /usr/local/bin/paco
8k /usr/local/bin/pacoball
8k /usr/local/bin/rpm2paco
8k /usr/local/bin/superpaco
4k /usr/local/etc/pacorc
28k /usr/local/lib/libpaco-log.a
4k /usr/local/lib/libpaco-log.la
@ /usr/local/lib/libpaco-log.so -> libpaco-log.so.0.0.0
@ /usr/local/lib/libpaco-log.so.0 -> libpaco-log.so.0.0.0
32k /usr/local/lib/libpaco-log.so.0.0.0
4k /usr/local/lib/pkgconfig/paco.pc
8k /usr/local/share/man/man5/pacorc.5
12k /usr/local/share/man/man8/paco.8
4k /usr/local/share/man/man8/pacoball.8
4k /usr/local/share/man/man8/rpm2paco.8
4k /usr/local/share/man/man8/superpaco.8
8k /usr/local/share/paco/README
4k /usr/local/share/paco/faq.txt
4k /usr/local/share/paco/pacorc
1.2M Total
4. phpizeが必要なのでphp5-develインストール
# aptitude search php5-dev
p php5-dev - Files for PHP5 module development
# aptitude install php5-dev
5. PECLのTokyoTyrantをインストール
# pwd
/usr/local/src
# wget http://pecl.php.net/get/tokyo_tyrant-0.6.0.tgz
--2011-04-19 14:49:46-- http://pecl.php.net/get/tokyo_tyrant-0.6.0.tgz
Resolving pecl.php.net... 76.75.200.106
Connecting to pecl.php.net|76.75.200.106|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 27081 (26K) [application/octet-stream]
Saving to: `tokyo_tyrant-0.6.0.tgz'
100%[======================================================================>] 27,081 23.4K/s in 1.1s
2011-04-19 14:49:48 (23.4 KB/s) - `tokyo_tyrant-0.6.0.tgz' saved [27081/27081]
# tar zxvf tokyo_tyrant-0.6.0.tgz
# cd tokyo_tyrant-0.6.0
# phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
# ./configure
# make
# make test
# paco -D make install
Installing shared extensions: /usr/lib/php5/20060613+lfs/
*** Warning: The database is older than 7 days.
*** Run 'paco -ua' to update it.
# paco -ua
pacoでインストールされたか確認。
# paco -1Fdsa
1.2M 20 11-Apr-2011 paco-2.0.9
240k 1 19-Apr-2011 tokyo_tyrant-0.6.0
TokyoTyrantの設定ファイルを作成。
# vi /etc/php5/conf.d/tokyo_tyrant.ini
--
extension=tokyo_tyrant.so
--
読み込まれるか確認。
# php -m | grep tokyo
tokyo_tyrant
6. PHPから接続確認
動作確認スクリプト作成。
# vi /tmp/tokyo_tyrant_test.php
<?php
try {
$tt = new TokyoTyrant('localhost');
// 複数データ登録
$tt->put(
array(
'key0'=>'value0',
'key1'=>'value1',
'key2'=>'value2'
)
);
// 単体データ取得
var_dump($tt->get('key0'));
// 複数データ取得
var_dump($tt->get(array('key0', 'key1', 'key2')));
} catch (TokyoTyrantException $e) {
echo "Error: " . $e->getMessage() . "\n";
}
?>
実行してみる。
$ php /tmp/tokyo_tyrant_test.php
string(6) "value0"
array(3) {
["key0"]=>
string(6) "value0"
["key1"]=>
string(6) "value1"
["key2"]=>
string(6) "value2"
}
OK. 終了! Tokyo系もpacoすればよかったと後で気付きました orz.