なんか楽ちんそうじゃん?
MongoDBをインストールしてみる
CentOS6.4でインストールしてみる
touch /etc/yum.repos.d/10gen.repo vi /etc/yum.repos.d/10gen.repo
ファイルを作って以下を入力
[10gen] name=10gen Repository baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64 gpgcheck=0 enabled=0
yum --enablerepo=10gen install mongo-10gen mongo-10gen-server
-yはつけない派
しばらく待つとインストールされますよ。
インストール後は
service mongod start
でサーバ起動!
……と思ったのだが、ぼくの環境では何故か起動しなかった。
/var/log/mongo/mongod.logのログをもさもさ読んでみると、
ERROR: Insufficient free space for journal files
どういうことだってばよ?
mongodbはjournalログをデフォルトで有効にし、その場合3.5Gのファイルを確保する。
mongodb 起動エラー時の対処方法-journallog - Qiita
ディスクに余裕がない場合は、この時点でエラーになる。
oh……というわけで
vim /etc/mongod.conf
で、以下の設定がコメントアウトになっていたので、コメントを解除。
nojournal = true
再度service mongod startで起動出来た!
ログは読むもんだなぁ
続き、PHPで動かしてみる
マニュアルを読むとクラスが存在してて、なんか使えそうに見えるけど、実際使うにはドライバが必要なようだ。
pecl install mongo
これを唱えるといい。
もし「phpizeっていうコマンドがないよ!」って言われたらyumでphp-develを入れよう。
もし「gcc...no」と言われたらyumでgccを入れよう。
……gcc入ってない環境ってものアホだなぁ
コマンドライン
mongo
対話モード
use hoge
DBへ接続
db.huga.find()
は「SELECT * FROM huga」と同じ意味。
db.huga.remove();
「DELETE FROM huga」
型
日付型
new MongoDate
MongoDate型で格納しないと日付として扱われないらしい(UNIX timeはただの数値だ! だから日付として検索は出来ないぞ! という事らしい。)
参考http://php.net/manual/ja/class.mongodate.php
運用
なんかエラーが出てデーモンが立ち上がらないね
/var/lib/mongo/mongod.lock
を削除してservice mongod start
なんかservice mongod start出来ないんだけど
MongoDBは何らかの原因で止まると再起動する前にリペアをしてあげないといけない。
find / -name mongod.conf
設定ファイル探そうね。
dbpath=ファイルパス
設定ファイルからdbpathを探そうね。
mongod --dbpath=ファイルパス --repair service mongod start
dbpathが分かったらリペアしようね。
デーモンも起動させようね。