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

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站

介绍

MongoDB,也被称为 Mongo,是一种常用于现代 Web 应用程序的免费开源 NoSQL 文档数据库。

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

先决条件

要按照本教程操作,您需要:

  • 一个 Ubuntu 18.04 服务器,按照此初始服务器设置教程进行设置,包括一个 sudo 非根用户和防火墙。

步骤 1 --- 安装 MongoDB

Ubuntu 的官方软件包存储库中包含 MongoDB,这意味着我们可以使用 apt 安装必要的软件包。如介绍中所述,从默认存储库中可用的版本并非最新版本。要安装最新版本的 Mongo,请按照此教程操作。

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

command 复制代码
sudo apt update

现在安装 MongoDB 软件包本身:

command 复制代码
sudo apt install -y mongodb

此命令安装了几个包,其中包含了一个稳定版本的 MongoDB,以及 MongoDB 服务器的有用管理工具。数据库服务器在安装后会自动启动。

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

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

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

首先,检查服务的状态:

command 复制代码
sudo systemctl status mongodb

您将看到以下输出:

● mongodb.service - An object/document-oriented database
   Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2018-05-26 07:48:04 UTC; 2min 17s ago
     Docs: man:mongod(1)
 Main PID: 2312 (mongod)
    Tasks: 23 (limit: 1153)
   CGroup: /system.slice/mongodb.service
           └─2312 /usr/bin/mongod --unixSocketPrefix=/run/mongodb --config /etc/mongodb.conf

根据 systemd,MongoDB 服务器正在运行。

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

执行此命令:

command 复制代码
mongo --eval 'db.runCommand({ connectionStatus: 1 })'

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

MongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.3
{
        "authInfo" : {
                "authenticatedUsers" : [ ],
                "authenticatedUserRoles" : [ ]
        },
        "ok" : 1
}

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

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

步骤 3 --- 管理 MongoDB 服务

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

要验证服务的状态,输入:

command 复制代码
sudo systemctl status mongodb

您可以随时通过输入以下命令来停止服务器:

command 复制代码
sudo systemctl stop mongodb

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

command 复制代码
sudo systemctl start mongodb

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

command 复制代码
sudo systemctl restart mongodb

默认情况下,MongoDB 配置为随服务器自动启动。如果您希望禁用自动启动,输入:

command 复制代码
sudo systemctl disable mongodb

重新启用它同样简单。要执行此操作,请使用:

command 复制代码
sudo systemctl enable mongodb

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

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

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

如果您打算仅在同一服务器上运行的应用程序中本地使用 MongoDB 服务器,则这是推荐的安全设置。但是,如果您希望能够从互联网连接到 MongoDB 服务器,则必须在 ufw 中允许传入连接。

要允许从任何地方访问 MongoDB 的默认端口 27017,您可以使用 sudo ufw allow 27017。但是,在默认安装中启用互联网访问 MongoDB 服务器将使任何人都能无限制地访问数据库服务器及其数据。

在大多数情况下,应该只允许从某些受信任的位置访问 MongoDB,例如另一台托管应用程序的服务器。为了完成这个任务,您可以在允许连接的同时指定另一台服务器的 IP 地址:

command 复制代码
sudo ufw allow from your_other_server_ip/32 to any port 27017  

您可以使用 ufw 验证防火墙设置的更改:

command 复制代码
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 配置文件:

command 复制代码
sudo nano /etc/mongodb.conf

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

...
logappend=true

bind_ip = 127.0.0.1,your_server_ip

#端口 = 27017

...

确保在现有的 IP 地址和你添加的 IP 地址之间加上逗号。

保存文件,退出编辑器,并重新启动 MongoDB:

```command
sudo systemctl restart mongodb

MongoDB 现在正在监听远程连接,但任何人都可以访问它。请按照《在 Ubuntu 16.04 上安装和保护 MongoDB 的第二部分》中的步骤添加一个管理用户并进一步加固安全性。

结论

您可以在 DigitalOcean 社区文章中找到更深入的教程,了解如何配置和使用 MongoDB。官方 MongoDB 文档也是了解 MongoDB 提供的可能性的重要资源。

相关推荐
日记跟新中42 分钟前
Ubuntu20.04 修改root密码
linux·运维·服务器
码农君莫笑1 小时前
信管通低代码信息管理系统应用平台
linux·数据库·windows·低代码·c#·.net·visual studio
明 庭1 小时前
Ubuntu下通过Docker部署NGINX服务器
服务器·ubuntu·docker
BUG 4041 小时前
Linux——Shell
linux·运维·服务器
猿小蔡-Cool1 小时前
ubuntu20.04安装imwheel实现鼠标滚轮调速
ubuntu
过过过呀Glik1 小时前
在 Ubuntu 上安装 MySQL 的详细指南
mysql·ubuntu
大霞上仙1 小时前
Linux 多命令执行
linux·运维·服务器
晨欣1 小时前
Kibana:LINUX_X86_64 和 DEB_X86_64两种可选下载方式的区别
linux·运维·服务器
AI青年志2 小时前
【服务器】linux服务器管理员查看用户使用内存情况
linux·运维·服务器
dessler2 小时前
Docker-run命令详细讲解
linux·运维·后端·docker