介绍
MongoDB是现代 Web 应用程序中常用的免费开源 NoSQL 文档数据库。
在本教程中,您将安装 MongoDB,管理其服务,并可选择启用远程访问。
注意:在撰写本文时,本教程安装了 MongoDB 3.6版,这是默认 Ubuntu 存储库中可用的版本。但是,我们通常建议安装最新版本的 MongoDB —在撰写本文时为4.4版— 相反。如果您想安装最新版本的 MongoDB,我们鼓励您遵循本指南,了解如何从源代码在 Ubuntu 20.04 上安装 MongoDB。
先决条件
要学习本教程,您需要:
- 按照此初始服务器设置教程设置了一台 Ubuntu 20.04 服务器,包括具有管理权限的非 root 用户和使用 UFW 配置的防火墙。
第 1 步 – 安装 MongoDB
Ubuntu 的官方软件包存储库包括 MongoDB,这意味着我们可以使用apt
. 正如介绍中提到的,默认存储库中可用的版本不是最新的。要安装最新版本的 Mongo,请按照本教程进行操作。
首先,更新包列表以获得最新版本的存储库列表:
- sudo apt update
现在安装 MongoDB 包本身:
- sudo apt install mongodb
此命令将提示您确认是否要安装mongodb
软件包及其依赖项。为此,请按Y
,然后按ENTER
。
此命令会安装多个包含稳定版本 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 Thu 2020-10-08 14:23:22 UTC; 49s ago
Docs: man:mongod(1)
Main PID: 2790 (mongod)
Tasks: 23 (limit: 2344)
Memory: 42.2M
CGroup: /system.slice/mongodb.service
└─2790 /usr/bin/mongod --unixSocketPrefix=/run/mongodb --config /etc/mongodb.conf
根据此输出,MongoDB 服务器已启动并正在运行。
我们可以通过实际连接到数据库服务器并执行以下诊断命令来进一步验证这一点。这将输出当前数据库版本、服务器地址和端口以及状态命令的输出:
- mongo --eval 'db.runCommand({ connectionStatus: 1 })'
OutputMongoDB shell version v3.6.8
connecting to: mongodb://127.0.0.1:27017
Implicit session: session { "id" : UUID("e3c1f2a1-a426-4366-b5f8-c8b8e7813135") }
MongoDB server version: 3.6.8
{
"authInfo" : {
"authenticatedUsers" : [ ],
"authenticatedUserRoles" : [ ]
},
"ok" : 1
}
的价值1
为ok
响应中的字段表示服务器是否正常工作。
接下来,我们将看看如何管理服务器实例。
第 3 步 – 管理 MongoDB 服务
步骤 1 中概述的安装过程将 MongoDB 配置为systemd
服务,这意味着您可以使用标准systemctl
命令以及 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 服务器与在同一服务器上运行的应用程序一起使用,则这是推荐且安全的设置。但是,如果您希望能够从 Internet 连接到 MongoDB 服务器,则必须通过添加 UFW 规则来允许传入连接。
要允许27017
从任何地方通过其默认端口访问 MongoDB ,您可以运行. 但是,在默认安装中启用对 MongoDB 服务器的 Internet 访问使任何人都可以不受限制地访问数据库服务器及其数据。sudo ufw allow 27017
在大多数情况下,只能从某些受信任的位置访问 MongoDB,例如托管应用程序的另一台服务器。要仅允许其他受信任服务器访问 MongoDB 的默认端口,您可以在ufw
命令中指定远程服务器的 IP 地址。这样,只有那台机器将被明确允许连接:
- sudo ufw allow from trusted_server_ip/32 to any port 27017
您可以使用以下命令验证防火墙设置的更改ufw
:
- sudo ufw status
您应该会27017
在输出中看到允许的端口流量。请注意,如果您决定只允许某个 IP 地址连接到 MongoDB 服务器,则将列出允许位置的 IP 地址,而不是Anywhere
在此命令的输出中:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
27017 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
27017 (v6) ALLOW Anywhere (v6)
您可以在UFW Essentials: Common Firewall Rules and Commands 中找到更高级的防火墙设置来限制对服务的访问。
即使端口是开放的,MongoDB 仍然只会监听本地地址127.0.0.1
。要允许远程连接,请将服务器的可公开路由的 IP 地址添加到mongodb.conf
文件中。
在首选文本编辑器中打开 MongoDB 配置文件。此示例命令使用nano
:
- sudo nano /etc/mongodb.conf
将您的 MongoDB 服务器的 IP 地址添加到该bindIP
值中。请务必在现有 IP 地址和您添加的 IP 地址之间放置一个逗号:
...
logappend=true
bind_ip = 127.0.0.1,your_server_ip
#port = 27017
...
保存文件并退出编辑器。如果您曾经nano
编辑过该文件,请按CTRL + X
、Y
、来进行编辑ENTER
。
然后,重新启动 MongoDB 服务:
- sudo systemctl restart mongodb
MongoDB 现在正在侦听远程连接,但任何人都可以访问它。按照如何在 Ubuntu 20.04 上保护 MongoDB添加管理用户并进一步锁定。
结论
您可以在这些 DigitalOcean 社区文章 中找到有关如何配置和使用 MongoDB 的更深入的教程。MongoDB官方文档也是关于 MongoDB 提供的可能性的重要资源。