如何在CentOS 7上安装MongoDB

介绍

MongoDB是一个面向文档的数据库,是免费的开源软件。它被归类为NoSQL数据库,因为它不依赖于传统的基于表的关系数据库结构。相反,它使用类似JSON的文档和动态模式。与关系数据库不同,MongoDB在向数据库添加数据之前不需要预定义的模式。您可以随时根据需要随时更改架构,而无需使用更新的架构设置新数据库。

本教程将指导您在CentOS 7服务器上安装MongoDB Community Edition。

准备

一台已经设置好可以使用sudo命令的非root账号的CentOS服务器,并且已开启防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

第1步 - 添加MongoDB存储库

mongodb-org软件包不存在于CentOS的默认存储库中。但是,MongoDB维护着一个专用的存储库。我们将它添加到我们的服务器。

使用vi编辑器,为CentOS管理实用程序的yum包创建一个.repo文件:

sudo vi /etc/yum.repos.d/mongodb-org.repo

然后,访问MongoDB文档的Install on Red Hat部分,并将最新稳定版本的存储库信息添加到该文件中:

[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

保存并关闭文件。

在我们继续之前,我们应该验证yum实用程序中是否存在MongoDB存储库。该repolist命令显示已启用的存储库列表:

yum repolist
. . .
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

虽然我们不会在本教程中使用它们,但您也可以使用reloadstop命令更改MongoDB服务的状态。

reload命令请求mongod进程读取配置文件/etc/mongod.conf,并应用任何更改而无需重新启动。

sudo systemctl reload mongod

stop命令将暂停所有正在运行的mongod进程。

sudo systemctl stop mongod

systemctl实用程序在执行start命令后未提供结果,但我们可以通过mongod.log使用以下tail命令查看文件末尾来检查服务是否已启动:

sudo tail /var/log/mongodb/mongod.log
. . .
[initandlisten] waiting for connections on port 27017

等待连接的输出确认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来说,最有效的是它被授权启动的进程数应该是它在任何给定时间可以打开的文件数的一半。要解除警告,请通过编辑mongod``20-nproc.conf文件来更改processes的软rlimit值:

sudo vi /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()
DB 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
Bye

第3步 - 验证启动

由于数据库驱动的应用程序在没有数据库的情况下无法运行,因此我们将确保MongoDB守护程序mongod将从系统开始。

使用该systemctl实用程序检查其启动状态:

systemctl is-enabled mongod; echo $?

输出为零确认已启用的守护程序,我们需要它。但是,一个确认无法启动的禁用守护程序。

. . .
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命令将数据插入测试数据库。该--db标志定义了使用哪个数据库,而该--collection标志指定了数据库中存储信息的位置,该--file标志告诉命令在哪个文件上执行导入操作:

mongoimport --db test --collection restaurants --file /tmp/primer-dataset.json

输出确认从primer-dataset.json文件导入数据:

connected to: localhost
imported 25359 documents

在示例数据集到位后,我们将对其执行查询。

重新启动MongoDB Shell:

mongo

shell 默认选择test数据库,这是我们导入数据的地方。

使用find()方法查询restaurants集合以显示数据集中所有restuarants的列表。由于集合包含超过25,000个条目,因此请使用可选limit()方法将查询的输出减少到指定的数字。此外,该pretty()方法通过换行符和缩进使信息更易于阅读。

db.restaurants.find().limit( 1 ).pretty()
{
    "_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
Bye

结论

在本教程中,我们介绍了如何在yum中添加第三方存储库,安装MongoDB数据库服务器,导入示例数据集以及执行简单查询。我们几乎没有涉及MongoDB功能的表面。您可以使用多个集合创建自己的数据库,使用许多文档填充它们并开始构建强大的应用程序。

更多CentOS教程请前往腾讯云+社区学习更多知识。

参考文献:《How To Install MongoDB on CentOS 7》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SpringBoot 核心技术

第十七章:使用SpringSecurity让SpringBoot项目更安全

95240
来自专栏机器学习AI算法工程

python模拟新浪微博登陆功能(新浪微博爬虫)

有些网站设置了权限,只有在登录了之后才能爬取网站的内容,如何模拟登录,目前的方法主要是利用浏览器cookie模拟登录。 浏览器访问服务器的过程 在用户访问网页时...

1.2K50
来自专栏散尽浮华

Centos下MooseFS(MFS)分布式存储共享环境部署记录

分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连,分布式文...

1.1K50
来自专栏运维小白

Git客户端安装及使用

背景 为了我帅气而高大尚的博客一直在研究github,在网上找了一圈,找到了Git的客户端 安装github Git是目前世界上最先进的分布式版本控制系统,gi...

35280
来自专栏软件开发 -- 分享 互助 成长

source insigt、pc-lint、VS联合使用

前言:     近几天参加公司培训,公司要求,开发的时候使用source insight、PC-lint和VC来编程和调试,这不用不知道,一用吓一跳,这套工具一...

40890
来自专栏赵达笔记

CentOS 7.5 + PHP 5.6.36 + Nginx 1.14.0 配置笔记

Nginx 配置文件主要分成四部分:main(全局设置)、server(主机设置)、upstream(上游服务器设置,主要为反向代理、负载均衡相关配置)和 lo...

40480
来自专栏SpringBoot 核心技术

Git核心技术:在Ubuntu下为Gitolite添加管理端

在之前章节已经完成了服务端的配置,可以访问Git核心技术:在Ubuntu下部署Gitolite服务端查看配置步骤,因为gitolite的管理是通过一个名为git...

17920
来自专栏加米谷大数据

如何避免HBase写入过快引起的各种问题

client api ==> RPC ==> server IPC ==> RPC queue ==> RPC handler ==> write WAL ==...

12920
来自专栏网商云

小白如何搭建自己的WordPress个人博客超详细教程

新账号关联我们公司购买腾讯云产品,有优惠哦!联系电话:13430587834(微信同号)

4.6K90
来自专栏用户2442861的专栏

Win7 U盘安装Ubuntu16.04 双系统详细教程

http://blog.sciencenet.cn/blog-3027933-956284.html

2.6K20

扫码关注云+社区

领取腾讯云代金券