一. 下载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