使用 .tgz 在 Red Hat 或 CentOS 上安装 MongoDB Community EditionTarball
Overview
使用本教程手动安装 MongoDB 8.0 MongoDB Community EditionRed Hat EnterpriseLinux 、CentOSLinux 或OracleLinux [1 ] 上的 ,使用下载的.tgz
tarball。
MongoDB 版本
本教程将安装 MongoDB 8.0 社区版。要安装不同的 MongoDB Community,使用此页面左上角的版本下拉菜单以选择该版本的文档。
安装方法
虽然可按本文档所述方法通过下载的 .tgz
Tarball 手动安装 MongoDB,但可能时仍建议在您的系统上使用 yum
包管理器来安装 MongoDB。使用包管理器会自动安装所需的全部依赖项,提供 mongod.conf
示例文件来帮助您入门,并简化未来的升级和维护任务。
➤ 有关说明,请参阅使用 yum 软件包经理安装MongoDB 。
Considerations
MongoDB Shell、 mongosh
使用 .tgz
包安装服务器时,您需要按照 mongosh 安装说明,单独下载和安装 mongosh。
平台支持
MongoDB 8.0 MongoDB Community Edition支持x86上以下 64 位版本的 Red Hat Enterprise Linux (RHEL)、 CentOS Linux 、 Oracle Linux [1] 、Rocky Linux和 AlmaLinux [2] _64架构:
RHEL / CentOS Stream / Oracle / Rocky / AlmaLinux 9
RHEL / CentOS Stream / Oracle / Rocky / AlmaLinux 8
MongoDB 仅支持这些平台的 64 位版本。
RHEL/CentOS/Oracle/Rocky/Alma Linux 上的 MongoDB 8.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
先决条件
使用以下命令安装 MongoDB Community Edition .tgz
Tarball 所需的依赖项:
sudo yum install libcurl openssl xz-libs
步骤
请按照以下步骤从 .tgz
手动安装 MongoDB Community Edition。
确保二进制文件位于 PATH
环境变量中列出的目录下。
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/
安装 MongoDB Shell (mongosh
)。
安装 mongosh
然后使用 MongoDB Shell 连接到您的部署。
从 MongoDB 下载中心下载所需 mongosh
版本的对应包,并将其解压。
运行 MongoDB Community Edition
ulimit
大多数类 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
使用非默认目录
要使用除默认目录外的数据目录和/或日志目录:
创建新目录。
编辑配置文件
/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 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 创建后,通过运行以下三个命令来编译并加载自定义策略模块:
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>
例如:
提示
请务必为 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 端口。
如果您对 MongoDB 安装进行了其他修改。
步骤
请按照以下步骤在您的系统上运行 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。
在与 mongod
相同的主机上启动 mongosh
会话。您可以在不使用任何命令行选项的情况下运行 mongosh
,从而连接在本地主机上运行且默认端口号为 27017 的 mongod
。
mongosh
如需进一步了解使用 mongosh
进行连接(例如连接在其他主机和/或端口上运行的 mongod
实例),请参阅 mongosh 文档。
为了帮助您开始使用 MongoDB,MongoDB 提供了各种驱动程序版本的入门指南。关于驱动程序文档,请参阅 开始使用 MongoDB 开发。
更多信息
默认绑定本地主机
默认情况下,MongoDB 会以将 bindIp
设为 127.0.0.1
来启动,从而绑定到本地主机网络接口。这意味着 mongod
只能接受来自同一计算机上运行的客户端的连接。远程客户端无法连接到 mongod
,且 mongod
无法初始化副本集,除非将此值设为有效的网络接口。
该值可通过以下任一方式配置:
警告
将实例绑定到可公开访问的 IP 地址之前,必须保护集群免遭未经授权的访问。有关安全建议的完整列表,请参阅自管理部署的安全清单。至少应考虑启用身份验证和强化网络基础设施。
有关配置bindIp
的详细信息,请参阅自托管部署中的IP绑定。