使用 .tgz 压缩包在 Red Hat 或 CentOS 上安装 MongoDB 社区版
概述
使用本教程手动安装 MongoDB 8.0社区版在 Red Hat Enterprise Linux、CentOS Linux 或 Oracle Linux [1] 上使用下载的.tgz
压缩包。
MongoDB 版本
本教程安装 MongoDB 8.0社区版。要安装不同版本的 MongoDB社区,请使用页面右上角的版本下拉菜单选择该版本的文档。
安装方法
虽然MongoDB可以通过本文档中描述的下载.tgz
tarball手动安装,但如果可能,建议使用系统上的yum
软件包管理器安装MongoDB。使用软件包管理器可以自动安装所有必要的依赖项,提供示例mongod.conf
文件以帮助您开始,并简化未来的升级和维护任务。
注意事项
MongoDB Shell, mongosh
当您使用.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社区版
先决条件
使用以下命令安装MongoDB所需的依赖项社区 .tgz
压缩包
sudo yum install libcurl openssl xz-libs
步骤
按照以下步骤手动安装MongoDB社区版本(从 .tgz
压缩包)。
确保二进制文件位于您的PATH
环境变量中的目录列表中。
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/
安装 MongoDB Shell(《mongosh
》)。
安装 《mongosh
》,然后使用 MongoDB Shell 连接到您的部署。
从MongoDB 下载中心下载您需要的《mongosh
》版本,并解压该包。
运行 MongoDB 社区版
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 进程可以以 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处于强制
模式,您还需要针对这些情况进一步定制SELinux策略
您正在使用一个自定义目录路径,而不是使用默认路径,这可以是以下任意组合:
您正在使用一个自定义端口,而不是使用默认MongoDB端口。
如果您已对MongoDB安装进行了其他修改。
程序
按照以下步骤运行MongoDB社区系统上的版本。以下说明假设您正在使用默认设置。
运行MongoDB。
要运行MongoDB,请在系统提示符下运行mongod
进程。
mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork
有关命令行选项--dbpath
和--logpath
的详细信息,请参阅选项。
开始使用MongoDB。
在与mongod
相同的宿主机上启动一个mongosh
会话。您可以在不使用任何命令行选项的情况下运行mongosh
,以连接到默认端口27017运行在本地主机上的mongod
。
mongosh
有关使用mongosh
连接的更多信息,例如连接到运行在不同主机和/或端口的mongod
实例,请参阅mongosh 文档。
为了帮助您开始使用 MongoDB,MongoDB 提供了各种驱动程序的入门指南。有关驱动程序文档,请参阅开始使用 MongoDB 进行开发。
更多信息
默认绑定到本地主机
默认情况下,MongoDB 以 bindIp
设置为 127.0.0.1
启动,这绑定到本地主机网络接口。这意味着 mongod
只能接受运行在同一台机器上的客户端的连接。远程客户端将无法连接到 mongod
,除非将此值设置为有效的网络接口,否则 mongod
将无法初始化一个副本集。
此值可以通过以下方式配置
有关配置bindIp
的更多信息,请参阅自托管部署中的IP绑定。