在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 提供的可能性的重要资源。

相关推荐
pk_xz1234561 小时前
Shell 脚本中变量和字符串的入门介绍
linux·运维·服务器
小珑也要变强1 小时前
Linux之sed命令详解
linux·运维·服务器
Lary_Rock3 小时前
RK3576 LINUX RKNN SDK 测试
linux·运维·服务器
云飞云共享云桌面5 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
Peter_chq5 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
一坨阿亮6 小时前
Linux 使用中的问题
linux·运维
dsywws7 小时前
Linux学习笔记之vim入门
linux·笔记·学习
幺零九零零8 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
小林熬夜学编程9 小时前
【Linux系统编程】第四十一弹---线程深度解析:从地址空间到多线程实践
linux·c语言·开发语言·c++·算法
程思扬10 小时前
为什么Uptime+Kuma本地部署与远程使用是网站监控新选择?
linux·服务器·网络·经验分享·后端·网络协议·1024程序员节