はじめに
本当は導入記事が書きたいわけじゃないんですが、せっかくなので順を追ってということで。。
めんどうだけど何かの為にはなるかなってことで。
ながれ
1.ダウンロード
2.インストール
3.ディレクトリ作ったりとか
4.起動確認
5.ユーザ認証有効化する
6.iptables有効にする
7.web console見てみる
8.おまけでmongoコマンドをパスに追加する<<
1.ダウンロード
http://www.mongodb.org/>Downloadsメニュー から最新版をダウンロードします。
ここのボタンを押すといきなりダウンロードが始まるので右クリックでリンクアドレスをコピーとかでURLをコピります
ってことでこっからはlinuxで作業
コピったURLをwgetでゲット
# cd /usr/local/src # wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.4.8.tgz
2.インストール
インストールといっても解凍するくらいですね
# cp mongodb-linux-x86_64-2.4.8.tgz /usr/local # cd /usr/local # tar xvfz mongodb-linux-x86_64-2.4.8.tgz
3.ディレクトリ作ったりとか
# cd /usr/local ※tgzはいらないので消す # rm mongodb-linux-x86_64-2.4.8.tgz ※mongodbでアクセスできるようにリンクを貼る # ln -s mongodb-linux-x86_64-2.4.8 mongodb ※データとログのdir作る # mkdir -p /usr/local/mongodb/data/db # mkdir /usr/local/mongodb/logs # ls -la /usr/local/mongodb total 88 drwxr-xr-x 7 root wheel 4096 Feb 6 19:39 ./ drwxr-xr-x. 34 root wheel 4096 Jan 9 21:56 ../ -rw------- 1 500 cam 34520 Aug 4 2013 GNU-AGPL-3.0 -rw------- 1 500 cam 1359 Aug 4 2013 README -rw------- 1 500 cam 18436 Aug 4 2013 THIRD-PARTY-NOTICES drwxr-xr-x 2 root wheel 4096 Feb 7 18:27 bin/ drwxr-xr-x 3 root wheel 4096 Jan 9 21:58 data/ drwxr-xr-x 2 root wheel 4096 Dec 4 19:30 etc/ drwxr-xr-x 2 root wheel 4096 Jan 24 14:54 logs/ lrwxrwxrwx 1 root wheel 26 Jan 9 21:55 mongodb-linux-x86_64-2.4.8 -> mongo
4.起動確認
おもむろに起動
# /usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/data/db Thu Jan 9 21:58:42.341 [initandlisten] MongoDB starting : pid=46831 port=27017 dbpath=/usr/local/mongodb/data/db 64-bit host=hoge.co.jp Thu Jan 9 21:58:42.341 [initandlisten] db version v2.4.8 Thu Jan 9 21:58:42.341 [initandlisten] git version: a350fc38922fbda2cec8d5dd842237b904eafc14 Thu Jan 9 21:58:42.341 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49 Thu Jan 9 21:58:42.341 [initandlisten] allocator: tcmalloc Thu Jan 9 21:58:42.341 [initandlisten] options: { dbpath: "/usr/local/mongodb/data/db" } Thu Jan 9 21:58:42.371 [initandlisten] journal dir=/usr/local/mongodb/data/db/journal Thu Jan 9 21:58:42.371 [initandlisten] recover : no journal files present, no recovery needed Thu Jan 9 21:58:43.445 [initandlisten] preallocateIsFaster=true 13.02 Thu Jan 9 21:58:44.534 [initandlisten] preallocateIsFaster=true 13.02 Thu Jan 9 21:58:46.667 [initandlisten] preallocateIsFaster=true 13.98 Thu Jan 9 21:58:46.667 [initandlisten] preallocateIsFaster check took 4.295 secs Thu Jan 9 21:58:46.667 [initandlisten] preallocating a journal file /usr/local/mongodb/data/db/journal/prealloc.0 Thu Jan 9 21:58:55.463 [initandlisten] preallocating a journal file /usr/local/mongodb/data/db/journal/prealloc.1 Thu Jan 9 21:59:05.593 [initandlisten] preallocating a journal file /usr/local/mongodb/data/db/journal/prealloc.2 Thu Jan 9 21:59:14.766 [FileAllocator] allocating new datafile /usr/local/mongodb/data/db/local.ns, filling with zeroes... Thu Jan 9 21:59:14.766 [FileAllocator] creating directory /usr/local/mongodb/data/db/_tmp Thu Jan 9 21:59:14.945 [FileAllocator] done allocating datafile /usr/local/mongodb/data/db/local.ns, size: 16MB, took 0.167 secs Thu Jan 9 21:59:14.945 [FileAllocator] allocating new datafile /usr/local/mongodb/data/db/local.0, filling with zeroes... Thu Jan 9 21:59:15.556 [FileAllocator] done allocating datafile /usr/local/mongodb/data/db/local.0, size: 64MB, took 0.609 secs Thu Jan 9 21:59:15.557 [initandlisten] command local.$cmd command: { create: "startup_log", size: 10485760, capped: true } ntoreturn:1 keyUpdates:0 reslen:37 791ms Thu Jan 9 21:59:15.558 [initandlisten] waiting for connections on port 27017 Thu Jan 9 21:59:15.558 [websvr] admin web console waiting for connections on port 28017 Thu Jan 9 22:00:41.480 [signalProcessingThread] got signal 2 (Interrupt), will terminate after current cmd ends Thu Jan 9 22:00:41.480 [signalProcessingThread] now exiting Thu Jan 9 22:00:41.480 dbexit: Thu Jan 9 22:00:41.480 [signalProcessingThread] shutdown: going to close listening sockets... Thu Jan 9 22:00:41.480 [signalProcessingThread] closing listening socket: 9 Thu Jan 9 22:00:41.480 [signalProcessingThread] closing listening socket: 10 Thu Jan 9 22:00:41.480 [signalProcessingThread] closing listening socket: 11 Thu Jan 9 22:00:41.480 [signalProcessingThread] removing socket file: /tmp/mongodb-27017.sock Thu Jan 9 22:00:41.480 [signalProcessingThread] shutdown: going to flush diaglog... Thu Jan 9 22:00:41.480 [signalProcessingThread] shutdown: going to close sockets... Thu Jan 9 22:00:41.480 [signalProcessingThread] shutdown: waiting for fs preallocator... Thu Jan 9 22:00:41.480 [signalProcessingThread] shutdown: lock for final commit... Thu Jan 9 22:00:41.480 [signalProcessingThread] shutdown: final commit... Thu Jan 9 22:00:41.480 [signalProcessingThread] shutdown: closing all files... Thu Jan 9 22:00:41.481 [signalProcessingThread] closeAllFiles() finished Thu Jan 9 22:00:41.481 [signalProcessingThread] journalCleanup... Thu Jan 9 22:00:41.481 [signalProcessingThread] removeJournalFiles Thu Jan 9 22:00:41.522 [signalProcessingThread] shutdown: removing fs lock... Thu Jan 9 22:00:41.522 dbexit: really exiting now
日付が結構前なのはあしからずw
初期起動は若干時間がかかります
こんな感じで出てるとおり、アロケートするデータ領域を作ってるみたいです
done allocating datafile /usr/local/mongodb/data/db/local.0, size: 64MB, took 0.609 secs
おもむろに落とす
# ps aux | grep mongo root 14304 0.4 0.4 2234284 52892 ? Sl Feb12 7:45 /usr/local/mongodb/bin/mongod ・・・省略 # kill -s SIGINT 14304
おもむろにバックグラウンド起動
# /usr/local/mongodb/bin/mongod --fork --logpath /usr/local/mongodb/logs/mongodb.log --logappend --dbpath /usr/local/mongodb/data/db about to fork child process, waiting until server is ready for connections. forked process: 46860 all output going to: /usr/local/mongodb/logs/mongodb.log child process started successfully, parent exiting
5.ユーザ認証有効化する
まだほとんどなにもしてないのにユーザ認証を有効化しますw
※adminデータベースのuser追加 # mongo > use admin switched to db admin > db.addUser("admin","1234") { "user" : "admin", "readOnly" : false, "pwd" : "8ed89808ef904343d0030043f3f44b33", "_id" : ObjectId("52f88b8d1232a89434a0e5a1") } ※任意データベースのuser追加 > use hogedb switched to db hogedb > db.addUser("hoge","4321") { "user" : "hoge", "readOnly" : false, "pwd" : "5e708034d0808a084341439843ff129f", "_id" : ObjectId("520a0123230d32aa4298b711") } > exit bye ※いったん出てからmongoを落として再起動 # ps aux | grep mongo root 32101 0.4 0.4 2234284 52892 ? Sl Feb12 7:45 /usr/local/mongodb/bin/mongod ・・・省略 # kill -s SIGINT 32101 ※認証入りでバックグラウンド起動 # /usr/local/mongodb/bin/mongod --logpath /usr/local/mongodb/logs/mongodb.log --fork --logappend --dbpath /usr/local/mongodb/data/db --profile 1 --slowms 100 --quiet --rest --auth
補足
ちなみに認証後はこんな感じでアクセスします
※ useは認証しなくても使える > use hogedb ※ しかしオペレーションは怒られる >show collections; 2013-10-16T20:55:06.692+0900 error: { "$err" : "not authorized for query on testdb.system.namespaces", "code" : 13 } at src/mongo/shell/query.js:131 ※ 1が返ってくれば認証成功 > db.auth("hoge", "4321") 1
6.iptables有効にする
直近で使うことはないかもしれないですが、
td-agent(fluentd)と連携したり、web console眺めたりするためにポートを空けておきます
# sudo vi /etc/sysconfig/iptables -- vi追記 -- -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 27017 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 27018 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 28017 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 28018 -j ACCEPT ------------ ※ iptables再起動 # sudo /etc/init.d/iptables restart ファイアウォールルールを適用中: [ OK ] チェインポリシーを ACCEPT に設定中filter [ OK ] iptables モジュールを取り外し中 [ OK ] iptables ファイアウォールルールを適用中: [ OK ] iptables モジュールを読み込み中ip_conntrack_netbios_ns [ OK ]
27017はデフォルトのポートで、web consoleからアクセスする用が28017です