必要に迫られて、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で日本語が扱えます。
お試しアレ