本教程介紹如何在Red Hat Enterprise Linux或CentOS Linux版本6和7上使用.rpm軟件包來(lái)安裝 MongoDB 社區(qū)版。 雖然Red Hat包含自己的MongoDB軟件包,但安裝最新 MongoDB社區(qū)版還要自己手動(dòng)安裝。
平臺(tái)支持: 本安裝指南僅支持64位系統(tǒng)。有關(guān)詳細(xì)信息,請(qǐng)參閱平臺(tái)支持。MongoDB 3.2不支持Red Hat Enterprise Linux 5。
mongodb-org-server包提供了一個(gè)使用/etc/mongod.conf配置文件啟動(dòng) mongod 的初始化腳本。
由軟件包提供的默認(rèn)的 /etc/mongod.conf 配置文件的 bind_ip 默認(rèn)設(shè)置為 127.0.0.1。 在初始化副本集合之前,根據(jù)環(huán)境的需要修改此設(shè)置。
本安裝指南僅支持64位系統(tǒng)。有關(guān)詳細(xì)信息,請(qǐng)參閱平臺(tái)支持。請(qǐng)參考以下步驟一步一步地來(lái)完成。
第一步:配置包管理系統(tǒng)(yum)
創(chuàng)建一個(gè) /etc/yum.repos.d/mongodb-org-3.4.repo 文件,以便可以使用 yum 命令直接安裝 MongoDB。
MongoDB版本3.0中更改:MongoDB Linux軟件包位于以 3.0 開(kāi)頭的新存儲(chǔ)庫(kù)中。
對(duì)于最新穩(wěn)定發(fā)布的MongoDB
創(chuàng)建存儲(chǔ)庫(kù)文件(使用命令:vi /etc/yum.repos.d/mongodb-org-3.4.repo),寫(xiě)入如下內(nèi)容:
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=http://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=http://www.mongodb.org/static/pgp/server-3.4.asc
第二步:安裝MongoDB軟件包和相關(guān)工具
要安裝最新的穩(wěn)定版本(3.4)的MongoDB,請(qǐng)執(zhí)行以下命令:
# sudo yum install -y mongodb-org
執(zhí)行過(guò)程如下所示 -

安裝完成后,如下圖所示 -

大多數(shù)類(lèi)Unix操作系統(tǒng)限制會(huì)話,以減少系統(tǒng)資源的使用。 這些限制可能會(huì)對(duì) MongoDB 操作產(chǎn)生負(fù)面影響。有關(guān)詳細(xì)信息,請(qǐng)參閱UNIX ulimit設(shè)置。
配置SELinux
如果您使用SELinux,則必須配置SELinux以允許MongoDB在基于Red Hat Linux的系統(tǒng)(Red Hat Enterprise Linux或CentOS Linux)上啟動(dòng)。
要配置SELinux,管理員有三個(gè)選項(xiàng):
27017)。 有關(guān)MongoDB默認(rèn)端口的更多信息,請(qǐng)參閱默認(rèn)MongoDB端口。 對(duì)于默認(rèn)設(shè)置,可以通過(guò)運(yùn)行下面命令來(lái)實(shí)現(xiàn) - # semanage port -a -t mongod_port_t -p tcp 27017
/etc/selinux/config中將 SELINUX 設(shè)置為 disabled 來(lái)禁用SELinux。SELINUX=disabled
以學(xué)習(xí)為目的,建議使用此項(xiàng)設(shè)置,但是必須重新啟動(dòng)系統(tǒng)才能使更改生效。
/etc/selinux/config 中設(shè)置為許可模式,即,將SELinux設(shè)置為 permissive 。SELINUX=permissive
上述設(shè)置完成后,必須重新啟動(dòng)系統(tǒng)才能使更改生效??梢允褂?setenforce 更改為允許模式。 setenforce 不需要重啟,但不持續(xù)。
或者,可以選擇在安裝Linux操作系統(tǒng)時(shí)不要安裝SELinux軟件包,或選擇刪除相關(guān)軟件包。這個(gè)選項(xiàng)是最具侵入性的,所以不推薦。
MongoDB實(shí)例默認(rèn)將其數(shù)據(jù)文件存儲(chǔ)在/var/lib/mongo目錄,及其日志文件/var/log/mongodb中,并使用 mongod 用戶(hù)帳戶(hù)運(yùn)行。可以在 /etc/mongod.conf 中指定備用日志和數(shù)據(jù)文件目錄。 有關(guān)其他信息,請(qǐng)參閱systemLog.path和storage.dbPath。
如果更改運(yùn)行 MongoDB 進(jìn)程的用戶(hù),則必須修改 /var/lib/mongo 和 /var/log/mongodb 目錄的訪問(wèn)控制權(quán)限,以使此用戶(hù)能夠訪問(wèn)這些目錄。
啟動(dòng) MongoDB
可以通過(guò)發(fā)出以下命令來(lái)啟動(dòng) mongod 進(jìn)程:
# sudo service mongod start
驗(yàn)證MongoDB是否已成功啟動(dòng)
可以通過(guò)檢查 /var/log/mongodb/mongod.log 中的日志文件的內(nèi)容來(lái)驗(yàn)證 mongod 進(jìn)程是否成功啟動(dòng),查看此文件應(yīng)該會(huì)看到類(lèi)似的內(nèi)容 -
[root@localhost ~]# cat /var/log/mongodb/mongod.log
2017-06-29T04:36:57.410-0400 I CONTROL [main] ***** SERVER RESTARTED *****
2017-06-29T04:36:57.695-0400 I CONTROL [initandlisten] options: { command: [ "run" ], config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1", port: 27017 }, processManagement: { fork: true, pidFilePath: "/var/run/mongodb/mongod.pid" }, storage: { dbPath: "/var/lib/mongo", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log", quiet: true } }
2017-06-29T04:36:57.809-0400 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=256M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
... ...
2017-06-29T04:36:59.529-0400 I INDEX [initandlisten] build index on: admin.system.version properties: { v: 2, key: { version: 1 }, name: "incompatible_with_version_32", ns: "admin.system.version" }
2017-06-29T04:36:59.529-0400 I INDEX [initandlisten] building index using bulk method; build may temporarily use up to 500 megabytes of RAM
2017-06-29T04:36:59.541-0400 I INDEX [initandlisten] build index done. scanned 0 total records. 0 secs
2017-06-29T04:36:59.542-0400 I COMMAND [initandlisten] setting featureCompatibilityVersion to 3.4
2017-06-29T04:36:59.548-0400 I NETWORK [thread1] waiting for connections on port 27017
[root@localhost ~]#
或者,使用以下命令 -
[root@localhost ~]# ps -aux|grep mongod
mongod 2169 2.7 3.9 971208 39804 ? Sl 04:36 0:03 /usr/bin/mongod --quiet -f /etc/mongod.conf run
root 2376 0.0 0.0 112648 964 pts/0 R+ 04:38 0:00 grep --color=auto mongod
[root@localhost ~]#
可以選擇確保通過(guò)發(fā)出以下命令,MongoDB 將在系統(tǒng)啟動(dòng)后啟動(dòng) mongod 服務(wù):
# sudo chkconfig mongod on
停止 MongoDB
根據(jù)需要,可以通過(guò)發(fā)出以下命令來(lái)停止 mongod 進(jìn)程:
# sudo service mongod stop
重啟 MongoDB
根據(jù)需要,可以通過(guò)發(fā)出以下命令來(lái)重啟 mongod 進(jìn)程:
# sudo service mongod restart
可以通過(guò)查看 /var/log/mongodb/mongod.log 文件中的輸出來(lái)跟蹤進(jìn)程狀態(tài)的錯(cuò)誤或重要信息。
開(kāi)始使用 MongoDB
進(jìn)入 MongoDB 命令行,簡(jiǎn)單地使用 -
[root@localhost ~]# mongo
## 查看數(shù)據(jù)庫(kù)
> show dbs;
## 查看數(shù)據(jù)庫(kù)版本
> db.version();
## 常用命令幫助
> db.help();
[root@localhost ~]# mongo
MongoDB shell version v3.4.5
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.5
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
Server has startup warnings:
2017-06-29T04:36:58.888-0400 I CONTROL [initandlisten]
2017-06-29T04:36:58.888-0400 I CONTROL [initandlisten] ** WARNING: Access contr ol is not enabled for the database.
2017-06-29T04:36:58.888-0400 I CONTROL [initandlisten] ** Read and wri te access to data and configuration is unrestricted.
2017-06-29T04:36:58.888-0400 I CONTROL [initandlisten]
2017-06-29T04:36:58.892-0400 I CONTROL [initandlisten]
2017-06-29T04:36:58.892-0400 I CONTROL [initandlisten] ** WARNING: /sys/kernel/ mm/transparent_hugepage/enabled is 'always'.
2017-06-29T04:36:58.892-0400 I CONTROL [initandlisten] ** We suggest set ting it to 'never'
2017-06-29T04:36:58.892-0400 I CONTROL [initandlisten]
2017-06-29T04:36:58.892-0400 I CONTROL [initandlisten] ** WARNING: /sys/kernel/ mm/transparent_hugepage/defrag is 'always'.
2017-06-29T04:36:58.892-0400 I CONTROL [initandlisten] ** We suggest set ting it to 'never'
2017-06-29T04:36:58.892-0400 I CONTROL [initandlisten]
>
> show dbs;
admin 0.000GB
local 0.000GB
> use local
switched to db local
> db.version()
3.4.5
>