Docs 菜单

Docs 主页开发应用程序MongoDB Manual

使用 .tgz Tarball 在 Red Hat 或 CentOS 上安装 MongoDB Enterprise

在此页面上

  • 概述
  • 考虑因素
  • 安装 MongoDB Enterprise 版
  • 运行 MongoDB Enterprise 版
  • 更多信息

注意

MongoDB Atlas

MongoDB Atlas是云中托管的 MongoDB 服务选项,无需安装开销,并提供免费入门套餐。

使用本教程,利用下载的 .tgz tarball,即可在 Red Hat Enterprise Linux、CentOS Linux 或 Oracle Linux [1]上手动安装 MongoDB 7.0 Enterprise 版。

MongoDB Enterprise 版可在部分平台上使用,并支持与安全和监控相关的多项功能。

本教程将安装 MongoDB 7.0 Enterprise 版。要安装其他版本的 MongoDB Enterprise,请使用此页面左上角的版本下拉菜单选择该版本的文档。

虽然可按本文档所述方法通过下载的 .tgz Tarball 手动安装 MongoDB,但可能时仍建议在您的系统上使用 yum 包管理器来安装 MongoDB。使用包管理器会自动安装所需的全部依赖项,提供 mongod.conf 示例文件来帮助您入门,并简化未来的升级和维护任务。

➤ 参阅使用 yum 软件包管理器安装 MongoDB,获取说明。

使用.tgz包安装服务器时,需要按照mongosh 安装说明单独下载并安装mongosh

MongoDB 7.0 企业版支持以下采用 x86_64 架构的 64 位 Red Hat Enterprise Linux (RHEL)、CentOS Linux、Oracle Linux [1]、Rocky Linux 和 AlmaLinux [2] 版本:

  • RHEL / CentOS Stream / Oracle / Rocky / AlmaLinux 9

  • RHEL / CentOS Stream / Oracle / Rocky / AlmaLinux 8

  • RHEL / CentOS / Oracle 7

MongoDB 仅支持这些平台的 64 位版本。

RHEL / CentOS / Oracle / Rocky / Alma Linux 上的 MongoDB 7.0 企业版还支持部分平台上的 ARM64架构。

更多信息,请参阅平台支持

[1](1, 2) MongoDB 仅支持运行 Red Hat Compatible Kernel (RHCK) 的 Oracle Linux。MongoDB 支持 Unbreakable Enterprise Kernel (UEK)。
[2] 针对 RHEL 版本 8.0+ 发布的 MongoDB 本地部署产品,与 Rocky Linux 版本 8.0+ 和 AlmaLinux 版本 8.0+ 兼容并受支持(前提是这些发行版能满足其承诺,提供完整的 RHEL 兼容性)。

在生产环境部署 MongoDB 之前,请考虑生产环境说明文档,其中提供了有关生产环境中 MongoDB 部署的性能注意事项和配置建议。

使用以下命令安装 MongoDB Enterprise .tgz tarball 所需的依赖项:

请按照以下步骤从.tgz手动安装 MongoDB Enterprise 版。

1

安装所需的必备包后,请从以下链接下载 MongoDB Enterprise tgz tarball:

MongoDB 下载中心

  1. Version 下拉列表中选择要下载的 MongoDB 版本。

  2. Platform 下拉菜单中,选择您操作系统的版本和架构。

  3. Package 下拉菜单中,选择 tgz

  4. 单击 Download(连接)。

2

例如,从系统 shell 中,您可以使用 tar 命令进行提取:

tar -zxvf mongodb-linux-*-7.0.7.tgz
3

MongoDB 二进制文件位于 tarball 的 bin/ 目录中。您可以执行以下任一操作:

  • 将二进制文件复制到 PATH 变量中列出的目录中,例如 /usr/local/bin(根据需要使用您的安装目录来更新 /path/to/the/mongodb-directory/

    sudo cp /path/to/the/mongodb-directory/bin/* /usr/local/bin/
  • 创建指向 PATH 变量中所列目录的二进制文件的符号链接,例如 /usr/local/bin(根据需要使用您的安装目录更新 /path/to/the/mongodb-directory/):

    sudo ln -s /path/to/the/mongodb-directory/bin/* /usr/local/bin/
4

安装 mongosh 然后使用 MongoDB Shell 连接到您的部署。

MongoDB 下载中心下载所需的mongosh版本的软件包并解压缩。

大多数类 Unix 操作系统都会对每个进程可以使用的系统资源进行限制。这些限制可能会对 MongoDB 操作产生负面影响,应进行适当调整。有关您平台的建议设置,请参阅 UNIX ulimit 设置

注意

如果打开文件数的ulimit值低于64000 ,则 MongoDB 会生成初创企业警告。

默认情况下,MongoDB 使用 mongod 用户帐户运行,并且使用以下默认目录:

  • /var/lib/mongo (数据目录)

  • /var/log/mongodb (日志目录)

创建 MongoDB 数据与日志目录:

sudo mkdir -p /var/lib/mongo
sudo mkdir -p /var/log/mongodb

默认情况下,MongoDB 使用 mongod 用户帐户运行。创建一个 mongod 和一个 mongodb 群组。确保 mongod 属于该群组,然后将这些目录的所有者和群组设为 mongod

sudo chown -R mongod:mongod /var/lib/mongo
sudo chown -R mongod:mongod /var/log/mongodb

要使用除默认目录外的数据目录和/或日志目录:

  1. 创建新目录。

  2. 编辑配置文件 /etc/mongod.conf 并相应修改以下字段:

    • storage.dbPath 指定新的数据目录路径(例如/some/data/directory

    • systemLog.path 以指定新的日志文件路径(例如 /some/log/directory/mongod.log

  3. 确保运行 MongoDB 的用户有权访问这些目录:

    sudo chown -R mongod:mongod <directory>

    如果更改运行 MongoDB 进程的用户,必须赋予新用户访问这些目录的权限。

  4. 如果强制执行,请配置 SELinux。请参阅配置 SELinux

警告

配置不当的 SELinux 策略可能不安全,或是可能导致 mongod 实例无法运行。

如果 SELinux 处于enforcing(强制执行)模式,则须为 MongoDB 自定义 SELinux 策略以

  • 允许访问 cgroup

  • 允许访问 netstat

当前的 SELinux 策略不允许 MongoDB 进程访问 /sys/fs/cgroup,如此才能确定系统上的可用内存。如果打算以 enforcing(强制执行)模式运行 SELinux,则需对 SELinux 策略进行以下调整:

  1. 确保您的系统已安装 checkpolicy 包:

    sudo yum install checkpolicy
  2. 创建自定义策略文件 mongodb_cgroup_memory.te

    cat > mongodb_cgroup_memory.te <<EOF
    module mongodb_cgroup_memory 1.0;
    require {
    type cgroup_t;
    type mongod_t;
    class dir search;
    class file { getattr open read };
    }
    #============= mongod_t ==============
    allow mongod_t cgroup_t:dir search;
    allow mongod_t cgroup_t:file { getattr open read };
    EOF
  3. 创建后,通过运行以下三个命令来编译并加载自定义策略模块:

    checkmodule -M -m -o mongodb_cgroup_memory.mod mongodb_cgroup_memory.te
    semodule_package -o mongodb_cgroup_memory.pp -m mongodb_cgroup_memory.mod
    sudo semodule -i mongodb_cgroup_memory.pp

现在,MongoDB 进程可在 SELinux 设为 enforcing(强制执行)的情况下访问正确的文件。

当前的 SELinux 策略不允许 MongoDB 进程打开和读取 /proc/net/netstat,如此才能进行全时诊断数据捕获 (FTDC)。如果打算在 enforcing(强制执行)模式下运行 SELinux,则需对 SELinux 策略进行以下调整:

  1. 确保您的系统已安装 checkpolicy 包:

    sudo yum install checkpolicy
  2. 创建自定义策略文件 mongodb_proc_net.te

    cat > mongodb_proc_net.te <<EOF
    module mongodb_proc_net 1.0;
    require {
    type proc_net_t;
    type mongod_t;
    class file { open read };
    }
    #============= mongod_t ==============
    allow mongod_t proc_net_t:file { open read };
    EOF
  3. 创建后,通过运行以下三个命令来编译并加载自定义策略模块:

    checkmodule -M -m -o mongodb_proc_net.mod mongodb_proc_net.te
    semodule_package -o mongodb_proc_net.pp -m mongodb_proc_net.mod
    sudo semodule -i mongodb_proc_net.pp
  1. 更新 SELinux 策略以允许 mongod 服务使用新目录:

    sudo semanage fcontext -a -t <type> </some/MongoDB/directory.*>

    按需指定以下类型之一:

    • mongod_var_lib_t 针对数据目录

    • mongod_log_t 针对日志文件目录

    • mongod_var_run_t 针对 PID 文件目录

    注意

    请务必在目录末尾包含 .*

  2. 更新新目录的 SELinux 用户策略:

    sudo chcon -Rv -u system_u -t <type> </some/MongoDB/directory>

    按需指定以下类型之一:

    • mongod_var_lib_t 针对数据目录

    • mongod_log_t 针对日志目录

    • mongod_var_run_t 针对 PID 文件目录

  3. 将更新后的 SELinux 策略应用于目录:

    sudo restorecon -R -v </some/MongoDB/directory>

例如:

提示

请务必为 semanage fcontext 操作在此目录末尾包含 .*

  • 如果使用的是非默认 MongoDB 数据路径 /mongodb/data

    sudo semanage fcontext -a -t mongod_var_lib_t '/mongodb/data.*'
    sudo chcon -Rv -u system_u -t mongod_var_lib_t '/mongodb/data'
    sudo restorecon -R -v '/mongodb/data'
  • 如果使用的是非默认 MongoDB 日志目录 /mongodb/log(即,如果日志文件路径为 /mongodb/log/mongod.log):

    sudo semanage fcontext -a -t mongod_log_t '/mongodb/log.*'
    sudo chcon -Rv -u system_u -t mongod_log_t '/mongodb/log'
    sudo restorecon -R -v '/mongodb/log'
sudo semanage port -a -t mongod_port_t -p tcp <portnumber>

重要

除上述内容之外,如果 SELinux 处于 enforcing(强制执行)模式,还需针对以下每种情况进一步自定义 SELinux 策略:

请按照以下步骤在您的系统上运行 MongoDB Enterprise Edition。参照这些操作说明的前提是您在使用默认设置。

1

创建 MongoDB 实例存储其数据的目录。例如:

sudo mkdir -p /var/lib/mongo

创建 MongoDB 实例用于存储日志的目录。例如:

sudo mkdir -p /var/log/mongodb

启动 MongoDB 进程的用户必须具有对这些目录的读取和写入权限。例如,如果你打算自己运行 MongoDB:

sudo chown `whoami` /var/lib/mongo # Or substitute another user
sudo chown `whoami` /var/log/mongodb # Or substitute another user
2

要运行 MongoDB,请在系统提示符下运行 mongod 进程。

mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork

有关命令行选项 --dbpath--logpath 的详情,请参阅选项

3

检查日志文件 /var/log/mongodb/mongod.log 中以下行的进程输出,验证 MongoDB 是否成功启动:

[initandlisten] waiting for connections on port 27017

可能会在进程输出中看到非严重警告。只要看到上述日志行,便可在 MongoDB 初次计算期间安心地忽略这些警告。

4

mongosh在与 相同的主机上启动mongod 会话。您可以运行不带任何命令行选项的mongosh mongod,以连接到使用默认端口 在本地主机上运行的27017 }。

mongosh

有关使用mongosh连接的更多信息,例如连接到在不同主机和/或端口上运行的mongod实例,请参阅mongosh 文档。

为了帮助您开始使用 MongoDB,MongoDB 提供了各种驱动程序版本的入门指南。有关驱动程序文档,请参阅开始使用 MongoDB 进行开发。

默认情况下,MongoDB 会以将 bindIp 设为 127.0.0.1 来启动,从而绑定到本地主机网络接口。这意味着 mongod 只能接受来自同一计算机上运行的客户端的连接。远程客户端无法连接到 mongod,且 mongod 无法初始化副本集,除非将此值设为可从远程客户端访问的有效网络接口。

该值可通过以下任一方式配置:

  • 在 MongoDB 配置文件中使用 bindIp,或

  • 通过命令行参数 --bind_ip

警告

将实例绑定到可公开访问的 IP 地址之前,必须保护集群免遭未经授权的访问。有关安全建议的完整列表,请参阅安全检查清单。至少应考虑强化网络基础设施启用身份验证

有关配置 bindIp 的更多信息,请参阅 IP 绑定。

← 在 Red Hat 或 CentOS 上安装 MongoDB Enterprise Edition