如何在Ubuntu20.04上从默认APT存储库安装MongoDB
介绍
MongoDB 是一个免费和开源的 NoSQL 文档数据库,常用于现代 Web 应用程序。
在本教程中,您将安装 MongoDB、管理其服务并可选择启用远程访问。
注意:在撰写本文时,本教程安装了 MongoDB 的 3.6 版本,这是默认 Ubuntu 存储库中可用的版本。 但是,我们通常建议安装最新版本的 MongoDB——撰写本文时的版本 4.4——代替。 如果您想安装最新版本的 MongoDB,我们鼓励您按照 How To Install MongoDB on Ubuntu 20.04 from source 上的指南进行操作。
先决条件
要遵循本教程,您将需要:
- 按照本 初始服务器设置教程 设置一台 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 服务器已启动并正在运行。
我们可以通过实际连接到数据库服务器并执行以下诊断命令来进一步验证这一点。 这将输出当前数据库版本、服务器地址和端口,以及 status 命令的输出:
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 }
响应中 ok
字段的值 1
表示服务器工作正常。
接下来,我们将看看如何管理服务器实例。
第 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,您可以运行 sudo ufw allow 27017
。 但是,在默认安装中启用对 MongoDB 服务器的 Internet 访问使任何人都可以不受限制地访问数据库服务器及其数据。
在大多数情况下,只能从某些受信任的位置访问 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 地址之间放置一个逗号:
/etc/mongodb.conf
... 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 提供的可能性的一个很好的资源。