Ubuntu安裝MongoDB(非apt-get方式)

先下載mongodb最新的linux發佈版,放到任意目錄下(本文以/usr目錄爲例)


解壓縮即可執行


tar zxvf mongodb-linux-x86_64-2.x.x.tgz
cd /usr/mongodb-linux-x86_64-2.x.x/bin

創建鏈接

ln -s /usr/mongodb-linux-x86_64-2.x.x mongodb
但是在運行前,需要創建mongodb需要的存放數據和日誌的目錄:
sudo mkdir -p /data/db/journal
sudo chmod -R 777 /data/db/
啓動mongodb server,-journal 代表要寫日誌,-maxConns=2400代表mongodb 可以接受2400個tcp連接,-rest代表可以允許客戶端通過rest API訪問mongdb server.
./mongod -journal -maxConns=2400 -rest
還可以使用參數—quiet啓動可以指定安靜模式減少記錄的項目數,注意使用該參數必須要同時指定日誌路徑,比如:
—quiet —logpath /data/db/journal/mongdb.log

相關說明

服務程序啓動後,終端會顯示一些信息,比如:
Wed Aug 31 16:40:03 [initandlisten] MongoDB starting : pid=2410 port=27017 dbpath=/data/db/ 64-bit
Wed Aug 31 16:40:03 [initandlisten] db version v2.4.9, pdfile version 4.5
Wed Aug 31 16:40:03 [initandlisten] git version: c206d77e94bc3b65c76681df5a6b605f68a2de05
Wed Aug 31 16:40:03 [initandlisten] build sys info: Linux bs-linux64.10gen.cc 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_41
Wed Aug 31 16:40:03 [initandlisten] journal dir=/data/db/journal
Wed Aug 31 16:40:03 [initandlisten] recover : no journal files present, no recovery needed
Wed Aug 31 16:40:06 [initandlisten] preallocateIsFaster=true 33.84
Wed Aug 31 16:40:08 [initandlisten] preallocateIsFaster=true 36.84
Wed Aug 31 16:40:11 [initandlisten] preallocateIsFaster=true 37.48
Wed Aug 31 16:40:11 [initandlisten] preallocating a journal file /data/db/journal/prealloc.0
Wed Aug 31 16:41:03 [initandlisten] preallocating a journal file /data/db/journal/prealloc.1
Wed Aug 31 16:41:55 [initandlisten] preallocating a journal file /data/db/journal/prealloc.2
Wed Aug 31 16:42:48 [initandlisten] waiting for connections on port 27017
Wed Aug 31 16:42:48 [initandlisten] —maxConns too high, can only handle 819
Wed Aug 31 16:42:48 [websvr] web admin interface listening on port 28017
Wed Aug 31 16:42:48 [dur] lsn set 0
Wed Aug 31 16:43:03 [dur] lsn set 14440
Wed Aug 31 16:44:03 [dur] lsn set 74050
Wed Aug 31 16:45:03 [dur] lsn set 133660
Wed Aug 31 16:46:03 [dur] lsn set 193270
Wed Aug 31 16:47:03 [dur] lsn set 252880
Wed Aug 31 16:48:03 [dur] lsn set 312490
Wed Aug 31 16:49:03 [dur] lsn set 372110
Wed Aug 31 16:50:03 [dur] lsn set 431720
Wed Aug 31 16:51:03 [dur] lsn set 491330
Wed Aug 31 16:52:03 [dur] lsn set 550940
Wed Aug 31 16:53:03 [dur] lsn set 610550

我們可以看到進程id,監聽的TCP端口號和web管理員端口號。還能看到數據文件和日誌文件所在目錄。並且提示最大連接數達不到設置的2400.

修改系統允許的最大連接數

上面的最大連接數目的限制原因是Linux系統默認一個進程最大文件打開數目爲1024,用ulimit -a 命令檢查,可以看到下面這行:
open files                      (-n) 1024


修改/etc/security/limits.conf 配置文件。
使用命令:sudo gedit /etc/security/limits.conf
在文件中增加
* soft nofile 3000
* hard nofile 20000
root soft nofile 3000
root hard nofile 20000
* 表示該配置對所有用戶均有效,root用戶要特別加兩行。
硬限制通常是根據系統硬件資源狀況(主要是系統內存)計算出來的系統最多可同時打開的文件數量,軟限制是在這個基礎上進一步的限制。因此軟限制數目要低於硬限制。
nofile表示 max number of open files
重新啓動計算機,然後再用ulimit -a 命令查看:
open files                      (-n) 3000
已經生效了。現在再啓動mongodb server,問題解決


現在還有一個更簡單的方法,在開機腳本里面設置,參考下一節。

設置開機啓動

在/etc/init.d/目錄下新建腳本文件mongodb


#!/bin/sh  
   
### BEGIN INIT INFO  
# Provides:     mongodb  
# Required-Start:  
# Required-Stop:  
# Default-Start:        2 3 4 5  
# Default-Stop:         0 1 6  
# Short-Description: mongodb  
# Description: mongo db server  
### END INIT INFO  
   
. /lib/lsb/init-functions  
   
PROGRAM=/usr/mongodb/bin/mongod  
MONGOPID=`ps -ef | grep 'mongod' | grep -v grep | awk '{print $2}'`  
   
test -x $PROGRAM || exit 0  
   
case "$1" in  
  start) 
     ulimit -n 3000  
     log_begin_msg "Starting MongoDB server"   
     $PROGRAM --fork --quiet -journal -maxConns=2400 -rest --logpath /data/db/journal/mongdb.log  
     log_end_msg 0  
     ;;  
  stop)  
     log_begin_msg "Stopping MongoDB server"   
     if [ ! -z "$MONGOPID" ]; then   
        kill -15 $MONGOPID  
     fi  
     log_end_msg 0  
     ;;  
  status)  
     ;;  
  *)  
     log_success_msg "Usage: /etc/init.d/mongodb {start|stop|status}"   
     exit 1  
esac  
   
exit 0


請注意,用sudo chmod +x /etc/init.d/mongodb 命令允許該腳本可被執行
接着運行下面的命令註冊開機腳本:
update-rc.d mongodb defaults
  Adding system startup for /etc/init.d/mongodb ...
    /etc/rc0.d/K20mongodb -> ../init.d/mongodb
    /etc/rc1.d/K20mongodb -> ../init.d/mongodb
    /etc/rc6.d/K20mongodb -> ../init.d/mongodb
    /etc/rc2.d/S20mongodb -> ../init.d/mongodb
    /etc/rc3.d/S20mongodb -> ../init.d/mongodb
    /etc/rc4.d/S20mongodb -> ../init.d/mongodb
    /etc/rc5.d/S20mongodb -> ../init.d/mongodb

你也可以通過update-rc.d -f mongodb remove 刪除

重新啓動,通過ps -def | grep mongod 可以查看到自啓動的服務進程,然後可以通過下面的命令關閉/啓動服務

sudo service mongodb stop
sudo service mongodb start

客戶端登錄服務器

啓動日誌如上,服務端啓動如上,現在我們在另外一個終端測試服務器是否正常。
進入/usr/local/mongodb-linux-x86_64-2.0.2/bin,執行./mongo
出現
MongoDB shell version: 2.0.2
connecting to: test
執行db.foo.save({1 : “Hello world”})
然後查找db.foo.find();
看到{ "_id" : ObjectId("4e4b395986738efa2d0718b9"), "1" : "hello world" }
執行到這裏恭喜你,成功安裝好了mongodb

也可以通過下面這種方式連接遠程的mongodb server,默認端口爲27017,比如
./mongo 192.168.30.25

創建數據庫

如果沒有mydb數據庫的話,在客戶端中使用命令:
use mydb
將創建mydb數據庫,而且當前數據庫切換爲mydb.
此時show dbs不顯示該數據庫名稱。使用db.stats()命令檢查當前數據庫狀態。

標準檢查流程

1.首先檢查 ulimit -a 
查看open files (-n) 是否爲設置的值

如果是在開機腳本里面設置,則應該通過下面4步驟檢查。本步驟可以忽略。


2.ps -def | grep mongod
查看該服務是否啓動
3.cd /data/db/journal/
cat mongdb.log 
查看服務器是否正確
4.進入http://192.168.1.199:28017
看服務器是否啓動正常
5.進入/usr/mongodb/bin,執行./mongo
看看是否能夠登錄

發佈了298 篇原創文章 · 獲贊 78 · 訪問量 289萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章