一. 下载tgz和安装
官网下载:https://www.mongodb.com/try/download/community
官网包路径:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-7.0.32.tgz
1. 创建安装目录:
mkdir -p /usr/app/mongodb/single/{conf,log,data}
2. 使用wget下载tgz包:
# 进入下载目录 cd /usr/local/ # 下载tgz包 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-7.0.32.tgz # 解压tgz包 tar xf mongodb-linux-x86_64-rhel70-7.0.32.tgz # 重命名 mv mongodb-linux-x86_64-rhel70-7.0.32 mongodb7
3. 新增配置文件:
vim /usr/app/mongodb/single/conf/mongod.conf
配置内容:
systemLog: path: "/usr/app/mongodb/single/log/mongodb.log" logAppend: true destination: file logRotate: reopen net: # 修改端口 port: 27117 # 修改内网ip bindIp: 0.0.0.0,localhost,10.1.24.2 storage: dbPath: "/usr/app/mongodb/single/data/db" # journal: # enabled: true wiredTiger: engineConfig: # 默认配置在系统可用内存的60%左右,建议60%-80% cacheSizeGB: 0.3 configString: "cache_size=4M,session_max=200" # 启用WiredTiger的压缩功能,减少磁盘空间占用和I/O操作 collectionConfig: blockCompressor: zlib processManagement: fork: true # 慢查询 operationProfiling: mode: slowOp slowOpThresholdMs: 500 # 设置连接权限验证 #security: # authorization: enabled # 写入量调整oplog大小,默认1024 replication: oplogSizeMB: 1024
4. 配置环境变量:
vim /etc/profile
配置文件末尾追加:
# mongodb config export MONGODB_HOME=/usr/local/mongodb7 export PATH=$PATH:$MONGODB_HOME/bin
刷新环境变量:
source /etc/profile
5. 启动测试:
mongod -f /usr/app/mongodb/single/conf/mongod.conf
预期输出:
about to fork child process, waiting until server is ready for connections. forked process: 12345 child process started successfully, parent exiting
验证服务器状态:
# 检查进程
ps aux | grep mongod
# 检查端口监听
netstat -tulnp | grep 27017
# 测试连接
mongosh --port 27017 --eval "db.runCommand({ping: 1})"
预期输出:
{ ok: 1 }
二. 创建用户账户
1. 创建管理员用户:
客户端连接:
mongosh --port 27017
2. 创建管理员账户:
use admin
db.createUser({
user: "admin",
pwd: "your_secure_password", // 请替换为强密码
roles: ["root"]
})
3. 创建普通用户:
use testdb
db.createUser({user:"testuser", pwd:"Hzyh@10085", roles:[{role:"readWrite",db:"testdb"}]});
4. 启用mongo认证配置:
vim /usr/app/mongodb/single/conf/mongod.conf
# 安全认证 security: authorization: enabled
5. 重启服务:
# 先停止当前进程 sudo kill $(cat /usr/local/mongodb7/mongod.pid) # 重新启动 mongod -f /usr/app/mongodb/single/conf/mongod.conf
6. 认证连接测试:
mongosh --port 27017 -u admin -p your_secure_password --authenticationDatabase admin
二. 配置 systemd 服务
1. 创建mongod用户
sudo groupadd mongod sudo useradd -r -g mongod -s /sbin/nologin mongod
2. 修改目录权限
sudo chown -R mongod:mongod /usr/app/mongodb/single
3. 创建 systemd 服务文件
sudo vim /etc/systemd/system/mongod.service
4. 写入以下内容:
[Unit] Description=MongoDB Database Server Documentation=https://docs.mongodb.org/manual After=network.target [Service] User=mongod Group=mongod Type=forking ExecStart=/usr/local/mongodb7/bin/mongod -f /usr/app/mongodb/single/conf/mongod.conf ExecStop=/usr/local/mongodb7/bin/mongod --shutdown -f /usr/app/mongodb/single/conf/mongod.conf Restart=on-failure LimitNOFILE=64000 [Install] WantedBy=multi-user.target
5. 启用并启动服务:
sudo systemctl daemon-reload sudo systemctl enable mongod sudo systemctl start mongod sudo systemctl status mongod
三.配置日志按天自动分割,使用 Linux cron + logrotate
1. 确认当前mongod.conf 配置已经设置了 logRotate: reopen,关键配置:
logAppend: true — 追加写入 logRotate: reopen — 收到信号后关闭并重新打开日志文件
2. 创建 logrotate 配置文件:
sudo vim /etc/logrotate.d/mongodb
3. 内容如下:
/usr/app/mongodb/single/log/mongodb.log {
daily
dateext
dateformat -%Y%m%d
missingok
notifempty
compress
delaycompress
rotate 30
copytruncate
create 640 mongod mongod
}
4.关键参数说明:
daily — 每天轮转一次
dateext — 用日期作为后缀(如 mongodb.log-20260506)
copytruncate — 复制后截断原文件,无需发送信号重启进程
rotate 30 — 保留30天的日志
compress / delaycompress — 压缩旧日志节省空间
create 640 mongod mongod — 新日志文件的所有者是 mongod 用户,新日志文件的所属组是 mongod 组,
所有者可读写(6),所属组可读(4),其他人无权限(0)
5. 确保 cron 定时任务生效
# 检查 crond 服务是否运行 systemctl status crond # logrotate 通常已由系统 cron 每天自动执行 # 手动测试轮转: logrotate -vf /etc/logrotate.d/mongodb
