search
LoginSignup
21

More than 5 years have passed since last update.

posted at

MacにMongoDBを入れ直した。brew使わずにインストールしてみたメモ

アドベントカレンダーネタにします! @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
#アンインストールされましたね

バイナリからインストールする

直接落としてくる場合

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でも全然問題無いです笑

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
21