Vagrant上にMongoDBをインストールする手順について記述します。
必要な環境
以下の環境が必要なので、あらかじめ用意しておきます。
- Vagrant
- VirtualBox
- VMのための空き容量とメモリ
注意事項
デフォルトの設定だと以下の問題があります。
こちらを解決するには後述の「MongoDB設定」を参照してください。
- 管理画面が有効になっていません
- ホストOSからのアクセスができません
セットアップ
公開されているboxを利用して起動します。
OSはFedora、Puppetを利用してMongoDBをインストールしています。
- antonyh/vagrant-mongodbをダウンロード(またはクローン)
- Vagrant起動
$ vagrant up
- Vagrant VMへ接続
$ vagrant ssh
- MongoDBシェルの起動
[vagrant@localhost ~]$ mongo
MongoDB shell version: 2.4.6
connecting to: test
>
入力待ちとなればセットアップは成功です。
シェルを終了させるにはquit()
を実行します
デフォルトの環境
- OS
[vagrant@localhost ~]$ cat /etc/redhat-release
Fedora release 20 (Heisenbug)
- MongoDB
[vagrant@localhost ~]$ mongo --version
MongoDB shell version: 2.4.6
- Puppet
[vagrant@localhost ~]$ puppet --version
3.4.3
MongoDB設定
そのまま起動すると以下の問題があるので、修正します。
ホストから接続出来るようにする
mongodb.confを下記の通り編集して、sudo service mongod restart
#bind_ip = 127.0.0.1
bind_ip = All
管理画面を有効にする
mongodb.confを下記の通り編集して、sudo service mongod restart
# Disable the HTTP interface (Defaults to port+1000).
#nohttpinterface = true
nohttpinterface = false
上記の設定を自動化する
はじめから上記設定になるようPuppetの設定を変更すると便利です。
Puppetで/etc/mongodb.confを生成する設定を追加。
Puppet/modules/mongo/manifests/init.pp
file { "/etc/mongodb.conf" :
content => "
bind_ip = All
port = 27017
fork = true
pidfilepath = /var/run/mongodb/mongodb.pid
logpath = /var/log/mongodb/mongodb.log
dbpath =/var/lib/mongodb
journal = true
nohttpinterface = false
"
}
確認
ホストOSにMongoDB Clientが入っている場合は接続してみましょう。
ポートはデフォルトのMongoDBのポートがフォワードされているので、そのままホストOSで接続すればOKです。
$ mongo
MongoDB shell version: 2.6.3
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
>
管理画面が有効な場合は、ブラウザで管理画面にアクセスしてみましょう。
http://localhost:28017/
ホストOSから接続出来ない場合
ホストOSから接続出来ない場合は以下を確認してみましょう。
- Vagrantfile
- forwarded_portの設定が正しいか?
- ホストOSでポートが空いているか?
- 27017,27018,27019,28017
- 空いていない場合はVagrantofileを編集してホストのポートを変更する
- mongodb.conf
- bind_ipでホストOSの接続が許可されているか?
管理画面にアクセス出来ない場合は、上記に加えて以下もチェックします。
- mongodb.conf
-
nohttpinterface = false
に設定されているか?
-