mysql 5.1 インストール
(シシンデラのインストールなんだけどね)
googlecode に手順載ってる通りにすすめる
cd /home
svn checkout http://cicindela2.googlecode.com/svn/trunk/ cicindela
でこれで/homeディレクトリにcicindelaってディレクトリが出来た
グループとユーザーを適当に作成
groupadd mysql
useradd -g mysql mysql
(もちろんログインとかしないんだったら
useradd -g mysql -s /sbin/nologin mysql とかのオプションを
適当につけて。)
mysql 5.1のソースコードをダウンロードする。
以下ページより
http://dev.mysql.com/downloads/mysql/5.1.html
ここのSourceってのを持ってくるrpmでも良いのかも知れないけど、
ソースの方が細かい設定できる気がする。
(もちろん個人的な主観で妄想的なことは十分承知)
※なんか登録させられるけど適当に入れて。
mysql-5.1.30.tar.gzをダウンロード
/usr/local/srcに配置
cd /usr/local/src
tar xvzf mysql-5.1.30.tar.gz
cd mysql-5.1.30
./configure --with-charset=utf8 --with-extra-charsets=all --with-mysqld-user=mysql --with-innodb --prefix=/usr/local/mysql-5.1.30
(--with-innodbとかつけないと、innodb関連のオプションを設定ファイルに書くと
そんなオプションしらねーよとか言われる。)
make all
make install
シンボリックリンク作成
ln -s /usr/local/mysql-5.1.30/ /usr/local/mysql
ライブラリを登録
echo /usr/local/mysql/lib/mysql > /etc/ld.so.conf.d/mysql.conf
ldconfig
起動スクリプトコピー
cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysql
mysqlの設定
ln -s /home/cicindela/etc/mysql/my.cnf /usr/local/mysql/my.cnf
DB初期化
/usr/local/mysql/bin/mysql_install_db --user=mysql
起動
/etc/ini.d/mysql start
Starting MySQL.............. [ OK ]
と出ればmysqlに関しては終了。
シシンデラを使うには続きがある。
perlモジュールのインストールCPAN経由
perl -MCPAN -e "install DBI; install DBD::mysql; install Ima::DBI;install Time::Piece; install Log::Log4perl;install Module::Pluggable; install Class::Singleton;"
初期設定が出来てないと色々と聞かれるので
Are you ready for manual configuration? [yes] とか出たら
思い切ってNoと答えてみるw
あっ自動でやってくれるのね♪便利ですCPAN。
次apache + mod_perlのインストール
http://httpd.apache.org/download.cgiからダウンロードできる。
(いつのまにかapacheも2.2系まででてるな~。
でもよくわかんねーから。1.3系使います。
うごくのか? apache 1.3+ mod_perl 1.0系で・・・・w)
apacheは何度もインストールしてるから判らなければココをみてくれ。
http://blog.goo.ne.jp/hirohito_japan/m/200807
(sslの手順だけ省けば出来るでしょ。
そろそろ同じことを書くのは面倒になってきたw)
mod_perlのインストール
http://perl.apache.org/download/index.htmlここから
1.0系の方をダウンロードして。
/usr/local/srcに配置
cd /usr/local/src
tar xvzf mod_perl-1.0-current.tar.gz
cd mod_perl-1.30
perl Makefile.PL USE_APXS=1 WITH_APXS=/usr/local/apache/bin/apxs EVERYTHING=1
make all
make install
でmod_perlは完了。
試しに
/usr/local/apache/bin/apachectl start
でエラー無く起動することを確認。
/usr/local/apache/bin/apachectl stop
次、daemontoolsのインストール
googlecodeより
※daemon tools は,入力バッファをフラッシュしたり,定期的に新しいデータで中間集計テーブルを再計算させるために使います。従って,新たなデータが次々に入ってこない場合 ( Demos の例など,固定のデータセットを読み込ませて結果を見るだけの場合など) はこのステップをスキップしても問題ありません。
って書いてあるから次々にデータが入ってくるから入れないと困るんだな。
daemontoolsインストール
http://cr.yp.to/daemontools/install.htmlココから
cd ./admin/daemontools-0.76
./package/install
・・・・・・なんかエラー出たw
教えてグーグル大先生!!!!
パッチが出てるらしいじゃあーりませんか。
wget http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch
patch -p1 <daemontools-0.76.errno.patch
./package/install
ココまでOKで
分析用のメインバッチのシンボリックリンク作成
ln -s /home/cicindela/etc/service/cicindela_batch /service/cicindela_batch
データ挿入用バッファをフラッシュするバッチのシンボリックリンク作成
ln -s /home/cicindela/etc/service/cicindela_flush_buffers /service/cicindela_flush_buffers
コレでインストールはOK
で、
cd /home/cicindela/misc
perl create_init_sql.pl --db_name=test_recommend | /usr/local/mysql/bin/mysql -uroot
でテスト用のDBを作成
vi /home/cicindela/lib/Cicindela/Config/_common.pm
$C{DEFAULT_DATASOURCE} = [ 'dbi:mysql:cicindela;host=localhost', 'cicindela', 'japana' ];
の記述を
$C{DEFAULT_DATASOURCE} = [ 'dbi:mysql:test_recommend;host=localhost', 'root', '' ];
に変更して保存
でapache起動
http://localhost/cicindela/record?set=item&op=insert_pick&user_id=1&item_id=1
でアクセスしてみる。.....
なにも反応なし。
ログを確認すると
WARN: Can't connect to data source 'HASH(0x89f79f0)' because I can't
work out what driver to use (it doesn't seem to contain a 'dbi:driver:' prefix and the DB
I_DRIVER env var is not set) at /usr/lib/perl5/site_perl/5.8.8/Ima/DBI.pm line 328
となっている。
google大先生に聞いてみた
http://localhost/cicindela/record?set=item&op=insert_pick&user_id=1&item_id=1
のURLのset=itemと言うパラメータが鍵で、
set=xxxのxxxのフィルタを
cicindela/lib/Cicindela/Config/_common.pmに登録しないとならないらしい。
面倒なのでclip_simpleの記述をコピーしてclip_simpleをitemに変更。
再度アクセス。
またログを確認するとエラーが・・・・
Perhaps the DBD::mysql perl module hasn't been fully installed,
なんかDBDのモジュールが完全にインストールされてねーよ
って言われてるのか?
仕方無いので 再度 perl -MCPAN -e shell
> install DBD::mysqlでインストール
なんかエラー出てるしw コレが原因か。
ln -s /usr/local/mysql/bin/mysql_config /usr/local/bin/mysql_config
で解消できた。
再度アクセス
おお。ログにエラーなし。データが登録されたのかな?
/usr/local/mysql/bin/mysql -uroot -p test_recommend
mysql> select * from picks;
おぉ入ってるじゃありませんかー 一応成功ですです。
でもぉ~ user_id と item_idは番号ではないのですよー
フィルタ定義を以下のように書くと user_id item_id共に数値以外でも
変換してくれる模様
'item' => {
datasource => [ 'dbi:mysql:test_recommend;host=localhost', 'root', '' ],
filters => [
[ 'PicksExtractor', { interval => '1 year' } ],
'InverseUserFrequency',
'ItemSimilarities',
],
# user_id item_idが番号以外
use_user_char_id => 1,
use_item_char_id => 1,
# レコメンドフィルタにItemSimilaritiesを使う設定かな?
recommender => 'ItemSimilarities',
calculation_track => 1,
# 10分毎にレコメンドを再計算
refresh_interval => 10 * 60 * 1,
},
あとはテストデータを放り込んでいくだけ。
以下テーブル一覧だけど。
categories
categories_buffer
item_id_char2int
last_processed
picks
picks_buffer
ratings
ratings_buffer
tagged_relations
tagged_relations_buffer
uninterested
uninterested_buffer
user_id_char2int
う~んpicksにはデータが入るが、extracted_picks も item_similarities_online
も出来ない・・・・・
ログを見ると
WARN: prepare_cached(desc picks_buffer) statement handle DBIx::ContextualFetch::st=HASH(0x8b910dc) still Active at /usr/lib/perl5/site_perl/5.8.8/Ima/DBI.pm line 398
なんかワーニングでてまっせ大先生。
/usr/lib/perl5/site_perl/5.8.8/Ima/DBI.pmを編集
sub _mk_sql_closure の中
? $dbh->prepare_cached($sql)を
? $dbh->prepare_cached($sql,undef,3)に変更
ワーニングはコレで解消された。
それでもでないw 何が悪いのか。。。
良くわからないけど、フィルタを登録しなおしたら
出た。
'item' => {
datasource => [ 'dbi:mysql:test_recommend;host=localhost', 'root', '' ],
filters => [
'PicksExtractor',
'InverseUserFrequency',
'ItemSimilarities',
],
use_user_char_id => 1,
use_item_char_id => 1,
recommender => 'ItemSimilarities',
refresh_interval => 10 * 60 * 1,
},
OKトニー
あとは実装されてるフィルタが何かとか、
この場面ではどのフィルタが有効だとか、
そうゆうことが判ればイケる。