本教程的早期版本由 Melissa Anderson 编写。
介绍
MongoDB 是许多现代 Web 应用程序中使用的文档数据库。 它被归类为 NoSQL 数据库,因为它不依赖于传统的基于表的关系数据库结构。
相反,它使用具有动态模式的类 JSON 文档,这意味着与关系数据库不同,MongoDB 在将数据添加到数据库之前不需要预定义模式。 您可以随时根据需要随时更改模式,而无需使用更新的模式设置新数据库。
在本教程中,您将在 Ubuntu 20.04 服务器上安装 MongoDB,对其进行测试,并学习如何将其作为 systemd
服务进行管理。
先决条件
要遵循本教程,您将需要:
- 一台 Ubuntu 20.04 服务器。 此服务器应具有非 root 管理用户和配置了 UFW 的防火墙。 按照我们的 Ubuntu 20.04 初始服务器设置指南进行设置。
第 1 步 — 安装 MongoDB
Ubuntu 的官方软件包存储库包括一个稳定版本的 MongoDB。 但是,在撰写本文时,默认 Ubuntu 存储库中可用的 MongoDB 版本是 3.6,而最新的稳定版本是 4.4。
要获取此软件的最新版本,您必须将 MongoDB 的专用软件包存储库包含到您的 APT 源中。 然后,您将能够安装 mongodb-org
,这是一个始终指向最新版本 MongoDB 的元包。
首先,通过运行以下命令导入最新稳定版 MongoDB 的公共 GPG 密钥。 如果您打算使用 4.4 以外的 MongoDB 版本,请务必更改此命令的 URL 部分中的 4.4
以与您要安装的版本保持一致:
curl -fsSL https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
cURL 是用于传输数据的许多操作系统上可用的命令行工具。 它读取存储在传递给它的 URL 中的任何数据,并将内容打印到系统的输出。 在以下示例中,cURL 打印 GPG 密钥文件的内容,然后将其通过管道传送到以下 sudo apt-key add -
命令中,从而将 GPG 密钥添加到您的受信任密钥列表中。
另外,请注意,此 curl
命令使用选项 -fsSL
,它们一起基本上告诉 cURL 静默失败。 这意味着如果由于某种原因 cURL 无法联系 GPG 服务器或 GPG 服务器已关闭,它不会意外地将生成的错误代码添加到您的受信任密钥列表中。
如果密钥添加成功,此命令将返回 OK
:
OutputOK
如果您想仔细检查是否正确添加了密钥,可以使用以下命令执行此操作:
apt-key list
这将在输出中的某处返回 MongoDB 键:
Output/etc/apt/trusted.gpg -------------------- pub rsa4096 2019-05-28 [SC] [expires: 2024-05-26] 2069 1EEC 3521 6C63 CAF6 6CE1 6564 08E3 90CF B1F5 uid [ unknown] MongoDB 4.4 Release Signing Key <packaging@mongodb.com> . . .
此时,你的 APT 安装仍然不知道在哪里可以找到安装最新版本 MongoDB 所需的 mongodb-org
包。
APT 在您的服务器上有两个地方查找要下载和安装的软件包的在线资源:sources.list
文件和 sources.list.d
目录。 sources.list
是一个列出 APT 数据的活动源的文件,每行一个源,最首选的源首先列出。 sources.list.d
目录允许您将此类 sources.list
条目添加为单独的文件。
运行以下命令,将在 sources.list.d
目录中创建一个名为 mongodb-org-4.4.list
的文件。 该文件中唯一的内容是单行读取 deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse
:
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
这一行告诉 APT 它需要知道的关于源是什么以及在哪里找到它的所有信息:
deb
:这意味着源条目引用了一个常规的 Debian 架构。 在其他情况下,该行的这一部分可能显示为deb-src
,这意味着源条目代表 Debian 发行版的源代码。[ arch=amd64,arm64 ]
:这指定应该将 APT 数据下载到哪些架构。 在这种情况下,它指定了amd64
和arm64
架构。https://repo.mongodb.org/apt/ubuntu
:这是一个 URI,表示可以找到 APT 数据的位置。 在这种情况下,URI 指向官方 MongoDB 存储库所在的 HTTPS 地址。focal/mongodb-org/4.4
:Ubuntu 存储库可以包含多个不同的版本。 这指定您只希望mongodb-org
软件包的4.4
版本可用于 Ubuntu 的focal
版本(“Focal Fossa”是 Ubuntu 20.04 的代号)。multiverse
:这部分将 APT 指向四个主要的 Ubuntu 存储库之一。 在这种情况下,它指向 multiverse 存储库。
运行此命令后,更新服务器的本地包索引,以便 APT 知道在哪里可以找到 mongodb-org
包:
sudo apt update
之后,您可以安装 MongoDB:
sudo apt install mongodb-org
出现提示时,按 Y
,然后按 ENTER
确认您要安装该软件包。
命令完成后,MongoDB 将安装在您的系统上。 但是它还没有准备好使用。 接下来,您将启动 MongoDB 并确认它工作正常。
第 2 步 — 启动 MongoDB 服务并测试数据库
上一步中描述的安装过程会自动将 MongoDB 配置为由 systemd
控制的守护程序运行,这意味着您可以使用各种 systemctl
命令来管理 MongoDB。 但是,此安装过程不会自动启动该服务。
运行以下 systemctl
命令启动 MongoDB 服务:
sudo systemctl start mongod.service
然后检查服务的状态。 请注意,此命令在服务文件定义中不包括 .service
。 systemctl
会将此后缀附加到您自动传递的任何参数(如果它不存在),因此没有必要包含它:
sudo systemctl status mongod
此命令将返回如下输出,表明服务已启动并正在运行:
Output● mongod.service - MongoDB Database Server Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled) Active: active (running) since Tue 2020-06-09 12:57:06 UTC; 2s ago Docs: https://docs.mongodb.org/manual Main PID: 37128 (mongod) Memory: 64.8M CGroup: /system.slice/mongod.service └─37128 /usr/bin/mongod --config /etc/mongod.conf
确认服务按预期运行后,使 MongoDB 服务在启动时启动:
sudo systemctl enable mongod
您可以通过连接到数据库服务器并执行诊断命令来进一步验证数据库是否正常运行。 以下命令将连接到数据库并输出其当前版本、服务器地址和端口。 它还将返回 MongoDB 内部 connectionStatus
命令的结果:
mongo --eval 'db.runCommand({ connectionStatus: 1 })'
connectionStatus
将检查并返回数据库连接的状态。 响应中 ok
字段的 1
值表明服务器正在按预期工作:
OutputMongoDB shell version v4.4.0 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("1dc7d67a-0af5-4394-b9c4-8a6db3ff7e64") } MongoDB server version: 4.4.0 { "authInfo" : { "authenticatedUsers" : [ ], "authenticatedUserRoles" : [ ] }, "ok" : 1 }
另外,请注意,数据库在 127.0.0.1
上的端口 27017
上运行,本地环回地址表示 localhost。 这是 MongoDB 的默认端口号。
接下来,我们将看看如何使用 systemd
管理 MongoDB 服务器实例。
第 3 步 — 管理 MongoDB 服务
如前所述,步骤 1 中描述的安装过程将 MongoDB 配置为作为 systemd
服务运行。 这意味着您可以像使用其他 Ubuntu 系统服务一样使用标准的 systemctl
命令来管理它。
如前所述,systemctl status
命令检查 MongoDB 服务的状态:
sudo systemctl status mongod
您可以通过键入以下内容随时停止服务:
sudo systemctl stop mongod
要在服务停止时启动服务,请运行:
sudo systemctl start mongod
您还可以在服务器已经运行时重新启动它:
sudo systemctl restart mongod
在第 2 步中,您启用了 MongoDB 以随服务器自动启动。 如果您希望禁用此自动启动,请键入:
sudo systemctl disable mongod
然后要重新启用它以在启动时启动,请再次运行 enable
命令:
sudo systemctl enable mongod
有关如何管理 systemd
服务的更多信息,请查看 Systemd Essentials:使用服务、单元和日志 。
结论
在本教程中,您将官方 MongoDB 存储库添加到您的 APT 实例,并安装了最新版本的 MongoDB。 然后您测试了 Mongo 的功能并练习了一些 systemctl
命令。
作为紧接着的下一步,我们 强烈 建议您按照我们关于 如何在 Ubuntu 20.04 上保护 MongoDB 的指南来加强 MongoDB 安装的安全性。 一旦它得到保护,您就可以 配置 MongoDB 以接受远程连接 。
您可以在 这些 DigitalOcean 社区文章 中找到更多关于如何配置和使用 MongoDB 的教程。 我们还鼓励您查看官方 MongoDB 文档,因为它是关于 MongoDB 提供的可能性的一个很好的资源。