背景
仕事で使ってるMongoDBのバージョンが2.6でbrewで入れようとしたらhigh sierraだと入れれなさそうだったので(2017/10/13時点で)brewを使わずに入れてみた。
MongoDBのダウンロード
任意のディレクトリに移動しておく
$ cd ~/
MongoDBのダウンロード
$ 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 mongodb
これでインストールされました。
Pathを通す
$ vi ~/.bash_profile
中に以下を追記
~/.bash_profile
export PATH=/Users/sugawara_ryosuke/mongodb/bin:$PATH
これでどこからでもmongoコマンドが使えるようになります。
$ mongod -version
MongoDB起動
まずは必要なディレクトリを作成します。
$ mkdir ~/mongodb/log
$ mkdir ~/mongodb/db
起動
$ mongod --fork --logpath /Users/sakura/mongodb/log/mongodb.log --nojournal --noprealloc --dbpath /Users/sakura/mongodb/db
以下のようなのが表示されれば起動成功です。
note: noprealloc may hurt performance in many applications
about to fork child process, waiting until server is ready for connections.
forked process: 2926
child process started successfully, parent exiting
Macを再起動しても自動で起動するようにする
これだけだとMacを再起動するたびに起動させなければなりません。
launchd/launchctl で起動するように設定。
$ sudo vi /Library/LaunchDaemons/org.mongodb.mongod.plist
中に以下を記入します。
/Library/LaunchDaemons/org.mongodb.mongod.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.mongodb.mongod</string>
<key>RunAtLoad</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/Users/sakura/sakura/mongodb/bin/mongod</string>
<string>--dbpath</string>
<string>/Users/sakura/sakura/mongodb/db</string>
<string>--logpath</string>
<string>/Users/sakura/sakura/mongodb/log/mongodb.log</string>
</array>
</dict>
</plist>
念のためオーナーやパーミッションも変更。
$ sudo chown root:wheel /Library/LaunchDaemons/org.mongodb.mongod.plist
$ sudo chmod 644 /Library/LaunchDaemons/org.mongodb.mongod.plist
最後に読み込めば完了。
$ launchctl load /Library/LaunchDaemons/org.mongodb.mongod.plist
MongoDBが自動起動しない場合
自動起動できていなかった場合は以下のコマンドを実行します。
$ rm /Users/sakura/mongodb/db/mongod.lock
$ sudo mongod --dbpath=/Users/sakura/mongodb/db --repair
これで完了です。