使用 .tgz Tarball 在 Red Hat 或 CentOS 上安装 MongoDB 企业 版
笔记:
MongoDB Atlas
MongoDB Atlas 是云中托管的 MongoDB 服务选项,无需安装开销,并提供免费套餐以供入门。
概述
使用本教程使用下载的.tgz
tarball 在 Red Hat Enterprise Linux、CentOS Linux 或 Oracle Linux 1上手动安装 MongoDB 7.0企业版。
MongoDB 企业版 在选定的平台上可用,并包含对与安全和监视相关的多个功能的支持。
MongoDB 版本
本教程安装 MongoDB 7.0企业 版。要安装不同版本的 MongoDB Enterprise ,请使用此页面左上角的版本下拉菜单选择该版本的文档。
安装方法
虽然 MongoDB 可以通过下载的.tgz
tarball 手动安装,如本文档所述,但建议尽可能使用系统上的 yum
包管理器来安装 MongoDB。使用包管理器会自动安装所有需要的依赖项,提供一个示例mongod.conf
文件来帮助您入门,并简化未来的升级和维护任务。
➤有关说明,请参阅使用 yum 包管理器安装 MongoDB 。
注意事项
MongoDB shell,mongosh
使用.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 兼容内核 (RHCK) 的 Oracle Linux。MongoDB 不支持Unbreakable Enterprise Kernel (UEK)。 |
---|---|
[ 2 ] | 针对 RHEL 版本 8.0+ 发布的 MongoDB 本地产品与 Rocky Linux 版本 8.0+ 和 AlmaLinux 版本 8.0+ 兼容并受支持,具体取决于这些发行版履行其提供完全 RHEL 兼容性的义务。 |
---|---|
制作说明
在生产环境中部署 MongoDB 之前,请考虑 生产说明文档,其中提供了生产 MongoDB 部署的性能注意事项和配置建议。
安装 MongoDB 企业版
先决条件
使用以下命令安装 MongoDB Enterprise .tgz
tarball所需的依赖项:
RHEL / CentOS 9 RHEL / CentOS 8 RHEL / CentOS 7 RHEL / CentOS 6
sudo yum install cyrus-sasl cyrus-sasl-gssapi cyrus-sasl-plain krb5-libs libcurl openldap openssl xz-libs
过程
按照以下步骤从 .tgz 手动安装 MongoDB 企业版。
1、下载压缩包。
安装所需的 先决条件包后,从以下链接下载 MongoDB Enterprise tgz
tarball:
- 在版本下拉列表中,选择要下载的 MongoDB 版本。
- 在平台下拉列表中,选择您的操作系统版本和体系结构。
- 在包下拉列表中,选择tgz。
- 单击下载。
2、从下载的存档中提取文件。
例如,从系统 shell 中,您可以使用以下tar
命令提取:
tar -zxvf mongodb-linux-*-7.0.tgz
3、PATH
确保二进制文件位于环境变量中列出的目录中。
MongoDB 二进制文件位于bin/
tarball 的目录中。您可以:
将二进制文件复制到变量中列出的目录中
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、安装 MongoDB Shell ( mongosh
)。
安装 mongosh
然后使用 MongoDB Shell 连接到您的部署。
mongosh
从您需要 的版本下载包MongoDB 下载中心并解压缩包。
运行 MongoDB 企业版
先决条件
限制
大多数类 Unix 操作系统限制进程可能使用的系统资源。这些限制可能会对 MongoDB 操作产生负面影响,应该进行调整。有关为您的平台推荐的设置,请参阅UNIXulimit
设置。
笔记
ulimit
从 MongoDB 4.4 开始,如果打开文件数的值小于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
使用非默认目录
要使用默认目录以外的数据目录和/或日志目录:
创建一个或多个新目录。
编辑配置文件
/etc/mongod.conf
并相应修改以下字段:storage.dbPath
指定新的数据目录路径(例如/some/data/directory
)systemLog.path
指定新的日志文件路径(例如/some/log/directory/mongod.log
)
确保运行 MongoDB 的用户有权访问一个或多个目录:
sudo chown -R mongod:mongod <directory>
如果更改运行 MongoDB 进程的用户,则必须 授予新用户访问这些目录的权限。
如果强制执行,请配置 SELinux。请参阅配置 SELinux 。
配置 SELinux
警告
配置不当的 SELinux 策略可能不安全或可能使您的
mongod
实例停止工作。如果 SELinux 处于
enforcing
模式,您必须为 MongoDB 自定义 SELinux 策略以
- 允许访问
cgroup
- 允许访问
netstat
允许访问cgroup
当前的 SELinux 策略不允许 MongoDB 进程访问/sys/fs/cgroup
,这是确定系统上可用内存所必需的。如果您打算在 enforcing
模式下运行 SELinux,则需要对您的 SELinux 策略进行以下调整:
确保您的系统已
checkpolicy
安装软件包:sudo yum install checkpolicy
创建自定义策略文件
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
创建后,通过运行以下三个命令编译并加载自定义策略模块:
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
.
允许访问netstat
FTDC
当前的 SELinux 策略不允许 MongoDB 进程打开和读取/proc/net/netstat
,这是 全时诊断数据捕获 (FTDC)所必需的。如果您打算在 enforcing
模式下运行 SELinux,则需要对您的 SELinux 策略进行以下调整:
确保您的系统已
checkpolicy
安装软件包:sudo yum install checkpolicy
创建自定义策略文件
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
创建后,通过运行以下三个命令编译并加载自定义策略模块:
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 目录路径
更新 SELinux 策略以允许
mongod
服务使用新目录:sudo semanage fcontext -a -t <type> </some/MongoDB/directory.*>
根据需要指定以下类型之一:
mongod_var_lib_t
对于数据目录
mongod_log_t
对于日志文件目录mongod_var_run_t
对于pid文件目录
请务必.*
在目录末尾包含 。
更新新目录的 SELinux 用户策略:
sudo chcon -Rv -u system_u -t <type> </some/MongoDB/directory>
根据需要指定以下类型之一:
mongod_var_lib_t
对于数据目录mongod_log_t
对于日志目录mongod_var_run_t
对于pid文件目录
将更新的 SELinux 策略应用于目录:
sudo restorecon -R -v </some/MongoDB/directory>
例如:
TIP
请务必在操作.*
目录的末尾包含 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>
IMPORTANT
除了上述之外,如果 SELinux 处于enforcing
模式中,您还需要针对以下每种情况进一步自定义您的 SELinux 策略:
- 您正在使用自定义目录路径而不是对以下任意组合使用默认路径:
- 您正在使用自定义端口而不是使用默认的 MongoDB 端口。
- 如果您对 MongoDB 安装进行了其他修改。
程序
按照以下步骤在您的系统上运行 MongoDB企业版。这些说明假定您使用的是默认设置。
创建数据和日志目录。
创建 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
在不同主机和/或端口上运行的实例,请参阅 mongosh文档。
为了帮助您开始使用 MongoDB,MongoDB 提供了各种驱动程序版本的入门指南。有关驱动程序文档,请参阅开始使用 MongoDB 进行开发。
附加信息
默认绑定本地主机
默认情况下,MongoDB 启动时bindIp
设置为 127.0.0.1
,绑定到本地主机网络接口。这意味着mongod
只能接受来自运行在同一台机器上的客户端的连接。远程客户端将无法连接到mongod
,并且mongod
将无法初始化副本集,除非此值设置为有效的网络接口。
该值可以配置为:
WARNING
在绑定到非本地主机(例如可公开访问的)IP 地址之前,请确保您已保护集群免受未经授权的访问。有关安全建议的完整列表,请参阅 安全清单。至少,考虑 启用身份验证和 强化网络基础设施。
← 在 Red Hat 或 CentOS 上安装 MongoDB 企业版在 Ubuntu 上安装 MongoDB 企业版 →
原文链接 -https://docs.mongodb.com/manual/tutorial/install-mongodb-enterprise-on-red-hat-tarball/
译者:陆文龙