如何在 Ubuntu 20.04 上从默认 APT 仓库安装 MongoDB

介绍

MongoDB是一个免费和开源的NoSQL文档数据库,通常用于现代Web应用程序。

在本教程中,您将安装MongoDB,管理其服务,并可选地启用远程访问。

<$>[注] :从本文开始,本教程安装了MongoDB的3.6版本,这是从默认Ubuntu存储库中可用的版本,但是,我们通常建议您安装MongoDB的最新版本 - 此写作时的4.4版本 - 而不是。

前提条件

要遵循本教程,您将需要:

  • 一个 Ubuntu 20.04 服务器通过以下 初始服务器设置教程设置,包括具有管理权限的非根用户和与 UFW 配置的防火墙。

步骤1:安装 MongoDB

Ubuntu 的官方包存包括 MongoDB,这意味着我们可以使用apt安装所需的包。正如介绍中提到的,从默认库存中可用的版本不是最新版本。

首先,更新包列表以获得存储库列表的最新版本:

1sudo apt update

现在安装 MongoDB 包本身:

1sudo apt install mongodb

此命令会提示您确认您想要安装mongodb包及其依赖程序,然后按Y,然后按ENTER

此命令会安装包含 MongoDB 的稳定版本的多个包,以及 MongoDB 服务器的有用的管理工具。

接下来,让我们检查服务器是否运行并正常工作。

步骤 2:检查服务和数据库

安装过程自动启动 MongoDB,但让我们验证该服务已启动,并且数据库正在工作。

首先,检查服务的状态:

1sudo systemctl status mongodb

你会看到这个输出:

 1[secondary_label Output]
 2 mongodb.service - An object/document-oriented database
 3     Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)
 4     Active: active (running) since Thu 2020-10-08 14:23:22 UTC; 49s ago
 5       Docs: man:mongod(1)
 6   Main PID: 2790 (mongod)
 7      Tasks: 23 (limit: 2344)
 8     Memory: 42.2M
 9     CGroup: /system.slice/mongodb.service
10             └─2790 /usr/bin/mongod --unixSocketPrefix=/run/mongodb --config /etc/mongodb.conf

根据此输出,MongoDB服务器正在运行。

我们可以通过实际连接到数据库服务器并执行以下诊断命令进一步验证此情况,从而输出当前数据库版本、服务器地址和端口以及状态命令的输出:

1mongo --eval 'db.runCommand({ connectionStatus: 1 })'
 1[secondary_label Output]
 2MongoDB shell version v3.6.8
 3connecting to: mongodb://127.0.0.1:27017
 4Implicit session: session { "id" : UUID("e3c1f2a1-a426-4366-b5f8-c8b8e7813135") }
 5MongoDB server version: 3.6.8
 6{
 7    "authInfo" : {
 8    	"authenticatedUsers" : [ ],
 9    	"authenticatedUserRoles" : [ ]
10    },
11    "ok" : 1
12}

响应中的OK字段的值为1,表示服务器正在正常工作。

接下来,我们将看看如何管理服务器实例。

第3步:管理MongoDB服务

步骤 1 所述的安装过程将 MongoDB 配置为systemd服务,这意味着您可以使用标准的systemctl命令与 Ubuntu 中的所有其他系统服务一起管理它。

要检查服务的状态,键入:

1sudo systemctl status mongodb

您可以随时停止服务器通过键入:

1sudo systemctl stop mongodb

要在停止服务器时启动,键入:

1sudo systemctl start mongodb

您也可以使用以下命令重新启动服务器:

1sudo systemctl restart mongodb

默认情况下,MongoDB 配置为自动启动服务器. 如果您想要禁用自动启动,请键入:

1sudo systemctl disable mongodb

您可以随时使用以下命令重新启用自动启动:

1sudo systemctl enable mongodb

接下来,让我们调整我们的MongoDB安装的防火墙设置。

步骤 4 – 调整防火墙(可选)

假設您已遵循 初始伺服器安裝教程指示,在您的伺服器上啟用防火牆,MongoDB伺服器將無法從互聯網上存取。

如果您打算只在本地使用 MongoDB 服务器,并在同一服务器上运行应用程序,这是推荐的安全设置,但是,如果您希望能够从互联网连接到您的 MongoDB 服务器,则必须通过添加 UFW 规则来允许接入连接。

要在默认端口27017上允许访问MongoDB,您可以从任何地方运行sudo ufw allow 27017

在大多数情况下,MongoDB 只能从某些受信任的位置访问,例如另一个服务器托管应用程序. 为了仅允许另一个受信任的服务器访问 MongoDB 的默认端口,您可以在ufw命令中指定远程服务器的 IP 地址。

1sudo ufw allow from trusted_server_ip/32 to any port 27017

您可以通过ufw验证防火墙设置的更改:

1sudo ufw status

请注意,如果您决定只允许某个特定 IP 地址连接到 MongoDB 服务器,则允许位置的 IP 地址将在此命令的输出中列出,而不是任何地方:

1[secondary_label Output]
2Status: active
3
4To Action From
5--                         ------      ----
6OpenSSH ALLOW Anywhere
727017 ALLOW Anywhere
8OpenSSH (v6)               ALLOW Anywhere (v6)
927017 (v6)                 ALLOW Anywhere (v6)

您可以在 UFW Essentials: Common Firewall Rules and Commands中找到更高级的防火墙设置来限制访问服务。

即使端口是开放的,MongoDB 仍然只能在本地地址127.0.0.1上收听。 若要允许远程连接,请将服务器的公开可路由 IP 地址添加到mongodb.conf文件中。

在您偏好的文本编辑器中打开 MongoDB 配置文件. 此示例命令使用 nano:

1sudo nano /etc/mongodb.conf

将您的 MongoDB 服务器的 IP 地址添加到bindIP值. 请确保在现有 IP 地址和您添加的 IP 地址之间放置一个字符串:

1[label /etc/mongodb.conf]
2...
3logappend=true
4
5bind_ip = 127.0.0.1,your_server_ip
6#port = 27017
7
8...

保存文件并离开编辑器. 如果您使用nano来编辑文件,请按CTRL + X,Y,然后按ENTER

然后,重新启动 MongoDB 服务:

1sudo systemctl restart mongodb

现在MongoDB正在听取远程连接,但任何人都可以访问它。

结论

您可以在 这些 DigitalOcean 社区文章中找到有关如何配置和使用 MongoDB 的更多深入教程。

Published At
Categories with 技术
comments powered by Disqus