如何在 Ubuntu 18.04 上从默认 APT 存储库安装 MongoDB
作者选择了 Write for DOnations 计划。
介绍
MongoDB,也称为 Mongo 是一种免费的开源 NoSQL 文档数据库,常用于现代 Web 应用程序。
在本教程中,您将安装 MongoDB、管理其服务并可选择启用远程访问。
注意:在撰写本文时,本教程安装了 MongoDB 版本 3.6,这是默认 Ubuntu 存储库中可用的版本。但是,我们通常建议安装最新版本的 MongoDB — 截至撰写本文时为版本 4.4 — 而不是。如果您想安装最新版本的 MongoDB,我们鼓励您遵循本指南,了解如何从源代码在 Ubuntu 18.04 上安装 MongoDB。
先决条件
要学习本教程,您需要:
- 按照此初始服务器设置教程设置一台 Ubuntu 18.04 服务器,包括 sudo 非根用户和防火墙。
第 1 步 — 安装 MongoDB
Ubuntu 的官方包存储库包括 MongoDB,这意味着我们可以使用 apt
安装必要的包。如简介中所述,默认存储库中可用的版本不是最新版本。要安装最新版本的 Mongo,请按照本教程进行操作。
首先,更新包列表以包含最新版本的存储库列表:
- sudo apt update
现在安装 MongoDB 包本身:
- sudo apt install -y mongodb
此命令安装几个包含稳定版本 MongoDB 的包,以及用于 MongoDB 服务器的有用管理工具。数据库服务器在安装后自动启动。
接下来,让我们验证服务器是否正在运行并正常工作。
第 2 步 — 检查服务和数据库
安装过程自动启动了 MongoDB,但让我们验证服务是否已启动以及数据库是否正常工作。
首先,检查服务的状态:
- sudo systemctl status mongodb
你会看到这个输出:
Output● mongodb.service - An object/document-oriented database
Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2018-05-26 07:48:04 UTC; 2min 17s ago
Docs: man:mongod(1)
Main PID: 2312 (mongod)
Tasks: 23 (limit: 1153)
CGroup: /system.slice/mongodb.service
└─2312 /usr/bin/mongod --unixSocketPrefix=/run/mongodb --config /etc/mongodb.conf
根据 systemd
,MongoDB 服务器已启动并正在运行。
我们可以通过实际连接到数据库服务器并执行诊断命令来进一步验证这一点
执行此命令:
- mongo --eval 'db.runCommand({ connectionStatus: 1 })'
这将输出当前数据库版本、服务器地址和端口以及状态命令的输出:
OutputMongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.3
{
"authInfo" : {
"authenticatedUsers" : [ ],
"authenticatedUserRoles" : [ ]
},
"ok" : 1
}
响应中 ok
字段的 1
值表示服务器工作正常。
接下来,我们将看看如何管理服务器实例。
第 3 步 — 管理 MongoDB 服务
MongoDB 作为 systemd 服务安装,这意味着您可以使用标准 systemd
命令以及 Ubuntu 中的所有其他系统服务来管理它。
要验证服务的状态,请键入:
- sudo systemctl status mongodb
您可以随时通过键入以下命令停止服务器:
- sudo systemctl stop mongodb
要在服务器停止时启动服务器,请键入:
- sudo systemctl start mongodb
您还可以使用单个命令重新启动服务器:
- sudo systemctl restart mongodb
默认情况下,MongoDB 配置为随服务器自动启动。如果您希望禁用自动启动,请键入:
- sudo systemctl disable mongodb
再次启用它同样容易。为此,请使用:
- sudo systemctl enable mongodb
接下来,让我们为 MongoDB 安装调整防火墙设置。
第 4 步 — 调整防火墙(可选)
假设您已按照初始服务器设置教程说明在您的服务器上启用防火墙,MongoDB 服务器将无法从 Internet 访问。
如果您打算仅在本地将 MongoDB 服务器与在同一服务器上运行的应用程序一起使用,这是推荐的安全设置。但是,如果您希望能够从互联网连接到您的 MongoDB 服务器,则必须在 ufw
中允许传入连接。
要允许从任何地方通过默认端口 27017
访问 MongoDB,您可以使用 sudo ufw allow 27017
。但是,在默认安装中启用对 MongoDB 服务器的 Internet 访问可以让任何人不受限制地访问数据库服务器及其数据。
在大多数情况下,只能从某些受信任的位置访问 MongoDB,例如托管应用程序的另一台服务器。要完成此任务,您可以允许访问 MongoDB 的默认端口,同时指定将明确允许连接的另一台服务器的 IP 地址:
- sudo ufw allow from your_other_server_ip/32 to any port 27017
您可以使用 ufw
验证防火墙设置的更改:
- sudo ufw status
您应该在输出中看到允许到端口 27017
的流量:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
27017 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
27017 (v6) ALLOW Anywhere (v6)
如果您决定只允许某个 IP 地址连接到 MongoDB 服务器,则将在输出中列出允许位置的 IP 地址,而不是 Anywhere。
您可以在 UFW Essentials 中找到更多用于限制对服务的访问的高级防火墙设置:通用防火墙规则和命令。
即使端口已打开,MongoDB 目前仅在本地地址 127.0.0.1
上侦听。要允许远程连接,请将服务器的可公开路由的 IP 地址添加到 mongod.conf
文件中。
在编辑器中打开 MongoDB 配置文件:
- sudo nano /etc/mongodb.conf
将服务器的 IP 地址添加到 bindIP
值:
[label ]
...
logappend=true
bind_ip = 127.0.0.1,your_server_ip
#port = 27017
...
请务必在现有 IP 地址和您添加的 IP 地址之间放置一个逗号。
保存文件,退出编辑器,然后重启 MongoDB:
- sudo systemctl restart mongodb
MongoDB 现在正在侦听远程连接,但任何人都可以访问它。按照如何在 Ubuntu 16.04 上安装和保护 MongoDB 的第 2 部分添加管理用户并进一步锁定。
结论
您可以在 MongoDB 文档中找到有关如何配置和使用 MongoDB 的更深入的教程,这也是关于 MongoDB 提供的可能性的重要资源。