cicindelaのデモを動かすところまででつまったところなど。
■まずはじめに
すべてはここからはじまった。
http://labs.edge.jp/cicindela/
お、簡単そうじゃんと思ったんだけどな。
使うのは簡単かも、環境構築と設定は…どうだろうか。
■環境
AWS(Amazon Linux OS AMI)
apche 2.2
perl 5.10.XX(失念)
mysql 5.X(失念)
yum でインストールできる 2012.09.04時点のバージョンのままでソースからビルドとかレベル高いことはやってません。
■AWSインスタンス作成
とりあえず、AWSでmicro(あとでメモリサイズ600MBではダメなのでsmallに変更するハメになります)インスタンスでサーバセットアップ。
■cicindelaインストール
さあやるぞと公式ドキュメントをみつつ。
http://code.google.com/p/cicindela2/wiki/Install
ここに書かれていることが素直にできればデモまではかんたんです。
私がつまってしまったのは私に問題のノウハウがなかったからです。
svnからソースDLしろってかいてるので
sudo su - して
yum -y install svn
ソースを/home/cicindela へチェックアウト。
パス書き換えるのが面倒なのでとりあえず動きや設定を理解するためにパスはドキュメントに従います。
■MySQLインストール
今度は、mysql がいるのでRDS使わずに1つのサーバでとりあえず全部すませてしまいます。
yum -y install mysql-server
で、my.cnf の設定はシンボリックリンク作らずに手動でマージします。
ここでテーブルヒープメモリのサイズが1GBをこした設定になっていることに気が付かず…。
さきに言っとくとあとで面倒なエラーになるので1GB以上のメモリつんでるサーバにmysqld インスコしないといけないです。
私はあとでmicro→smallにインスタンスタイプを変更しました。
■perlモジュールのインストール
次にperlモジュールのインスコ。
ここハマった。
インストールで依存関係とかよくわかんなにのでCPANでperlモジュールはインストールしたい。
なので下記コマンドでCPAN経由でインストールする。
perl -MCPAN -e shellまず、AWS環境(Amazon Linux OS AMIだけ?)特有ですが、gcc 入ってません。
なので yum -y install gcc します。
ただ、これでもダメです。
make ができません。
デフォルトでは開発ツールが入っていないようなのでインスコします。
http://memo-off.blogspot.jp/2012/07/make-command-not-found-on-amazon-linux.html
これでいくつかはインスコできるようになりますが、DBD::mysql がエラー。
私の場合は、C/C++からmysql参照するAPIがなく。
http://blogs.yahoo.co.jp/take_low_6/23542159.html
yum -y install mysql-develこれでDBD::mysql通った。
あと perl --version でたしか5.10.XXだったのでModule::Pluggableはインスコいらなかった。
ためしに perl -e "use Module::Pluggable;" してみてエラーなかったらインスコいらんぽい。
■apache + mod_perl インストール
で、次は apache + mod_perl のインスコ。
これはふつうに yum -y install httpd mod_perl した。
Redhat系OSならIncludeディレクティブはいらない。
http://futuremix.org/2004/05/mod_perl
もし気になるようなら /etc/httpd/conf.d/perl.conf コメントアウトして /etc/httpd/conf/httpd.conf に。
ただどちらにしても次の設定は必要。
Include /home/cicindela/etc/httpd/modperl.confこの設定によって、http://hostname:80/cicindela/ 以下にアクセスすると perl スクリプトが実行されるようになる。
あと、deamontools はインスコしなかった。
ログは touch と chmod して、ログローテの記述を足した。
これでインスコOK。
■デモの確認
デモを動かしつつほんとにインスコOKなのか確認します。
デモ
http://code.google.com/p/cicindela2/wiki/Demos
デモソースを svn switch で。
cd /home/cicindela/misc perl create_init_sql.pl --db_name=cicindela_clip_db | /usr/local/mysql/bin/mysql -uroot
perl create_init_sql.pl --db_name=cicindele_clip_db | mysql -u root -pで実行した。
次のデータインポートで問題が。
DBD::mysql::st execute failed: The table 'item_similarities' is full [for Statement "insert into item_similarities (item_id1, item_id2, score)...
なにこれ?
ぐぐると先人はおりますもので。
mysqlサーバのメモリ不足。。。
microの600MBサーバにapache + mysql やっちゃってるよってことで、smallにインスタンスタイプ変更。
で、service mysqld start したらエラー。
tail -f /var/log/mysql/error.log 見ると
こんな感じのエラーがね。
/var/lib//
上記をmvする。
ib_logfile0
ib_logfile1
上記をmvする。
mysql起動したら正常に立ち上がった。
もう一度データインポートしたら今度はちゃんとつっこめたみたい。
次に設定の_common.pm で datasouce => ["", "", ""] の2つ目ユーザ名と3つ目パスワードを自分のサーバ設定に変更。
で、batch.pl を起動。
うおーい!
モジュールたらんぞ!
これCPANからインスコ。
http://isann0330.tumblr.com/post/30788996849/vps-1g-centos6-2-unixbench
うおーい!
モジュールたらんぞ!
これCPANからインスコ。
http://isann0330.tumblr.com/post/30788996849/vps-1g-centos6-2-unixbench
で、もっかい。
やったー動いたー!
やったー動いたー!
apache 起動してURL叩いたらなんかそっけいない数字の羅列が。
どうやらこれでOKぽい。
まああとはこのリコメンド結果のIDを自サイトのコンテンツと紐付けてかっこよく表示してやればリコメンドの出来上がり!ってわけで。
設定は大変でした。
おわり。
0 件のコメント:
コメントを投稿