Docs 菜单
Docs 主页
/
MongoDB Manual
/ / / / /

使用 .tgz 在 Red Hat 或 CentOS 上安装 MongoDB Community EditionTarball

在此页面上

  • Overview
  • Considerations
  • 安装 MongoDB Community Edition
  • 运行 MongoDB Community Edition
  • 更多信息

注意

MongoDB Atlas

MongoDB Atlas 是在云中托管的 MongoDB 服务选项,无需安装开销,并提供免费套餐,可以立即开始使用。

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

本教程安装的是 MongoDB 7.0 Community Edition。想要安装不同版本的 MongoDB Community Edition,请移步本页面左上角的版本下拉菜单,选择该版本对应的文档进行参照。

虽然可按本文档所述方法通过下载的 .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 Community Edition 还支持部分平台上的 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 Community Edition .tgz Tarball 所需的依赖项:

sudo yum install libcurl openssl xz-libs

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

1

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

MongoDB 下载中心

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

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

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

  4. 单击 Download(连接)。

2

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

tar -zxvf mongodb-linux-*-7.0.14.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 cgroup_t;
    type configfs_t;
    type file_type;
    type mongod_t;
    type proc_net_t;
    type sysctl_fs_t;
    type var_lib_nfs_t;
    class dir { search getattr };
    class file { getattr open read };
    }
    #============= mongod_t ==============
    allow mongod_t cgroup_t:dir { search getattr } ;
    allow mongod_t cgroup_t:file { getattr open read };
    allow mongod_t configfs_t:dir getattr;
    allow mongod_t file_type:dir { getattr search };
    allow mongod_t file_type:file getattr;
    allow mongod_t proc_net_t:file { open read };
    allow mongod_t sysctl_fs_t:dir search;
    allow mongod_t var_lib_nfs_t:dir search;
    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 Community 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

在与 mongod 相同的主机上启动 mongosh 会话。您可以在不使用任何命令行选项的情况下运行 mongosh,从而连接在本地主机上运行且默认端口号为 27017 的 mongod

mongosh

如需进一步了解使用 mongosh 进行连接(例如连接在其他主机和/或端口上运行的 mongod 实例),请参阅 mongosh 文档。

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

By default, MongoDB launches with bindIp set to 127.0.0.1, which binds to the localhost network interface. This means that the mongod can only accept connections from clients that are running on the same machine. Remote clients will not be able to connect to the mongod, and the mongod will not be able to initialize a replica set unless this value is set to a valid network interface which is accessible from the remote clients.

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

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

  • 通过命令行参数 --bind_ip

警告

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

有关配置bindIp的详细信息,请参阅自托管部署中的IP绑定。

后退

在 Red Hat 上安装