1. 安装官方YUM仓库
在CentOS上安装MongoDB前,需添加官方YUM仓库以确保软件包的完整性和安全性。创建/etc/yum.repos.d/mongodb-org.repo文件,内容根据MongoDB版本调整(如6.0版本):
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
使用sudo yum install -y mongodb-org安装,避免从第三方源下载导致的安全风险。
2. 配置文件路径与关键参数设置
MongoDB的主配置文件位于/etc/mongod.conf,需重点调整以下参数:
storage.dbPath(如/var/lib/mongo)指定数据存储目录,systemLog.path(如/var/log/mongodb/mongod.log)指定日志文件路径,确保目录存在且权限正确(chown -R mongod:mongod /var/lib/mongo /var/log/mongodb)。net.bindIp默认为127.0.0.1(仅本地访问),若需远程访问,可改为0.0.0.0(允许所有IP)或指定具体IP(如192.168.1.100),但需配合防火墙限制访问源。net.port默认为27017,可根据需求修改,但需确保端口未被占用。systemLog.logAppend设置为true,避免日志文件被覆盖,便于故障排查。3. 安全配置(必做项)
security section添加authorization: enabled,强制用户登录后才能访问数据库。修改后需重启服务(sudo systemctl restart mongod)。mongo命令进入shell,切换至admin数据库,创建具有管理权限的用户(如admin):use admin
db.createUser({
user: "admin",
pwd: "StrongPassword123!",
roles: ["root"]
})
bindIp设置为0.0.0.0,需通过防火墙限制仅信任IP可访问MongoDB端口(默认27017),例如使用firewall-cmd:sudo firewall-cmd --zone=public --add-port=27017/tcp --permanent
sudo firewall-cmd --reload
net.ssl.mode: requireSSL、net.ssl.PEMKeyFile(证书路径)和net.ssl.CAFile(CA证书路径),加密客户端与服务器之间的通信,防止数据泄露。4. 服务管理与开机自启
安装完成后,使用以下命令启动MongoDB服务并设置开机自启:
sudo systemctl start mongod
sudo systemctl enable mongod
通过sudo systemctl status mongod检查服务状态,确保显示为active (running)。
5. SELinux配置(若启用)
若系统启用了SELinux(默认开启),需调整策略以允许MongoDB访问数据目录和日志文件。执行以下命令:
sudo semanage fcontext -a -t mongod_var_lib_t "/var/lib/mongo(/.*)?"
sudo semanage fcontext -a -t mongod_log_t "/var/log/mongodb(/.*)?"
sudo restorecon -Rv /var/lib/mongo /var/log/mongodb
或临时设置为宽松模式(测试环境使用):编辑/etc/selinux/config,将SELINUX=enforcing改为SELINUX=permissive,然后重启系统。
6. 性能优化配置
storage section添加wiredTiger.engineConfig.cacheSizeGB,设置为物理内存的50%(如8GB内存设置为4GB),避免内存占用过高影响系统性能。replication.oplogSizeMB(默认为磁盘空间的5%),确保足够空间存储操作日志,防止复制中断。systemLog.logRotate: reopen,并配置logrotate工具,定期分割日志文件,避免日志过大占用磁盘空间。7. 监控与维护
mongodump工具定期备份数据(如每日备份),存储至异地或云存储,防止数据丢失。tail -f /var/log/mongodb/mongod.log实时监控日志,关注错误信息(如连接超时、磁盘空间不足)。