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

笔记:

MongoDB Atlas

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

概述

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

MongoDB 版本

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

安装方法

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

➤有关说明,请参阅使用 yum 包管理器安装 MongoDB

注意事项

MongoDB shell,mongosh

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

平台支持

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 / AlmaLinux上的 MongoDB 7.0 社区版 还支持特定平台上的ARM64架构。

有关详细信息,请参阅平台支持

[ 1 ] RHEL / CentOS / Oracle / Rocky / AlmaLinux上的 MongoDB 7.0 社区版 还支持特定平台上的ARM64架构。
[ 2 ] 针对 RHEL 版本 8.0+ 发布的 MongoDB 本地产品与 Rocky Linux 版本 8.0+ 和 AlmaLinux 版本 8.0+ 兼容并受支持,具体取决于这些发行版履行其提供完全 RHEL 兼容性的义务。

制作说明

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

安装 MongoDB 社区版

先决条件

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

sudo yum install libcurl openssl xz-libs

程序

按照以下步骤从.tgz.

下载压缩包。

安装所需的先决条件包后,从以下链接下载 MongoDB社区tar包: tgz

MongoDB 下载中心

  1. 版本下拉列表中,选择要下载的 MongoDB 版本。
  2. 平台下拉列表中,选择您的操作系统版本和体系结构。
  3. 下拉列表中,选择tgz
  4. 单击下载

从下载的存档中提取文件。

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

tar -zxvf mongodb-linux-*-7.0.tgz

PATH确保二进制文件位于环境变量中列出的目录中。

MongoDB 二进制文件位于tar包 的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/
    

安装 MongoDB Shell ( mongosh)。

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

mongosh从您需要 的版本下载包MongoDB 下载中心并解压缩包。

运行 MongoDB 社区版

先决条件

限制

大多数类 Unix 操作系统限制进程可能使用的系统资源。这些限制可能会对 MongoDB 操作产生负面影响,应该进行调整。有关为您的平台推荐的设置,请参阅UNIXulimit设置。

笔记

从 MongoDB 4.4 开始,如果打开文件数的ulimit值小于64000 ,则会生成启动错误 。

目录路径

使用默认目录

默认情况下,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 进程的用户,则必须 授予新用户访问这些目录的权限。

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

配置 SELinux

警告

配置不当的 SELinux 策略可能不安全或可能使您的mongod实例停止工作。

如果 SELinux 处于enforcing模式,您必须为 MongoDB 自定义 SELinux 策略以

  • 允许访问cgroup
  • 允许访问netstat
允许访问cgroup

当前的 SELinux 策略不允许 MongoDB 进程访问/sys/fs/cgroup,这是确定系统上可用内存所必需的。如果您打算在 enforcing模式下运行 SELinux,则需要对您的 SELinux 策略进行以下调整:

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

    sudo yum install checkpolicy
    
  1. 创建自定义策略文件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
    
  2. 创建后,通过运行以下三个命令编译并加载自定义策略模块:

    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.

允许访问netstatFTDC

当前的 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
    
使用自定义 MongoDB 目录路径
  1. 更新 SELinux 策略以允许mongod服务使用新目录:

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

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

    • mongod_var_lib_t对于数据目录
  2. mongod_log_t对于日志文件目录

    • mongod_var_run_t对于pid文件目录

      笔记

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

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

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

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

  • mongod_var_lib_t对于数据目录
  • mongod_log_t对于日志目录
  • mongod_var_run_t对于pid文件目录
  1. 将更新的 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'
    

使用自定义 MongoDB 端口

sudo semanage port -a -t mongod_port_t -p tcp <portnumber>

重要的:

除了上述内容之外,如果 SELinux 处于enforcing模式下,您还需要针对以下每种情况进一步自定义 SELinux 策略:

程序

按照以下步骤在您的系统上运行 MongoDB Community Edition。这些说明假定您使用的是默认设置。

创建数据和日志目录。

创建 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

运行 MongoDB。

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

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

有关命令行选项--dbpath和的详细信息--logpath,请参阅 选项。

验证 MongoDB 是否已成功启动。

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

[initandlisten] waiting for connections on port 27017

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

开始使用 MongoDB。

开始一个mongosh与 .在同一台主机上的会话 mongod。你可以跑mongosh 没有任何命令行选项来连接到 mongod在默认端口 27017 上运行的本地主机上。

mongosh

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

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

附加信息

默认绑定本地主机

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

该值可以配置为:

  • 在 MongoDB 配置文件中使用bindIp, 或
  • 通过命令行参数--bind_ip

警告

在绑定到非本地主机(例如可公开访问的)IP 地址之前,请确保您已保护集群免受未经授权的访问。有关安全建议的完整列表,请参阅 安全清单。至少,考虑 启用身份验证强化网络基础设施。

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

原文链接 -https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat-tarball/

译者:韩鹏帅

Copyright © 上海锦木信息技术有限公司 all right reserved,powered by Gitbook文件修订时间: 2023-09-01 17:10:26

results matching ""

    No results matching ""