文档菜单
文档首页
/
MongoDB 手册
/ / / / /

使用 .tgz Tarball 在 Red Hat 或 CentOS 上安装 MongoDB 企业版

本页内容

  • 概述
  • 注意事项
  • 安装 MongoDB 企业版
  • 运行 MongoDB 企业版
  • 更多信息

使用本教程手动安装MongoDB 8.0企业版在Red Hat Enterprise Linux、CentOS Linux或Oracle Linux版本上使用下载的.tgz 归档文件。

MongoDB企业版 可在选定平台上使用,并包含与安全性和监控相关的多个功能。

本教程安装MongoDB 8.0版本。企业版要安装不同版本的MongoDB企业版,请使用页面左上角的版本下拉菜单选择该版本的文档。

虽然可以像本文档中所述那样通过下载的 .tgz 归档文件手动安装MongoDB,但如果可能,建议使用系统上的 yum 软件包管理器安装MongoDB。使用软件包管理器会自动安装所有所需依赖项,提供示例 mongod.conf 文件以帮助您开始,并简化未来的升级和维护任务。

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

当您使用 .tgz 软件包安装服务器时,需要按照 mongosh 安装说明 分别下载和安装 mongosh

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

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

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

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

MongoDB 8.0 企业版在 RHEL / CentOS / Oracle / Rocky / Alma Linux 上也支持在某些平台上 ARM64 架构。

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

[1](1, 2) MongoDB 仅支持运行 Red Hat 兼容内核 (RHCK) 的 Oracle Linux。MongoDB 不支持 Unbreakable Enterprise Kernel (UEK)。
[2] MongoDB 在 RHEL 8.0+ 版本上发布的本地产品与 Rocky Linux 8.0+ 和 AlmaLinux 8.0+ 兼容,并且在这些发行版满足其提供完整 RHEL 兼容性的义务后得到支持。

在生产环境中部署 MongoDB 之前,请考虑自托管部署的生产注意事项文档,该文档提供了生产 MongoDB 部署的性能考虑和建议配置。

使用以下命令安装 MongoDB 所需的依赖项企业版 .tgz 压缩包

sudo yum install cyrus-sasl cyrus-sasl-gssapi cyrus-sasl-plain krb5-libs libcurl openldap openssl xz-libs
sudo yum install cyrus-sasl cyrus-sasl-gssapi cyrus-sasl-plain krb5-libs libcurl openldap openssl xz-libs
sudo yum install cyrus-sasl cyrus-sasl-gssapi cyrus-sasl-plain krb5-libs libcurl openldap openssl xz-libs

按照以下步骤手动安装MongoDB企业版.tgz 版本。

1

安装所需的先决软件包后,下载MongoDB企业版 tgz 软件包。

从以下链接

  1. 版本 下拉菜单中,选择要下载的MongoDB版本。

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

  3. 软件包 下拉菜单中,选择 tgz

  4. 点击 下载

2

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

tar -zxvf mongodb-linux-*-8.0.0.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:mongodb /var/lib/mongo
sudo chown -R mongod:mongodb /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 用于进程ID文件目录

    注意

    确保在目录末尾包含 .*

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

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

    根据需要指定以下类型之一

    • mongod_var_lib_t 用于数据目录

    • mongod_log_t 用于日志目录

    • mongod_var_run_t 用于进程ID文件目录

  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企业版系统上的版本。这些说明假定您正在使用默认设置。

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命令行选项的详细信息,请参阅--dbpath--logpath,请参阅选项。

3

通过检查日志文件/var/log/mongodb/mongod.log中的以下行来验证MongoDB是否成功启动

[initandlisten] waiting for connections on port 27017

在过程输出中,您可能会看到非关键警告。只要您看到上面的日志行,就可以在MongoDB的初始评估过程中安全地忽略这些警告。

4

在运行mongod的同一台主机上启动一个mongosh会话。您可以通过不使用任何命令行选项来连接到运行在您本地主机上的默认端口27017的mongod

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 上安装