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) >
きたきた。でもごめんもう眠いです。