如何在Debian9上安装MongoDB

来自菜鸟教程
跳转至:导航、​搜索

介绍

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

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

先决条件

要学习本教程,您需要按照 初始服务器设置教程 设置一台 Debian 9 服务器,包括启用 sudo 的非 root 用户和防火墙。

第 1 步 — 安装 MongoDB

Debian 9 的官方软件包存储库包括一个稍微过时的 MongoDB 版本,这意味着我们将从官方 MongoDB 存储库安装。

首先,我们需要使用 apt-key add 添加 MongoDB 签名密钥。 在执行此操作之前,我们需要确保已安装 curl 命令:

sudo apt install curl

接下来我们下载密钥并将其传递给 apt-key add

curl https://www.mongodb.org/static/pgp/server-4.0.asc | sudo apt-key add -

接下来,我们将为 MongoDB 存储库创建一个源列表,以便 apt 知道从哪里下载。 首先在文本编辑器中打开源列表文件:

sudo nano /etc/apt/sources.list.d/mongodb-org-4.0.list

这将打开一个新的空白文件。 粘贴以下内容:

/etc/apt/sources.list.d/mongodb-org-4.0.list

deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main

保存并关闭文件,然后更新您的包缓存:

sudo apt update

安装mongodb-org包来安装服务器和一些配套工具:

sudo apt-get install mongodb-org

最后,启用并启动 mongod 服务,让您的 MongoDB 数据库运行:

sudo systemctl enable mongod
sudo systemctl start mongod

我们现在已经安装并启动了最新的稳定版本的 MongoDB,以及用于 MongoDB 服务器的有用管理工具。

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

第 2 步 — 检查服务和数据库

我们在上一步中启动了 MongoDB 服务,现在让我们验证它是否已启动并且数据库是否正常工作。

首先,检查服务的状态:

sudo systemctl status mongod

你会看到这个输出:

Output● mongod.service - MongoDB Database Server
   Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2018-09-05 16:59:56 UTC; 3s ago
     Docs: https://docs.mongodb.org/manual
 Main PID: 4321 (mongod)
    Tasks: 26
   CGroup: /system.slice/mongod.service
           └─4321 /usr/bin/mongod --config /etc/mongod.conf

根据 systemd,MongoDB 服务器已启动并正在运行。

我们可以通过实际连接到数据库服务器并执行诊断命令来进一步验证这一点

执行这个命令:

mongo --eval 'db.runCommand({ connectionStatus: 1 })'

这将输出当前数据库版本、服务器地址和端口,以及 status 命令的输出:

OutputMongoDB shell version v4.0.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 4.0.2
{
    "authInfo" : {
        "authenticatedUsers" : [ ],
        "authenticatedUserRoles" : [ ]
    },
    "ok" : 1
}

响应中 ok 字段的值 1 表示服务器工作正常。

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

第 3 步 — 管理 MongoDB 服务

MongoDB 作为 systemd 服务安装,这意味着您可以使用标准的 systemd 命令以及 Ubuntu 中的所有其他系统服务来管理它。

要验证服务的状态,请键入:

sudo systemctl status mongod

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

sudo systemctl stop mongod

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

sudo systemctl start mongod

您还可以使用单个命令重新启动服务器:

sudo systemctl restart mongod

在上一步中,我们启用了 MongoDB 与服务器一起自动启动。 如果要禁用自动启动,请键入:

sudo systemctl disable mongod

再次启用它同样容易。 为此,请使用:

sudo systemctl enable mongod

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

第 4 步 — 调整防火墙(可选)

假设您已按照 初始服务器设置教程 说明启用服务器上的防火墙,则 MongoDB 服务器将无法从 Internet 访问。

如果您打算仅在本地将 MongoDB 服务器与在同一服务器上运行的应用程序一起使用,则这是推荐且安全的设置。 但是,如果您希望能够从 Internet 连接到 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: Common Firewall Rules and Commands 中找到更多高级防火墙设置来限制对服务的访问。

即使端口是开放的,MongoDB 目前也只监听本地地址 127.0.0.1。 要允许远程连接,请将服务器的可公开路由的 IP 地址添加到 mongod.conf 文件中。

在编辑器中打开 MongoDB 配置文件:

sudo nano /etc/mongod.conf

将服务器的 IP 地址添加到 bindIP 值:

/etc/mongod.conf

. . .
# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1,your_server_ip
. . .

请务必在现有 IP 地址和您添加的 IP 地址之间放置一个逗号。

保存文件,退出编辑器,然后重启 MongoDB:

sudo systemctl restart mongod

MongoDB 现在正在侦听远程连接,但任何人都可以访问它。 按照 如何在 Ubuntu 16.04 上安装和保护 MongoDB 的第 2 部分添加管理用户并进一步锁定。

结论

您可以在 这些 DigitalOcean 社区文章 中找到有关如何配置和使用 MongoDB 的更深入的教程。 官方的 MongoDB 文档 也是关于 MongoDB 提供的可能性的一个很好的资源。