在Ubuntu 20.04中从默认的APT软件库安装MongoDB

520 阅读6分钟

简介

MongoDB是一个免费的开源NoSQL文档数据库,经常用于现代网络应用。

在本教程模块中,我们将安装MongoDB,管理其服务,并启用远程访问选项。

请注意。在写这篇文章的时候,这个教程模块安装的是MongoDB3.6版本,默认情况下,Ubuntu软件库有这个版本。然而,我们通常建议安装最新版本的MongoDB来代替。在写这篇文章时,这是4.4版。如果你想安装最新版本的MongoDB,我们建议按照本指南中的说明,从源头上在Ubuntu 20.04中安装MongoDB

先决条件

你将需要以下东西来执行这个教程模块。

第1步 - 安装MongoDB

MongoDB包含在Ubuntu官方软件包库中,这意味着我们可以使用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服务器将无法从互联网上访问。

如果你打算只在本地使用MongoDB服务器,并在同一服务器上运行应用程序,建议保留这一安全设置。然而,如果你希望能够从互联网连接到MongoDB服务器,你需要通过添加适当的UFW规则来允许入站连接。

要允许从任何地方通过默认端口27017 访问MongoDB,请使用命令 sudo ufw allow 27017.然而,通过互联网启用默认设置对MongoDB服务器的访问将使任何人都可以访问数据库服务器及其内容。

在大多数情况下,你应该只允许从某些受信任的地方访问MongoDB,例如另一个应用程序托管服务器。为了只允许来自另一个受信任的服务器的默认MongoDB端口访问,你可以在ufw 命令中指定远程服务器的IP地址。这样,连接将被明确地只允许用于该机器。

sudo ufw allow from trusted_server_ip/32 to any port 27017

你可以通过使用ufw ,检查改变防火墙设置。

sudo ufw status

输出结果应该显示,通往端口27017 的流量被允许。如果你选择只允许一个IP地址连接到MongoDB服务器,那么在这个命令输出的列表中应该列出这个地址而不是Anywhere

OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
27017                      ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
27017 (v6)                 ALLOW       Anywhere (v6)

关于更多限制服务访问的防火墙设置,请参见《UFW基础知识:常用防火墙规则和命令》。

虽然端口是开放的,但MongoDB仍将只监听本地地址127.0.0.1 。为了允许远程连接,将你的服务器的公共可路由IP地址添加到mongodb.conf

在你喜欢的文本编辑器中打开MongoDB的配置文件。本例中的命令使用nano

sudo nano /etc/mongodb.conf

将你的MongoDB服务器的IP地址添加到blindIP 。请确保在已经写好的IP地址和你添加的地址之间加一个逗号。

/etc/mongodb.conf

...
logappend=true

bind_ip = 127.0.0.1,your_server_ip
#port = 27017

...

保存文件并退出编辑器。如果你用nano 来编辑文件,点击CTRL + XY ,然后点击ENTER

然后重新启动MongoDB服务。

sudo systemctl restart mongodb

MongoDB现在正在监听远程连接,但它对所有人都是可访问的。按照《在Ubuntu 20.04中安装和保护MongoDB》指南,添加一个管理用户和其他限制。

总结

关于如何设置和使用MongoDB的更详细的教程可以在以下DigitalOcean社区文章中找到。MongoDB的官方文档也包含了很多关于MongoDB提供的功能的信息。