Snow Leopard に Cicindela をインストール
Snow Leopard に 汎用レコメンデーションエンジン Cicindela を
インストールした時のメモ。
基本は
Google Code Archive - Long-term storage for Google Code Project Hosting.
Google Code Archive - Long-term storage for Google Code Project Hosting.
の通り。
環境
- Mac OS X 10.6.2 (Snow Leopard)
- MacPorts Version: 1.8.1
- Cicindela r162
MacPorts でいろいろインストール
Apache とか MySQL が必要なのでインストール。
MAMP は mod_perl が入っていないのでダメ、
XAMPP もなんかうまく行かなかったので MacPorts を推奨。
$ sudo port intall mysql5-devel $ sudo port install apache2 $ sudo port install mod_perl2
mode_perl2 を入れると Perl 5.8 もインストールされるので注意。
$ cpan
で CPAN の設定もしておく。
Cicindela のインストール
Cicindela は ~/devel/cicindela にインストールすることにした。
$ cd devel $ svn checkout http://cicindela2.googlecode.com/svn/trunk/ cicindela
Perl スクリプト中の Perl 及び Cicindela のパスを書き換えるスクリプトを実行。
$ cd cicindela/misc $ perl substitute_project_paths.pl --perl_path=/opt/local/bin/perl --cicindela_home=/Users/mallowlabs/devel/cicindela
Apache に mod_perl というか Cicindela の設定を書き込む
$ sudo vim /opt/local/apache2/conf/httpd.conf
末尾に 以下を追記
Include /Users/mallowlabs/devel/cicindela/etc/httpd/modperl.conf
MySQL の設定も書き込む
$ sudo cp /Users/mallowlabs/devel/cicindela/etc/mysql/my.cnf /opt/local/etc/mysql5/my.cnf
CPAN モジュールのインストール
$ sudo perl -MCPAN -e "install DBI; install DBD::mysql; install Ima::DBI; install Time::Piece; install Log::Log4perl; install Module::Pluggable; install Class::Singleton;"
この時点では DBD::mysql のインストールに失敗しているが
気づかなかったのでスルー。解決方法は後述。
ログの設定
$ cd /Users/mallowlabs/devel/cicindela/ $ touch var/logs/log.txt $ chmod a+rw var/logs/log.txt
デモの実行
デモ用ブランチに切り替え
$ cd /Users/mallowlabs/devel/cicindela/ $ svn switch http://cicindela2.googlecode.com/svn/branches/demo_data/misc misc $ cd misc
ここで MySQL Server を起動するとディレクトリが無いだの権限が無いだの言われるので
必要なディレクトリを作ってやる。(本番環境ではもっとちゃんとしてね)
$ sudo mkdir /opt/local/var/run $ sudo mkdir /opt/local/var/run/mysql5 $ sudo chmod -R a+rw /opt/local/var/run/ $ sudo mkdir /opt/local/var/db/ $ sudo mkdir /opt/local/var/db/mysql5 $ sudo chmod -R a+rw /opt/local/var/db
初期化スクリプトも実行
$ sudo -u mysql mysql_install_db5
MySQL サーバーを起動
$ cd /opt/local ; sudo /opt/local/lib/mysql5/bin/mysqld_safe &
Cicindela のデモ用テーブルを作成
$ cd /Users/mallowlabs/devel/cicindela/misc $ perl create_init_sql.pl --db_name=cicindela_clip_db | /opt/local/bin/mysql5 -uroot
データを読み込むのに CPAN モジュールが追加で必要らしいのでインストール
$ sudo perl -MCPAN -e "install Text::CSV_XS;"
いざインポート
$ cd /Users/mallowlabs/devel/cicindela/misc/clip_data/ $ gunzip -c ldclip_demo_dataset.csv.gz | head -n 10000 | perl importer.pl --work_dir=`pwd` | /opt/local/bin/mysql5 -uroot cicindela_clip_db
全データやると時間がかかりすぎる上に
うまくいかなかったりするのでとりあえず10000行で。
設定
$ cd /Users/mallowlabs/devel/cicindela $ vim lib/Cicindela/Config/_common.pm
14 ## 15 ## sample settings for ldclip_dataset 16 ## この間をコメントアウトを外す 72 ## 73 ## sample settings for movielens dataset 74 ##
datasource => [ 'dbi:mysql:cicindela_clip_db;host=localhost', 'cicindela', 'japana' ],
とかなってるところを
datasource => [ 'dbi:mysql:cicindela_clip_db;host=localhost', 'root', '' ],
に書き換える。
いざ集計
$ perl bin/flush_buffers.pl
としたらエラーが出て止まる。
install_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC
どうやら DBD::mysql のインストールに失敗しているらしい。
無理矢理インストールしてみる。
$ cd ~/.cpan/build/DBD-mysql-4.013-bIhj26/ $ sudo perl Makefile.PL --cflags="-I/opt/local/include/mysql5/mysql" --libs="-L/opt/local/lib -L/opt/local/lib/mysql5/mysql -lmysqlclient -L/opt/local/lib -lz -lm -L/opt/local/lib -lssl -lcrypto" --mysql_config="/opt/local/bin/mysql_config5" $ sudo make $ sudo make install
DBD-mysql-4.013-ランダムな文字列 の下でオプションを指定して Makefile を作成する。
気を取り直して集計
$ perl bin/flush_buffers.pl $ perl bin/batch.pl --track=1 $ perl bin/batch.pl --track=1
Apache 起動
$ sudo /opt/local/apache2/bin/apachectl start
ブラウザで以下の URL にアクセス
http://127.0.0.1/cicindela/recommend?op=for_item&set=clip_simple&item_id=39
37 5 131 360 36 388 3 12 278 436
とか表示されたら成功。
夢が広がりんぐですね。