CentOS 7下MongoDB安装与配置全指南
1. CentOS 7环境下MongoDB安装概述在Linux服务器环境中部署NoSQL数据库是后端开发的常见需求。MongoDB作为文档型数据库的代表以其灵活的Schema设计和优秀的水平扩展能力成为许多互联网项目的首选数据存储方案。CentOS 7作为企业级Linux发行版其稳定性和长期支持特性使其成为生产环境的主流选择。这次我们将从零开始在CentOS 7系统上完成MongoDB社区版的完整安装和基础配置。不同于简单的apt-get install我们会深入每个步骤背后的原理包括官方仓库配置的意义关键参数的优化设置生产环境必要的安全加固常见报错的解决方案整个过程约需30分钟适合需要快速搭建开发/测试环境的工程师参考。对于生产环境部署文末还提供了额外的安全配置建议。2. 环境准备与依赖检查2.1 系统基础配置在开始安装前建议先执行以下基础检查# 查看系统版本确认是CentOS 7 cat /etc/redhat-release # 更新系统基础包 sudo yum update -y # 安装基础工具集 sudo yum install -y wget curl net-tools lsof注意如果是在企业内网环境可能需要先配置代理或内部yum源。常见的源配置问题包括证书错误SSL错误仓库元数据获取失败[errno 14]类错误依赖解析冲突2.2 SELinux与防火墙策略CentOS 7默认的安全策略可能影响MongoDB运行# 临时关闭SELinux生产环境不建议 setenforce 0 # 或永久修改配置 sudo sed -i s/SELINUXenforcing/SELINUXpermissive/g /etc/selinux/config # 防火墙开放27017端口 sudo firewall-cmd --zonepublic --add-port27017/tcp --permanent sudo firewall-cmd --reload3. MongoDB仓库配置3.1 添加官方仓库MongoDB官方提供了专为CentOS/RHEL优化的仓库# 创建repo文件 sudo tee /etc/yum.repos.d/mongodb-org-4.4.repo EOF [mongodb-org-4.4] nameMongoDB Repository baseurlhttps://repo.mongodb.org/yum/redhat/7/mongodb-org/4.4/x86_64/ gpgcheck1 enabled1 gpgkeyhttps://www.mongodb.org/static/pgp/server-4.4.asc EOF关键参数说明baseurl中的4.4表示大版本可根据需要修改RHEL 7兼容CentOS 7因此使用redhat/7路径GPG校验确保软件包完整性3.2 替代仓库方案当官方仓库访问不稳定时可以使用国内镜像源# 例如使用阿里云镜像 sudo sed -i s|https://repo.mongodb.org|https://mirrors.aliyun.com/mongodb|g /etc/yum.repos.d/mongodb-org-4.4.repo4. MongoDB安装与基础配置4.1 核心组件安装执行以下命令安装完整套件sudo yum install -y mongodb-org这会安装以下组件mongodb-org-server核心服务程序mongodb-org-mongos分片路由组件mongodb-org-shell交互式JavaScript接口mongodb-org-tools包含mongodump等工具经验生产环境建议明确指定版本号避免自动升级带来兼容性问题sudo yum install -y mongodb-org-4.4.1 mongodb-org-server-4.4.1 ...4.2 文件目录结构安装完成后主要文件位置配置文件/etc/mongod.conf数据目录/var/lib/mongo默认日志文件/var/log/mongodb/mongod.log执行文件/usr/bin/mongod建议数据目录单独挂载高性能存储设备。5. 服务启动与验证5.1 启动MongoDB服务# 启动服务 sudo systemctl start mongod # 设置开机自启 sudo systemctl enable mongod # 检查状态 sudo systemctl status mongod5.2 基础功能验证# 连接MongoDB shell mongo # 执行测试命令 db.runCommand({ping: 1}) # 应返回{ ok : 1 } show dbs # 查看已有数据库列表6. 生产环境关键配置6.1 配置文件优化编辑/etc/mongod.conf中的核心参数systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log logRotate: reopen storage: dbPath: /data/mongodb # 建议修改到独立分区 journal: enabled: true net: port: 27017 bindIp: 127.0.0.1 # 生产环境应限制访问IP processManagement: fork: true # 以守护进程运行 pidFilePath: /var/run/mongodb/mongod.pid6.2 安全加固措施基础安全设置// 在mongo shell中执行 use admin db.createUser({ user: admin, pwd: complexpassword, // 使用强密码 roles: [ { role: userAdminAnyDatabase, db: admin } ] }) // 启用认证 db.adminCommand({setParameter: 1, authorization: enabled})然后在配置文件中添加security: authorization: enabled7. 常见问题排查7.1 服务启动失败常见错误及解决方案错误现象可能原因解决方案Failed to unlink socket file旧进程未完全退出删除/tmp/mongodb-27017.sock并重启Permission denied数据目录权限问题chown -R mongod:mongod /var/lib/mongoAddress already in use端口冲突netstat -tulnp查找占用进程7.2 连接问题连接失败的典型场景防火墙未开放端口sudo firewall-cmd --list-portsbindIp配置限制net: bindIp: 0.0.0.0 # 允许所有IP访问认证配置错误mongo -u admin -p password --authenticationDatabase admin8. 性能调优建议8.1 内存配置MongoDB会尽可能占用可用内存作为缓存。建议在/etc/mongod.conf中限制storage: wiredTiger: engineConfig: cacheSizeGB: 8 # 根据物理内存调整通常留出30%给系统8.2 文件描述符限制对于高并发场景需要提高系统限制# 修改limits.conf echo mongod soft nofile 64000 | sudo tee -a /etc/security/limits.conf echo mongod hard nofile 64000 | sudo tee -a /etc/security/limits.conf9. 备份与维护9.1 基础备份方案使用mongodump进行逻辑备份mongodump --urimongodb://admin:passwordlocalhost:27017 --out/backups/mongodb-$(date %Y%m%d)9.2 定时任务配置创建每日备份脚本/etc/cron.daily/mongodb-backup#!/bin/bash BACKUP_DIR/backups/mongodb-$(date %Y%m%d) mongodump --urimongodb://admin:passwordlocalhost:27017 --out$BACKUP_DIR find /backups -type d -mtime 7 -exec rm -rf {} \; # 保留7天备份10. 版本升级策略多版本升级路径示例# 从4.2升级到4.4 sudo yum install -y mongodb-org-4.4 mongodb-org-server-4.4 sudo systemctl restart mongod # 重要务必先测试升级流程并备份数据升级前必须检查版本兼容性文档在测试环境验证备份所有关键数据