本教程的早期版本由Melissa Anderson编写。
介绍
MongoDB,也称为Mongo,是许多现代 Web 应用程序中使用的开源文档数据库。它被归类为NoSQL 数据库,因为它不依赖于传统的基于表的关系数据库结构。
相反,它使用具有动态模式的类似 JSON 的文档,这意味着与关系数据库不同,MongoDB 在向数据库添加数据之前不需要预定义的模式。您可以随时根据需要随时更改架构,而无需使用更新的架构设置新数据库。
在本教程中,您将在 Ubuntu 18.04 服务器上安装 MongoDB,对其进行测试,并了解如何将其作为systemd
服务进行管理。
先决条件
要学习本教程,您需要:
- 一台 Ubuntu 18.04 服务器。此服务器应具有非 root 管理用户和使用 UFW 配置的防火墙。按照我们针对 Ubuntu 18.04 的初始服务器设置指南进行设置。
第 1 步 – 安装 MongoDB
Ubuntu 的官方软件包存储库包括稳定版本的 MongoDB。但是,在撰写本文时,默认 Ubuntu 存储库中可用的 MongoDB 版本是3.6,而最新的稳定版本是4.4。
要获得此软件的最新版本,您必须将 MongoDB 的专用包存储库包含到您的 APT 源中。然后,您将能够安装mongodb-org
,这是一个始终指向最新版本 MongoDB 的元包。
首先,通过运行以下命令导入最新稳定版 MongoDB 的公共 GPG 密钥。如果您打算使用4.4以外的 MongoDB 版本,请务必更改4.4
此命令的 URL 部分以与您要安装的版本保持一致:
- 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 <[email protected]>
. . .
此时,您的 APT 安装仍然不知道在哪里可以找到mongodb-org
安装最新版本 MongoDB 所需的包。
在您的服务器上有两个位置,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 bionic/mongodb-org/4.4 multiverse
:
- echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/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 地址。bionic/mongodb-org/4.4
:Ubuntu 存储库可以包含多个不同的版本。这指定您只需要可用于Ubuntu 发行版4.4
的mongodb-org
软件包bionic
版本(“Bionic Beaver”是 Ubuntu 18.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-10-06 15:08:09 UTC; 6s ago
Docs: https://docs.mongodb.org/manual
Main PID: 13429 (mongod)
CGroup: /system.slice/mongod.service
└─13429 /usr/bin/mongod --config /etc/mongod.conf
确认服务按预期运行后,启用MongoDB服务开机启动:
- sudo systemctl enable mongod
您可以通过连接到数据库服务器并执行诊断命令来进一步验证数据库是否正常运行。以下命令将连接到数据库并输出其当前版本、服务器地址和端口。它还将返回 MongoDB 内部connectionStatus
命令的结果:
- mongo --eval 'db.runCommand({ connectionStatus: 1 })'
connectionStatus
将检查并返回数据库连接的状态。的值1
用于ok
在响应字段指示该服务器正在按预期:
OutputMongoDB shell version v4.4.1
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("2244c4df-38a3-4109-9fd2-68948865647a") }
MongoDB server version: 4.4.1
{
"authInfo" : {
"authenticatedUsers" : [ ],
"authenticatedUserRoles" : [ ]
},
"ok" : 1
}
另请注意,数据库在端口27017
on 上运行127.0.0.1
,本地环回地址代表localhost。这是 MongoDB 的默认端口号。
接下来,我们将看看如何使用systemd
.
第 3 步 – 管理 MongoDB 服务
如前所述,步骤 1 中描述的安装过程将 MongoDB 配置为作为systemd
服务运行。这意味着您可以systemctl
像使用其他 Ubuntu 系统服务一样使用标准命令来管理它。
如前所述,该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 18.04 上保护 MongoDB 的指南来加强 MongoDB 安装的安全性。一旦它受到保护,您就可以配置 MongoDB 以接受远程连接。
您可以在这些 DigitalOcean 社区文章中找到有关如何配置和使用 MongoDB 的更多教程。我们还鼓励您查看官方MongoDB 文档,因为它是关于 MongoDB 提供的可能性的重要资源。