プログラマになりたい このページをアンテナに追加 RSSフィード

     文系SEです。いい年なってもコード書き続けます。
     やっぱグレートなプログラマになりたいっす。

2011-06-27

[]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で日本語が扱えます。

お試しアレ

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

リンク元