所以您决定使用 MongoDB,这是一个很棒的工具 alternative to MariaDB 用于构建 MERN 堆栈应用程序、分析平台或任何基于文档的系统,但在良好的旧 Linux 命令行和无数终端错误方面遇到了困难。
不过不用担心,因为本指南提供了在 Ubuntu 上安装 MongoDB 所需的从头到尾的所有信息。
MongoDB 使用 XYZ 版本控制。 8.0 是一个 主要的 发布系列,以及 8.2 是一个 次要的 在 8.0 周期内发布。次要版本在同一主要周期内添加了功能,并且从 8.0 开始,还提供针对特定用例(例如搜索和矢量搜索)的本地安装。 Ubuntu 上的 MongoDB 8.0 支持 24.04(贵族)、22.04(杰米)和 20.04(焦点) 在 64 位系统上,在特定平台上支持 ARM64。
GnuPG 和 Curl 先决条件
安装官方之前 MongoDB-org 软件包,Ubuntu 需要两个先决条件: GnuPG 和 卷曲。这些工具赋予 Ubuntu 下载 MongoDB 的权限,因为 Ubuntu 自己的 蒙古数据库 包不是由 MongoDB Inc. 维护的,与官方冲突 MongoDB-org 包裹。如果您已经安装了 蒙古数据库 确保将其卸载。
接下来,运行命令 sudo apt-get install gnupg 卷曲。 Curl 是一个从互联网下载文件的工具,需要检索 MongoDB 的安全密钥。 Ubuntu 使用 GnuPG 来验证软件的真实性。如果缺少 GnuPG,Ubuntu 将无法验证 MongoDB 包。
确保您的终端成功安装了 GnuPG 和 Curl。如果是的话,它应该看起来像这样:
导入 MongoDB GPG 密钥
Ubuntu 的软件包管理器 APT 在安装前使用 GPG 密钥来验证软件包。如果没有这个 GPG 密钥,Ubuntu 就不允许添加 MongoDB 的存储库。在终端中键入以下命令来添加密钥:
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \
--dearmor
如果有效,您的终端输出应如下所示:
简单来说,该命令下载 MongoDB 的安全签名,将其转换为 Ubuntu 可以读取的格式,并将其保存在安全的系统文件夹中。以下是命令行的逐节细分:
- 卷曲-fsSL URL 下载MongoDB的官方密钥
- ——亲爱的 将密钥从文本格式转换为二进制以便 Ubuntu 理解
- -o /usr/share/keyrings/mongodb-server-8.0.gpg 将二进制文件保存到 Ubuntu 存储可信密钥的文件夹中
如果您完美匹配每个命令行,则将毫无问题地添加公共 GPG 密钥。然而,一些用户在下载 MongoDB 时会因为 GPG 密钥不匹配而遇到问题。错误如:
NO_PUBKEY
The following signatures couldn't be verified
public key not available
当您之前没有遵循确切的 GPG 键命令而是使用 sudo apt-key 因为现代 Ubuntu 不推荐它。
添加 MongoDB 存储库
添加 MongoDB 的存储库会创建一个文件,告诉 Ubuntu MongoDB 包位于特定的互联网地址。创建列表文件于 /etc/apt/sources.list.d/mongodb-org-8.0.list 通过使用将存储库行写入其中 回声……须藤三通…
这就是棘手的地方,因为不同版本的 Ubuntu 需要该命令的不同变体。现在我们将研究如何在前面提到的三个版本的 Ubuntu 上导入列表文件。
Ubuntu 24.04(高贵)
为了在 Ubuntu 24.04 上创建列表文件,只需输入 echo“deb [ arch=amd64,arm64 签名者=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu Nobel/mongodb-org/8.0 multiverse” | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list 在您的终端上。
这可能看起来令人困惑,但不要担心。一旦我们把命令分解成几个部分,它就会一目了然。
- 回声 打印文本
- /etc/apt/sources.list.d 是 Ubuntu 存储软件源定义的文件夹。每个文件都带有 。列表 文件夹内的格式将 Ubuntu 指向一个特定位置以从中下载软件
- 默认情况下,普通用户无法在系统文件夹中写入任何内容。 球座 授予用户将文本写入系统文件的特殊权限,同时使用 须藤
- 高贵 是 Ubuntu 24.04 的代号。每个 Ubuntu 版本都有一个代号,例如:
| 版本 | 代号 |
| 20.04 | 焦点 |
| 22.04 | 杰米 |
| 24.04 | 高贵 |
如果您的 Ubuntu 版本与正确的命令行不匹配,Ubuntu 将无法识别 MongoDB 的存储库。
Ubuntu 22.04(杰米)
将列表文件添加到 Ubuntu Jammy 看起来是一样的,但是替换时必须输入命令行 高贵 和 杰米, 像这样:
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
确保它与你的 Ubuntu 版本匹配,否则会再次失败。
Ubuntu 20.04(焦点)
请按照此处相同的步骤操作,但不是 高贵 or 杰米, 普京 焦点:
echo“deb [ arch=amd64,arm64 签名者=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu focus/mongodb-org/8.0 multiverse” | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
现在设置了存储库,您可以继续安装 MongoDB-org.
刷新包数据库
既然该存储库已被 Ubuntu 识别,您需要重新加载其中的包数据库,因此从现在开始它也包括 MongoDB。发出下面提到的命令:
sudo apt-get update
该命令在每个 Ubuntu 版本中都保持不变,如果跳过该命令,Ubuntu 将不会包含 MongoDB。如果该命令完成其工作,您的终端输出应该是:
现在,重新加载包数据库后,就可以下载 MongoDB 包了。
安装 MongoDB 社区服务器
有多种 MongoDB 版本可供安装,但用户倾向于使用最新的稳定版本,因为它更可取。要安装最新的稳定版本,请运行 sudo apt-get install -y mongodb-org
Ubuntu 现在已经下载并安装了 MongoDB 软件包,创建了 MongoDB 用户帐户和数据目录,并将 MongoDB 注册为系统服务。到目前为止,我们已经介绍了如何在 Ubuntu 上下载 MongoDB。现在让我们开始吧。
如何启动 MongoDB
现在,为了运行 MongoDB,我们需要告诉 Ubuntu 的服务管理器“systemd”将 MongoDB 识别为后台服务,为此,您需要在终端中键入以下命令:
sudo systemctl start mongod
如果该命令完成其工作,Ubuntu 现在将打开 MongoDB 作为后台应用程序。但是,如果该命令未完成其工作,您可能会收到类似于以下内容的错误 无法启动 mongod.service.
发生这种情况可能是由于几个常见问题:
- 配置文件错误 in /etc/mongod.conf (YAML 缩进错误很常见)
- 端口冲突 (27017端口已被占用)
- 权限问题 在数据或日志目录上(var/lib/mongodb 或 var/log/mongodb)
- 磁盘已满 or 损坏的文件系统状态
诊断问题的三个命令
很容易说出您的配置可能存在哪些问题导致 MongoDB 无法运行,但要查明确切原因却要困难得多。诊断错误可能来源的三种简单方法是:
- 检查服务状态: sudo systemctl status mongod –无寻呼机
- 检查详细日志(最重要): 须藤journalctl -u mongod –无寻呼机-n 100
- 检查MongoDB自带的日志文件
但请注意,如果您的磁盘已满或系统文件损坏,修复将更多地涉及您的硬件而不是软件。如果当前的设置已经过时,用户可能需要为其服务器设置购买更好的设备,以便有效地运行 MongoDB。
如果购买全功能服务器不在您的预算之内,请考虑查看 Cloudzy 的 乌班图VPS 使用您喜欢的 Ubuntu 发行版在您自己的私人服务器上获得干净的体验。它配备了 24/7 支持并高达 40Gbps 网络速度,得益于其 NVMe固态硬盘 和 DDR5内存 贮存。
此外,它具有最小的延迟, 99.95% 正常运行时间和 14天 退款保证。不仅如此,它还可以在 12 以实惠的价格遍布全球。
使 MongoDB 运行的三个最常见的修复方法
没有绝对的方法可以识别 MongoDB 系统的确切问题并通过一个简单的步骤修复它。因此,您可以使用以下一些常见修复来让您的 MongoDB 开始运行。
- YAML 配置缩进错误。 假设你编辑了 /etc/mongod.conf 通过提示重新检查缩进 须藤纳米 /etc/mongod.conf。 YAML 文件对空格非常敏感,因此请确保每个级别只有两个空格 /etc/mongod.conf.
- 占用端口27017。如果有其他东西正在使用端口 27017,请将其关闭或更改 MongoDB 的端口 mongod.conf。如果您不确定端口 27017 上运行的任何内容,请随意运行 sudo ss -lntp | sudo ss -lntp | grep 27017 检查一下
- 数据目录权限问题。 有时 MongoDB 缺乏在您的系统上运行的权限,因此根本无法运行。第一次运行 sudo chown -R mongodb:mongodb /var/lib/mongodb /var/log/mongodb,然后重新启动 MongoDB sudo systemctl 重新启动 mongod
根据 MongoDB 官方网站,解决此问题的另一种方法是使用以下命令重新加载守护进程 sudo systemctl 守护进程重新加载,然后运行第一个命令, sudo systemctl 启动 mongod, 再次。
如果没有 mongod.service,安装没有放置systemd单元,所以重新安装 MongoDB-org 套装。
综上所述,您可以验证 MongoDB 是否已成功启动: sudo systemctl 状态 mongod。如果终端显示 活动(运行),你可以走了。但还有一些进一步的配置可以让您的体验更加流畅。
使 MongoDB 自动化
MongoDB 不会在您每次打开服务器时自动打开;您每次都必须重复提到的一些步骤。或者,您可以告诉 Ubuntu 在启动到桌面后启动 MongoDB。
只需运行 sudo systemctl 启用 mongod 在你的终端上,从现在开始,它会告诉你的系统在每次重新启动后运行 MongoDB。此外,您还可以重新启动 蒙戈德 通过发出命令进行处理 sudo systemctl 重新启动 mongod。此外,用户可能需要通过查看文件中的输出来跟踪任何错误或重要消息的过程:
/var/log/mongodb/mongod.log
现在一切都已设置完毕,让我们开始使用 mongod。
打开 MongoDB Shell
要与数据库交互,用户必须通过发出以下命令打开 MongoDB shell 蒙戈什。将其视为 MongoDB 或 MySQL 控制台的专用命令提示符终端。或者,您可以使用 GUI 工具(例如 MongoDB 驱动程序)与 MongoDB 交互。但如果你想从终端与它交互, 蒙戈什 就是为了实现这一点而设计的。
您的 MongoDB 现在将完全正常工作,但您必须考虑一些额外的步骤以确保其安全。
对 MongoDB 进行身份验证
默认情况下,MongoDB 没有密码保护,因为您必须已经拥有创建用户的访问权限。这是实现这一目标的简单方法
创建管理员用户
首先,您需要使用以下命令切换到管理数据库:
use admin
然后创建一个用户 db.createUser({…})。填写您的
- 用户名
- 密码
- 角色
对于角色,最好输入 根 这意味着完全控制或管理。
启用身份验证
现在我们已经设置了自己的用户,我们需要编辑 /etc/mongod.conf 文件。这是因为该文件控制 MongoDB 的行为方式。但请记住,通过编辑文件,您必须始终重新启动 蒙戈德 之后的服务 sudo systemctl 重新启动 mongod。我们需要在这里更改一个称为授权的参数,如下所示:
security:
authorization:
要完成身份验证过程,只需更改授权值,如下所示:
security:
authorization: enabled
从现在开始,MongoDB 需要登录,因此您的身份验证已完成。现在让我们继续进行另一个充分利用 MongoDB 的配置。
打开你的防火墙
如前所述,MongoDB 在端口 27017 上运行。由于防火墙默认情况下会阻止端口,因此您必须告诉防火墙允许应用程序在 27017 上运行。要实现这一点,只需发出以下命令:
ufw allow from YOUR_IP to any port 27017
或者,您也可以发出命令 UFW 允许 27017,但要小心,因为运行此命令将允许整个互联网访问该端口。选择第一个选项可能是最安全的选择,因为它允许流量仅从您的 IP 地址访问端口。
用户在运行MongoDB时可能仍然面临挑战,例如远程访问问题。 Stick around to find out how to fix it.
远程访问问题
MongoDB 推出 绑定Ip. 绑定Ip 将 MongoDB 限制为 127.0.0.1, allowing only local connections.因此,如果您要从其他地方连接到 MongoDB 服务器,您将不会被允许访问,因为 MongoDB 默认配置为仅允许现场连接,除非另有配置。
再次出发前往 /etc/mongod.conf,你会看到这样的三行:
net:
port: 27017
bindIp: 127.0.0.1
如果您想允许远程连接到您的 蒙戈德 用户,更改上面显示的值,如下所示:
net:
port: 27017
bindIp: 0.0.0.0
然后,重新启动您的 蒙戈德 服务与 sudo systemctl 重新启动 mongod 与您对文件所做的所有其他编辑一样。
您现在已授予您的 蒙戈德 接受远程连接的服务权限。但要小心,因为通过这样做,如果您尚未验证您的数据库,您会将您的数据库暴露给整个互联网 蒙戈德 用户。有许多机器人会不断扫描开放的 MongoDB 端口,因此请务必确保您的 mongod 用户有密码。
大局概要
恭喜,您现在已经完成了为 Ubuntu 系统创建优化的 MongoDB 服务的所有操作。这里还有一张思维导图,用于跟踪本文中介绍的每个步骤。
| 命令 | 它的作用 |
| 易于更新 | 刷新软件列表 |
| 易于安装 | 安装软件 |
| 卷曲 | 下载文件 |
| GPG | 管理加密密钥 |
| 回声 | 打印文字 |
| 球座 | 写入受保护的文件 |
| 系统控制启动 | 启动服务 |
| 系统控制启用 | 开机启动 |
| 系统控制状态 | 检查服务 |
| 蒙戈什 | 进入 MongoDB shell |
| 编辑 /etc/mongod.conf | 启用身份验证 |
| 乌夫沃 | 管理防火墙 |
| 绑定Ip | 允许远程访问 |
这应该可以帮助您更好地理解整个过程。但是,如果您自己设置 MongoDB 对您来说太过分了,请务必启动 Cloudzy 的 MongoDB VPS 适用于您自己预装了 MongoDB 的私有 Ubuntu 24.04 LTS 服务器。
它配备了 99.95% 正常运行时间, 24/7 支持,以及一个 14天 退款保证。除此之外,它最多支持 40 Gbps 带宽得益于其 DDR5内存 和 NVMe固态硬盘 贮存。甚至不用担心你住在哪里,因为它也可以在 12 以实惠的价格遍布世界各地。
但话虽如此,您终于成功建立了自己强大的 MongoDB 服务,并配备了各种配置来支持生产级工作负载和业务。