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

使用 .tgz 压缩包在 Red Hat 或 CentOS 上安装 MongoDB 社区版

本页面内容

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

使用本教程手动安装 MongoDB 8.0社区版在 Red Hat Enterprise Linux、CentOS Linux 或 Oracle Linux [1] 上使用下载的.tgz 压缩包。

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

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

参见使用yum软件包管理器安装MongoDB的说明

当您使用.tgz软件包安装服务器时,需要遵循mongosh安装说明以单独下载和安装mongosh

MongoDB 8.0 社区版支持以下内容64位版本的 Red Hat Enterprise 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 / AlmaLinux 上也支持部分平台的 ARM64 架构。

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

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

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

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

sudo yum install libcurl openssl xz-libs

按照以下步骤手动安装MongoDB社区版本(从 .tgz 压缩包)。

1

安装所需的先决软件包后,从以下链接下载MongoDB社区 从以下链接下载tgz压缩包

mongodb下载中心

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

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

  3. 下拉菜单中,选择tgz

  4. 点击下载

2

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

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

MongoDB的二进制文件位于tgz压缩包的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 进程可以以 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处于强制模式,您还需要针对这些情况进一步定制SELinux策略

  • 您正在使用一个自定义目录路径,而不是使用默认路径,这可以是以下任意组合:

  • 您正在使用一个自定义端口,而不是使用默认MongoDB端口。

  • 如果您已对MongoDB安装进行了其他修改。

按照以下步骤运行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的详细信息,请参阅选项。

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 进行开发。

默认情况下,MongoDB 以 bindIp 设置为 127.0.0.1 启动,这绑定到本地主机网络接口。这意味着 mongod 只能接受运行在同一台机器上的客户端的连接。远程客户端将无法连接到 mongod,除非将此值设置为有效的网络接口,否则 mongod 将无法初始化一个副本集

此值可以通过以下方式配置

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

  • 通过命令行参数 --bind_ip

警告

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

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

返回

在 Red Hat 上安装

© . All rights reserved.