如何在CentOS7上安装MongoDB
介绍
MongoDB 是一个免费和开源的面向文档的数据库。 它被归类为 NoSQL 数据库,因为它不依赖于传统的基于表的关系数据库结构。 相反,它使用具有动态模式的类似 JSON 的文档。 与关系数据库不同,MongoDB 在将数据添加到数据库之前不需要预定义模式。 您可以随时根据需要随时更改模式,而无需使用更新的模式设置新数据库。
本教程将指导您在 CentOS 7 服务器上安装 MongoDB Community Edition。
先决条件
在学习本教程之前,请确保您有一个具有 sudo
权限的普通非 root 用户。 您可以从我们的指南 如何在 CentOS 上创建 Sudo 用户了解有关如何设置具有这些权限的用户的更多信息。
第 1 步 - 添加 MongoDB 存储库
mongodb-org
软件包不存在于 CentOS 的默认存储库中。 但是,MongoDB 维护一个专用的存储库。 让我们将它添加到我们的服务器。
使用 vi
编辑器,为 CentOS 的包管理实用程序 yum
创建一个 .repo
文件:
sudo vi /etc/yum.repos.d/mongodb-org.repo
然后,访问 MongoDB 文档的 Install on Red Hat 部分,并将最新稳定版本的存储库信息添加到文件中:
/etc/yum.repos.d/mongodb-org.repo
[mongodb-org-3.4] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
保存并关闭文件。
在继续之前,我们应该验证 MongoDB 存储库是否存在于 yum
实用程序中。 repolist
命令显示启用的存储库列表:
yum repolist
Output. . . repo id repo name base/7/x86_64 CentOS-7 - Base extras/7/x86_64 CentOS-7 - Extras mongodb-org-3.2/7/x86_64 MongoDB Repository updates/7/x86_64 CentOS-7 - Updates . . .
在 MongoDB Repository
就位后,让我们继续安装。
第 2 步 - 安装 MongoDB
我们可以使用 yum
实用程序从第三方存储库安装 mongodb-org
包。
sudo yum install mongodb-org
有两个Is this ok [y/N]:
提示。 第一个允许安装 MongoDB 包,第二个允许导入 GPG 密钥。 MongoDB 的发布者签署他们的软件,yum
使用密钥来确认下载包的完整性。 在每个提示符下,键入 Y
,然后按 ENTER
键。
接下来,使用 systemctl
实用程序启动 MongoDB 服务:
sudo systemctl start mongod
虽然我们不会在本教程中使用它们,但您也可以使用 reload
和 stop
命令更改 MongoDB 服务的状态。
reload
命令请求 mongod
进程读取配置文件 /etc/mongod.conf
,并应用任何更改而无需重新启动。
sudo systemctl reload mongod
stop
命令停止所有正在运行的 mongod
进程。
sudo systemctl stop mongod
systemctl
实用程序在执行 start
命令后没有提供结果,但我们可以通过使用 tail
命令:
sudo tail /var/log/mongodb/mongod.log
Output. . . [initandlisten] waiting for connections on port 27017
waiting for a connection 的输出确认 MongoDB 已成功启动,我们可以使用 MongoDB Shell 访问数据库服务器:
mongo
<$>[注] 笔记: 当您启动 MongoDB Shell 时,您可能会看到如下警告:
** WARNING: soft rlimits too low. rlimits set to 4096 processes, 64000 files. Number of processes should be at least 32000 : 0.5 times number of files.
MongoDB 是一个线程应用程序。 它可以启动其他进程来处理其工作负载。 警告指出,要使 MongoDB 最有效,它被授权启动的进程数应该是它在任何给定时间可以打开的文件数的一半。 要解决警告,请通过编辑 20-nproc.conf
文件来更改 mongod
的 processes
软限制值:
sudo vi /etc/security/limits.d/20-nproc.conf
将以下行添加到文件末尾:
/etc/security/limits.d/20-nproc.conf
. . . mongod soft nproc 32000
要使 MongoDB 可以使用新限制,请使用 systemctl
实用程序重新启动它:
sudo systemctl restart mongod
之后,当您连接到 MongoDB Shell 时,警告应该不再存在。 <$>
要了解如何从 shell 与 MongoDB 交互,您可以查看 db.help()
方法的输出,该方法提供了 db 对象的方法列表。
db.help()
OutputDB methods: db.adminCommand(nameOrDocument) - switches to 'admin' db, and runs command [ just calls db.runCommand(...) ] db.auth(username, password) db.cloneDatabase(fromhost) db.commandHelp(name) returns the help for the command db.copyDatabase(fromdb, todb, fromhost) db.createCollection(name, { size : ..., capped : ..., max : ... } ) db.createUser(userDocument) db.currentOp() displays currently executing operations in the db db.dropDatabase() . . .
让 mongod
进程在后台运行,但使用 exit
命令退出 shell:
exit
OutputBye
第 3 步 - 验证启动
因为数据库驱动的应用程序在没有数据库的情况下无法运行,我们将确保 MongoDB 守护程序 mongod
将与系统一起启动。
使用 systemctl
实用程序检查其启动状态:
systemctl is-enabled mongod; echo $?
输出为零确认启用了我们想要的守护程序。 然而,一个确认一个禁用的守护程序将不会启动。
Output. . . enabled 0
如果守护程序被禁用,请使用 systemctl
实用程序来启用它:
sudo systemctl enable mongod
我们现在有一个正在运行的 MongoDB 实例,它将在系统重启后自动启动。
第 4 步 - 导入示例数据集(可选)
与其他数据库服务器不同,MongoDB 的 test
数据库中没有数据。 由于我们不想使用生产数据试验新软件,我们将从“MongoDB 入门”文档的“导入示例数据集”部分下载示例数据集。 JSON 文档包含一组餐馆,我们将使用它们来练习与 MongoDB 的交互并避免对敏感数据造成损害。
首先进入一个可写目录:
cd /tmp
使用 curl
命令和来自 MongoDB 的链接下载 JSON 文件:
curl -LO https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json
mongoimport
命令将数据插入到 test 数据库中。 --db
标志定义使用哪个数据库,而 --collection
标志指定信息将存储在数据库中的哪个位置,--file
标志告诉命令执行哪个文件进口行动:
mongoimport --db test --collection restaurants --file /tmp/primer-dataset.json
输出确认从 primer-dataset.json
文件导入数据:
Outputconnected to: localhost imported 25359 documents
有了示例数据集,我们将对它执行查询。
重新启动 MongoDB Shell:
mongo
shell 默认选择 test
数据库,这是我们导入数据的地方。
使用 find()
方法查询 restaurants 集合以显示数据集中所有餐厅的列表。 由于集合包含超过 25,000 个条目,请使用可选的 limit()
方法将查询的输出减少到指定的数量。 此外,pretty()
方法通过换行符和缩进使信息更易于阅读。
db.restaurants.find().limit( 1 ).pretty()
Output{ "_id" : ObjectId("57e0443b46af7966d1c8fa68"), "address" : { "building" : "1007", "coord" : [ -73.856077, 40.848447 ], "street" : "Morris Park Ave", "zipcode" : "10462" }, "borough" : "Bronx", "cuisine" : "Bakery", "grades" : [ { "date" : ISODate("2014-03-03T00:00:00Z"), "grade" : "A", "score" : 2 }, { "date" : ISODate("2013-09-11T00:00:00Z"), "grade" : "A", "score" : 6 }, { "date" : ISODate("2013-01-24T00:00:00Z"), "grade" : "A", "score" : 10 }, { "date" : ISODate("2011-11-23T00:00:00Z"), "grade" : "A", "score" : 9 }, { "date" : ISODate("2011-03-10T00:00:00Z"), "grade" : "B", "score" : 14 } ], "name" : "Morris Park Bake Shop", "restaurant_id" : "30075445" }
您可以继续使用示例数据集熟悉 MongoDB 或使用 db.restaurants.drop()
方法将其删除:
db.restaurants.drop()
最后,使用 exit
命令退出 shell:
exit
OutputBye
结论
在本教程中,我们介绍了将第三方存储库添加到 yum
、安装 MongoDB 数据库服务器、导入示例数据集以及执行简单查询。 我们几乎没有触及 MongoDB 功能的皮毛。 您可以使用多个 集合 创建自己的数据库,用许多 文档 填充它们,然后开始构建一个健壮的应用程序。