アドベントカレンダーネタにします! @n0bisuke です!
##背景
Node.jsでDB使おうと思い、とりあえずMongoDBという安易な考え(あとで選定理由とか書きたいです。)でMongoDBをインストールしたときの話です。
brewでインストールしたMongoDBのバージョンが低かったのでアンインストールしてバイナリインストールしました。
brewでやる場合
基本的にこちらを参照 MongoDBのインストール
###インストール (現状だと2.4.9が入ってしまう)
一瞬です。
$ brew install mongodb
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/mongodb-2.4.9.mav
######################################################################## 100.0%
==> Pouring mongodb-2.4.9.mavericks.bottle.2.tar.gz
==> Caveats
To have launchd start mongodb at login:
ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents
Then to load mongodb now:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
Or, if you don't want/need launchctl, you can just run:
mongod --config /usr/local/etc/mongod.conf
==> Summary
? /usr/local/Cellar/mongodb/2.4.9: 391 files, 302M
$mongod --version
db version v2.4.9
最新は2.6みたいだったので
再インストール
brewのmongodbをアンインストール
$ mongod --version
db version v2.4.9
Mon Dec 1 18:29:56.774 git version: nogitversion
$ brew uninstall mongodb
Uninstalling /usr/local/Cellar/mongodb/2.4.9...
$ mongod --version
-bash: /usr/local/bin/mongod: No such file or directory
#アンインストールされましたね
バイナリからインストールする
####直接落としてくる場合
http://www.mongodb.org/downloads
or
コマンドラインからの場合
$ brew install wget
$ wget https://fastdl.mongodb.org/osx/mongodb-osx-x86_64-2.6.5.tgz
$ tar zxvf mongodb-osx-x86_64-2.6.5.tgz
$ rm mongodb-osx-x86_64-2.6.5.tgz
ユーザーのホームへ移動
$ mv mongodb-osx-x86_64-2.6.5 ~/
# ~/mongoにしておく
$ mv mongodb-osx-x86_64-2.6.5 mongodb
####バージョンチェック
$ cd ~/mongodb/bin
$ ./mongod --version
db version v2.6.5
2014-12-01T18:38:49.421+0900 git version: e99d4fcb4279c0279796f237aa92fe3b64560bf6
ちゃんと2.6.5になってます。
####パスを通す
$ pwd
/Users/sugawara_ryosuke/mongodb/bin
$ vim ~/.bash_profile
以下を.bash_profileに追記
export PATH=/Users/sugawara_ryosuke/mongodb/bin:$PATH
$ source ~/.bash_profile
$ mongod --version
db version v2.6.5
MongoDB起動
起動前準備
$ mkdir mongodb/db
$ mkdir mongodb/log
起動
以下のコマンドで起動出来ます。
$ mongod --nojournal --noprealloc --dbpath mongodb/db
起動するとターミナルで待ち受け状態になります。
$ mongod --nojournal --noprealloc --dbpath mongodb/db
note: noprealloc may hurt performance in many applications
2014-12-01T18:51:24.529+0900 [initandlisten] MongoDB starting : pid=51527 port=27017 dbpath=mongodb/db 64-bit host=n0bisuke.local
2014-12-01T18:51:24.529+0900 [initandlisten]
2014-12-01T18:51:24.529+0900 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
2014-12-01T18:51:24.529+0900 [initandlisten] db version v2.6.5
2014-12-01T18:51:24.529+0900 [initandlisten] git version: e99d4fcb4279c0279796f237aa92fe3b64560bf6
2014-12-01T18:51:24.529+0900 [initandlisten] build info: Darwin bs-osx108-1 12.5.0 Darwin Kernel Version 12.5.0: Sun Sep 29 13:33:47 PDT 2013; root:xnu-2050.48.12~1/RELEASE_X86_64 x86_64 BOOST_LIB_VERSION=1_49
2014-12-01T18:51:24.529+0900 [initandlisten] allocator: system
2014-12-01T18:51:24.529+0900 [initandlisten] options: { storage: { dbPath: "mongodb/db", journal: { enabled: false }, preallocDataFiles: false } }
2014-12-01T18:51:24.674+0900 [initandlisten] waiting for connections on port 27017
・
・
・
###デフォルトポートは27017
http://localhost:27017 にアクセスすると It looks like you are trying to access MongoDB over HTTP on the native driver port.
と表示されて起動していることを確認出来ると思います。
終了時はcontrol + c
Node.jsと同様にcontrol + c
でプロセスを終了出来ます。
デーモン起動
ターミナルで毎回立ち上げるのは面倒なのでデーモン起動します。
$ mongod --fork --logpath mongodb/log/mongodb.log --nojournal --noprealloc --dbpath mongodb/db
note: noprealloc may hurt performance in many applications
about to fork child process, waiting until server is ready for connections.
forked process: 51518
child process started successfully, parent exiting
通常起動の場合はコンソールにログが出力されますが、デーモン起動時は出力先としてログファイルのパスを指定する必要があります。
##最後に
ここまでやってアレですけど、
私みたいなライトユーザーはMongoDB2.4でも全然問題無いです笑