プログラマでありたい

おっさんになっても、プログラマでありつづけたい

MongoDBを入れてみた

 必要に迫られて、CentOS 5.4にMongoDBを入れてみました。

 # yum install mongodb-server mongodb-devel
 # /etc/init.d/mongod start
 Starting mongod:[  OK  ]


接続してみると、エラー。

#mongo
Sun Jun 26 21:53:49 *** warning: spider monkey build without utf8 support.  consider rebuilding with utf8 support
connecting to: test
Sun Jun 26 21:53:49 Error: couldn't connect to server 127.0.0.1 (anon):1154
exception: connect failed


ログ等を確認してみると、そもそも起動していないっぽい。
起動O.K.って出してたじゃないですか。。。

# /etc/init.d/mongod status
mongod dead but subsys locked

# cat /var/log/mongodb/mongodb.log
Sun Jun 26 21:52:22 MongoDB starting : pid=2052 port=27017 dbpath=/var/lib/mongodb 32-bit

** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
**       see http://blog.mongodb.org/post/137788967/32-bit-limitations

Sun Jun 26 21:52:22 db version v1.6.4, pdfile version 4.5
Sun Jun 26 21:52:22 git version: nogitversion
Sun Jun 26 21:52:22 sys info: Linux x86-12.phx2.fedoraproject.org 2.6.32-71.el6.x86_64 #1 SMP Wed Sep 1 01:33:01 EDT 2010 i686 BOOST_LIB_VERSION=1_33_1
Sun Jun 26 21:52:22 exception in initAndListen std::exception: dbpath (/var/lib/mongodb) does not exist, terminating
Sun Jun 26 21:52:22 dbexit:

Sun Jun 26 21:52:22 shutdown: going to close listening sockets...
Sun Jun 26 21:52:22 shutdown: going to flush oplog...
Sun Jun 26 21:52:22 shutdown: going to close sockets...
Sun Jun 26 21:52:22 shutdown: waiting for fs preallocator...
Sun Jun 26 21:52:22 shutdown: closing all files...
Sun Jun 26 21:52:22     closeAllFiles() finished

Sun Jun 26 21:52:22 dbexit: really exiting now


/var/lib/mongodbがありませんとの指摘です。インストール時に作ってくれよという気もします。
/var/lib/の下にmongodbディレクトリを作り、ユーザとグループをmogodbにします。


気をとりなおして再度起動&ログイン
UTF8絡みでWarningが出ています。
日本語を入れると、やっぱりエラー。

# mongo
MongoDB shell version: 1.6.4
Sun Jun 26 22:36:23 *** warning: spider monkey build without utf8 support.  consider rebuilding with utf8 support
connecting to: test
>  k = { name : "ほげほげ" };
error:non ascii character detected
>


SpiderMonkey(js)をUTF-8対応すれば良いらしいです。
Building Spider Monkey - MongoDB
上記の記事によると、jsをアンインストールしてから再度UTF-8版を入れてねと書いています。
ただし、MongoDBをyumで入れたい場合は、上記の方法ですると依存関係でrpm版のjsが勝手に入れられます。
解決策としては、何も考えずにyumでmongodb-serverとmongodb-develをインストールして(jsも一緒に入ります)
その後にソースからビルドしたjsを上書きしたら上手くいきます。

# curl -O ftp://ftp.mozilla.org/pub/mozilla.org/js/js-1.7.0.tar.gz
# tar zxvf js-1.7.0.tar.gz
# cd js/src
# export CFLAGS="-DJS_C_STRINGS_ARE_UTF8"
# make -f Makefile.ref
# JS_DIST=/usr make -f Makefile.ref export
# mongo
MongoDB shell version: 1.6.4
connecting to: test
>  k = { name : "ほげほげ" };
{ "name" : "ほげほげ" }


ちょっと苦労しましたが、これでMongoDBで日本語が扱えます。
お試しアレ