おれのメモ帳_φ(-ω-`*)メモメモ

Gehirn Web Service で MongoDB を使う

ちょこっと触りたかっただけなのにハマったのでメモ。

仮想 root 環境準備

コマンドが用意されているので、簡単。

$ rs2 install fakeroot
$ rs2 use fakeroot
#

MongoDB インストール

aptitudeを使ってパッケージ情報確認。

# aptitude show mongodb
Package: mongodb
State: not installed
Version: 1:1.4.4-3
Priority: optional
Section: database
Maintainer: Antonin Kral <A.Kral@sh.cvut.cz>
Uncompressed Size: 20.5 k
Depends: mongodb-server, mongodb-dev
Description: An object/document-oriented database (metapackage)
...

なんかバージョン古いので インストール手順を確認する。

手順に従ってみる。

# apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
# echo "deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen" > /etc/apt/sources.list.d/10gen.list
# apt-get update

バージョンとか再確認。

# aptitude show mongodb-10gen
Package: mongodb-10gen
New: yes
State: partially configured
Automatically installed: no
Version: 2.2.3
Priority: optional
Section: devel
Maintainer: Richard Kreuter <richard@10gen.com>
Uncompressed Size: 127 M
Depends: libc6 (>= 2.3.2), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.1.1)
Conflicts: mongodb, mongodb-10gen-unstable, mongodb-nightly, mongodb-stable, mongodb-unstable
Description: An object/document-oriented database
...

よさそうなのでインストール。

# aptitude install mongodb-10gen
The following NEW packages will be installed:
  mongodb-10gen
0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/51.9 MB of archives. After unpacking 127 MB will be used.
Selecting previously deselected package mongodb-10gen.
(Reading database ... 9799 files and directories currently installed.)
Unpacking mongodb-10gen (from .../mongodb-10gen_2.2.3_amd64.deb) ...
Processing triggers for man-db ...
Setting up mongodb-10gen (2.2.3) ...
Starting database: mongodb failed!
invoke-rc.d: initscript mongodb, action "start" failed.
dpkg: error processing mongodb-10gen (--configure):
 subprocess installed post-installation script returned error exit status 1
configured to not write apport reports
                                      Errors were encountered while processing:
 mongodb-10gen
E: Sub-process /usr/bin/dpkg returned an error code (1)
A package failed to install.  Trying to recover:
Setting up mongodb-10gen (2.2.3) ...
Starting database: mongodb failed!
invoke-rc.d: initscript mongodb, action "start" failed.
dpkg: error processing mongodb-10gen (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 mongodb-10gen

インストールできたっぽいけど起動に失敗している様子。

調べる

ダメ元でつないでみる

# mongo
MongoDB shell version: 2.2.3
connecting to: test

繋がってる...

> show dbs;
*****   0.203125GB
*****   0.203125GB
local   (empty)
*****   0.203125GB
test    0.203125GB
*****   0.203125GB
*****   0.203125GB
> exit
bye

一応伏字にしたけど、なんか色々DBが。誰かのmongodに繋がったっぽい。

# ps -ef|grep mongo
****      **** ****  0 Feb03 pts/42   00:00:12 mongod
****      **** ****  0 Jan28 ?        00:55:00 mongod --dbpath=/home/****/tmp/mongodb/ --port ****

すでに2つ起動されていた。ということは、起動に失敗していたのはデフォルトポートが塞がっていたせい?

ポート設定をコメントインして適当なポートに書き換え。

# vi /etc/mongodb.conf
port = 42998

起動してみる。

# /etc/init.d/mongodb start
Starting database: mongodb failed!

いやんばかん。

ログを見てもよく分からない。

# view /var/log/mongodb/mongodb.log
...
Thu Feb 21 01:14:06 [initandlisten]   Assertion failure !statvfs( path.c_str() , &info ) src/mongo/db/../util/file.h 213
0xb07561 0xacdb5d 0x7385e2 0x73a1e5 0x72f245 0x55d146 0x55d97d 0x5643de 0x565999 0x2b1b89542c8d 0x558839
 /usr/bin/mongod(_ZN5mongo15printStackTraceERSo+0x21) [0xb07561]
 /usr/bin/mongod(_ZN5mongo12verifyFailedEPKcS1_j+0xfd) [0xacdb5d]
 /usr/bin/mongod(_ZN5mongo3dur14checkFreeSpaceEv+0x372) [0x7385e2]
 /usr/bin/mongod(_ZN5mongo3dur16preallocateFilesEv+0xa5) [0x73a1e5]
 /usr/bin/mongod(_ZN5mongo3dur7startupEv+0x85) [0x72f245]
 /usr/bin/mongod(_ZN5mongo14_initAndListenEi+0x3f6) [0x55d146]
 /usr/bin/mongod(_ZN5mongo13initAndListenEi+0x1d) [0x55d97d]
 /usr/bin/mongod() [0x5643de]
 /usr/bin/mongod(main+0x9) [0x565999]
 /home/****/root/lib/libc.so.6(__libc_start_main+0xfd) [0x2b1b89542c8d]
 /usr/bin/mongod(__gxx_personality_v0+0x469) [0x558839]
Thu Feb 21 01:14:06 [initandlisten] exception in initAndListen: 0 assertion src/mongo/db/../util/file.h:213, terminating
Thu Feb 21 01:14:06 dbexit:
...

Assertion failure なんてググっても同じ事象が出てこない。
出てこないけど、MongoDBが立ち上がらない原因として、dbpath の設定が間違っている場合があるらしい。

dbpath の設定誤りとはエラーの内容が違うけど、仮想root環境だから何かがアレなのかもしれないと思い、dbpathを変更してみる。

# vi /etc/mongodb.conf

パスを実パスに変更

#dbpath=/var/lib/mongodb
dbpath=/home/*my_gehirn_username*/root/var/lib/mongodb

MonboDB 起動

どや

# /etc/init.d/mongodb start
Starting database: mongodb.

きた

# mongo localhost:42998
MongoDB shell version: 2.2.3
connecting to: localhost:42998/test
> show dbs;
local   (empty)
>

きたきた。でもごめんもう眠いです。