# 环境搭建 本章将详细介绍如何在 Rocky Linux 操作系统上安装和配置 MongoDB,以及如何管理 MongoDB 服务。正确的环境搭建是后续学习的基础。 --- ## 安装部署 基于 Rocky Linux 9 系统上,推荐使用 `yum` 或 `dnf` 包管理器通过官方源进行安装,这样可以确保安装的是最新稳定版本,并且便于后续更新。 **步骤 1: 配置 MongoDB 的 YUM/DNF 仓库** 创建一个 `/etc/yum.repos.d/mongodb-org-7.0.repo` 文件,并添加以下内容: ```ini [mongodb-org-7.0] name=MongoDB Repository baseurl=https://mirrors.tuna.tsinghua.edu.cn/mongodb/yum/el9-7.0/ gpgcheck=0 enabled=1 ``` **步骤 2: 安装 MongoDB** 执行以下命令安装 MongoDB 数据库及其相关工具: ```shell # 清理缓存并安装 yum makecache yum install -y mongodb-org ``` 这个命令会安装以下几个包: - `mongodb-org-server`: `mongod` 守护进程、配置文件和初始化脚本。 - `mongodb-org-mongos`: `mongos` 守护进程。 - `mongodb-mongosh`: MongoDB Shell (`mongosh`)。 - `mongodb-org-tools`: MongoDB 的命令行工具,如 `mongodump`, `mongorestore`, `mongoimport`, `mongoexport` 等。 --- ## 相关配置 MongoDB 的主配置文件位于 `/etc/mongod.conf`,默认的配置文件采用 YAML 格式。以下是一些核心配置项的说明: ```yaml # mongod.conf # 存储设置 storage: dbPath: /var/lib/mongo # 数据文件存放目录 journal: enabled: true # 是否启用 journal 日志,建议始终开启 # 系统日志设置 systemLog: destination: file # 日志输出到文件 logAppend: true # 日志以追加方式写入 path: /var/log/mongodb/mongod.log # 日志文件路径 # 网络设置 net: port: 27017 # 监听端口 bindIp: 127.0.0.1 # 绑定的 IP 地址,默认为本地回环地址。如需远程访问,可设置为 0.0.0.0 # 进程管理 processManagement: timeZoneInfo: /usr/share/zoneinfo # 时区信息 # 安全设置 (默认禁用) #security: # authorization: enabled # 启用访问控制 ``` - **`storage.dbPath`**: MongoDB 数据文件的存储路径,需要确保 `mongod` 用户对此目录有读写权限。 - **`systemLog.path`**: 日志文件路径,用于记录数据库的操作和错误信息。 - **`net.bindIp`**: 这是非常重要的安全配置。默认 `127.0.0.1` 只允许本机连接。如果需要从其他服务器连接,应谨慎地将其设置为服务器的内网 IP 或 `0.0.0.0`(监听所有网络接口),并配合防火墙和安全组规则使用。 --- ## 服务管理 在现代 Linux 系统中,我们使用 `systemd` 来管理 `mongod` 服务。 ```shell # 启动 MongoDB 服务 systemctl start mongod # 查看服务状态 systemctl status mongod # 停止 MongoDB 服务 systemctl stop mongod # 重启 MongoDB 服务 systemctl restart mongod # 启用开机自启动 systemctl enable mongod # 禁用开机自启动 systemctl disable mongod ``` ## 生产配置 这是一个更贴近生产环境的配置文件示例,增加了安全和性能相关的配置。 ```yaml # /etc/mongod.conf - Production Example storage: dbPath: /var/lib/mongo journal: enabled: true engine: wiredTiger wiredTiger: engineConfig: cacheSizeGB: 1 # 根据服务器内存调整,建议为物理内存的 50% - 60% systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log net: port: 27017 bindIp: 127.0.0.1,192.168.1.100 # 绑定本地和内网 IP maxIncomingConnections: 1000 # 最大连接数 processManagement: fork: true # 后台运行 pidFilePath: /var/run/mongodb/mongod.pid timeZoneInfo: /usr/share/zoneinfo security: authorization: enabled # 开启认证 replication: replSetName: rs0 # 副本集名称 ``` ## 实践操作 ### 需求描述 1. 使用 `root` 用户安装并正常运行 2. 更改数据目录 `dbPath` 为 `/data/mongodb` 3. 更改监听地址 `bindIp` 为 `0.0.0.0` ### 实践细节和结果验证 ```shell # 关闭防火墙和 SELINUX # 安装 Mongodb 并正常启动 tee /etc/yum.repos.d/mongodb-org-7.0.repo << EOF [mongodb-org-7.0] name=MongoDB Repository baseurl=https://mirrors.tuna.tsinghua.edu.cn/mongodb/yum/el9-7.0/ gpgcheck=0 enabled=1 EOF yum makecache yum install -y mongodb-org mkdir -p /data/mongodb sed -i 's|dbPath: /var/lib/mongo|dbPath: /data/mongodb|' /etc/mongod.conf sed -i 's|bindIp: 127.0.0.1|bindIp: 0.0.0.0|' /etc/mongod.conf cp /lib/systemd/system/mongod.service /etc/systemd/system/mongod.service sed -i 's/User=mongod/User=root/' /etc/systemd/system/mongod.service sed -i 's/Group=mongod/Group=root/' /etc/systemd/system/mongod.service systemctl start mongod && systemctl enable mongod # 测试验证 mongod --version ```