如何在 RHEL 8/CentOS 8 上安装 mongodb
MongoDB 是一个文档数据库,以类似 JSON 的形式存储数据,这与传统关系数据库相比是革命性的。这并不意味着 SQL 数据库很快就会消亡。当您需要存储结构化数据时,它们将长期存在。
话虽这么说,MongoDB 的用例越来越多;以可即时更改的形式存储数据的能力是必须考虑的因素。
在本教程中,我们将使用 tarball 包将此 NoSQL 数据库的最新社区版本安装到 RHEL 8/CentOS 8。为了使其顺利工作,我们将设置最小环境,并测试我们的配置和运行服务。
在本教程中您将学习:
如何下载并解压 MongoDB tarball
如何搭建服务环境
如何管理mongod服务
如何登录mongo shell,插入和查询示例数据
mongodb 中的示例查询。
如何在 RHEL 8/CentOS 8 上安装 mongodb 分步说明
我们需要在安装之前收集一个 URL。为此,我们需要访问 MongoDB 下载中心社区站点,选择操作系统和版本(在本例中为 Linux 64 位旧版,我们需要 tarball)。虽然我们提供了下载按钮,但我们还获得了下面的直接 URL,我们可以直接从目标计算机使用该 URL。
如果我们确实可以从目标访问互联网,这可以使我们免于通过浏览器下载包然后将其传输到目标计算机。因此请记下该 URL,我们很快就会使用它。
我们将二进制文件存储在
/opt
下。在目标机器上,我们进入目录:# cd /opt
并通过向
wget
提供之前获取的 URL 来下载 tarball:# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.5.tgz --2019-01-03 16:49:59-- https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.5.tgz Resolving fastdl.mongodb.org (fastdl.mongodb.org)... 52.222.150.27, 52.222.150.229, 52.222.150.45, ... Connecting to fastdl.mongodb.org (fastdl.mongodb.org)|52.222.150.27|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 73214518 (70M) [application/x-gzip] Saving to: 'mongodb-linux-x86_64-4.0.5.tgz' mongodb-linux-x86_64-4.0.5.tgz 100%[================================================================================================================>] 69.82M 3.12MB/s in 23s 2019-01-03 16:50:22 (3.06 MB/s) - 'mongodb-linux-x86_64-4.0.5.tgz' saved [73214518/73214518]
我们提取 tarball:
# tar -zxvf mongodb-linux-x86_64-4.0.5.tgz
并创建一个名为 mongodb 的更容易记住的符号链接,它指向提取的目录(版本号可能不同):
# ln -s mongodb-linux-x86_64-4.0.5 mongodb
我们创建将运行名为 mongod 的服务的用户:
# useradd mongod
我们创建 mongodb 存储数据的目录:
# mkdir -p /var/lib/mongo
我们将 mongod 用户设置为二进制文件和数据目录的所有者:
# chown -R mongod:mongod /opt/mongodb* # chown -R mongod: /var/lib/mongo
我们为 mongodb 创建一个基本配置文件。我们指定创建的数据目录,并将数据库设置为仅在本地主机上侦听默认端口
27017
。我们创建文本文件/etc/mongod.conf
,内容如下:storage: dbPath: "/var/lib/mongo" journal: enabled: true net: port: 27017 bindIp: "127.0.0.1"
为了使 systemd 能够管理服务,我们使用最少的配置创建文本文件 /etc/systemd/system/mongod.service :
[Unit] Description=MongoDB After=syslog.target network.target [Service] Type=simple User=mongod Group=mongod ExecStart=/opt/mongodb/bin/mongod --config /etc/mongod.conf [Install] WantedBy=multi-user.target
我们暂时将selinux 设置为permissive,因为它会阻止服务访问资源。设置
selinux
策略超出了本教程的范围。# setenforce 0
我们将要求 systemd 重新加载:
systemctl daemon-reload
并检查服务是否被识别:
# systemctl status mongod mongod.service - MongoDB Loaded: loaded (/etc/systemd/system/mongod.service; disabled; vendor preset: disabled) Active: inactive (dead)
我们准备启动服务:
# systemctl start mongod
并检查其状态。如果一切顺利,我们应该看到类似以下内容:
# systemctl status mongod mongod.service - MongoDB Loaded: loaded (/etc/systemd/system/mongod.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2019-01-03 17:01:48 CET; 4s ago Main PID: 2993 (mongod) Tasks: 23 (limit: 12544) Memory: 45.3M CGroup: /system.slice/mongod.service 2993 /opt/mongodb/bin/mongod --config /etc/mongod.conf
我们可以使用 mongo shell 测试我们的服务,mongo shell 是 MongoDB 附带的命令行界面。为了能够访问它,我们需要将提取的二进制文件包含在
` PATH
中。作为懒惰的管理员,我们只这样做一次,这是永久的方式。我们将以下行添加到/root/.bash_profile
的最后一个“export PATH”行之前:## mongodb PATH=$PATH:/opt/mongodb/bin
并运行脚本:
# . ~/.bash_profile
我们启动
mongo shell
:# mongo MongoDB shell version v4.0.5 connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb Implicit session: session { "id" : UUID("8999342b-e313-48e6-92c4-bf6b07cee0e4") } MongoDB server version: 4.0.5 Welcome to the MongoDB shell. For interactive help, type "help". [...] >
在
mongo shell
上,我们将询问是否存在任何数据库:> db test
并切换到已发布的
test
数据库:> use test switched to db test
我们将一些测试数据(键“x”,值为“1”)插入到动态创建的集合中:
> db.exampleCollection.insertOne( { x: 1 } ); { "acknowledged" : true, "insertedId" : ObjectId("5c2e33040854f2d89326ae9c") } >
最后,我们查询新集合中的所有数据,验证我们的键值对是否已成功存储:
> db.getCollection("exampleCollection").find().pretty(); { "_id" : ObjectId("5c2e4c2fd129ceef6a6c6112"), "x" : 1 } >