在Linux环境下部署MongoDB并配置为系统服务,是保障数据库稳定运行的关键步骤。
本文将基于CentOS 7.9云服务器环境,详细演示从零开始配置MongoDB社区版的全流程,涵盖官方源配置、安全认证、Docker化部署等多种方案,并提供生产环境级别的优化建议。
一、环境准备与MongoDB安装
1.1 服务器基础配置
假设你已拥有一台Linux云服务器(推荐2核4GB配置以上),首先更新系统包并配置主机名:
# 更新系统
sudo yum update -y
# 配置主机名解析
echo "127.0.0.1 mongodb-server" >> /etc/hosts
hostnamectl set-hostname mongodb-server
1.2 添加官方YUM源
为了获取最新稳定版本,建议直接使用MongoDB官方源:
# 创建repo文件
cat > /etc/yum.repos.d/mongodb-org-7.0.repo << "EOF"
[mongodb-org-7.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/7.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-7.0.asc
EOF
# 安装MongoDB
sudo yum install -y mongodb-org
二、系统服务配置实战
C:Documents and Settingschaijunkun>d:
D:>cd mongodb-win32-i386-2.0.2
D:mongodb-win32-i386-2.0.2>cd bin
D:mongodb-win32-i386-2.0.2bin>dir
驱动器 D 中的卷没有标签。
卷的序列号是 F4CA-B47C
D:mongodb-win32-i386-2.0.2bin 的目录
2012-02-01 16:48 .
2012-02-01 16:48 ..
2011-12-14 12:23 3,644,928 bsondump.exe
2011-12-14 12:25 1,793,536 mongo.exe
2011-12-14 12:28 3,952,640 mongod.exe
2011-12-14 12:30 3,660,800 mongodump.exe
2011-12-14 12:32 3,651,072 mongoexport.exe
2011-12-14 12:34 3,656,192 mongofiles.exe
2011-12-14 12:36 3,668,992 mongoimport.exe
2011-12-14 12:38 3,654,656 mongorestore.exe
2011-12-14 12:39 2,807,808 mongos.exe
2011-12-14 12:41 3,689,472 mongostat.exe
2011-12-14 12:46 3,657,216 mongotop.exe
11 个文件 37,837,312 字节
2 个目录 97,404,313,600 可用字节
2.1 数据目录与权限设置
严格按照安全规范创建数据目录并授权:
# 创建数据存储目录
sudo mkdir -p /data/mongodb
sudo mkdir -p /var/log/mongodb
sudo mkdir -p /etc/mongod
# 创建mongod用户(如果未自动创建)
sudo useradd -r -s /sbin/nologin mongod
# 设置目录所有权
sudo chown -R mongod:mongod /data/mongodb
sudo chown -R mongod:mongod /var/log/mongodb
sudo chmod 755 /data/mongodb /var/log/mongodb
2.2 配置文件精细化调整
生成符合生产要求的配置文件:
cat > /etc/mongod/mongod.conf << "EOF"
# mongod.conf - 生产环境配置示例
# 存储引擎配置
storage:
dbPath: /data/mongodb
journal:
enabled: true
directoryPerDB: true
syncPeriodSecs: 60
engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 1
journalCompressor: snappy
collectionConfig:
blockCompressor: snappy
# 日志配置
systemLog:
destination: file
path: /var/log/mongodb/mongod.log
logAppend: true
verbosity: 0
# 进程配置
processManagement:
fork: true
pidFilePath: /var/run/mongodb/mongod.pid
# 网络配置
net:
bindIp: 0.0.0.0
port: 27017
maxIncomingConnections: 65536
# 安全认证(生产环境必开)
security:
authorization: enabled
javascriptEnabled: false
# 副本集配置(如需高可用)
#replication:
# replSetName: rs0
EOF
C:Documents and Settingschaijunkun>
2.3 注册系统服务
创建Systemd服务单元文件:
cat > /etc/systemd/system/mongod.service << "EOF"
[Unit]
Description=MongoDB Database Server
Documentation=https://docs.mongodb.org/manual
After=network.target
[Service]
User=mongod
Group=mongod
Environment="OPTIONS=-f /etc/mongod/mongod.conf"
ExecStart=/usr/bin/mongod $OPTIONS
ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb
ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb
ExecStartPre=/usr/bin/chmod 755 /var/run/mongodb
PermissionsStartOnly=true
PIDFile=/var/run/mongodb/mongod.pid
Type=forking
# 文件描述符限制
LimitNOFILE=64000
LimitNPROC=64000
[Install]
WantedBy=multi-user.target
EOF
C:Documents and Settingschaijunkun>D:mongodb-win32-i386-2.0.2binmongod.exe .............
三、服务启动与验证
3.1 重新加载并启动服务
# 重新加载systemd配置
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start mongod
# 设置开机自启
sudo systemctl enable mongod
# 查看服务状态
sudo systemctl status mongod
3.2 常见问题排查

如果遇到启动失败,按以下步骤排查:
D:mongodb-win32-i386-2.0.2bin>mkdir c:MongoDBData
# 检查日志
tail -f /var/log/mongodb/mongod.log
# 验证端口监听
netstat -tlnp | grep 27017
# 测试连接
mongo --eval "db.runCommand({connectionStatus:1})"
四、Docker化部署方案
对于容器化环境,推荐使用Docker Compose部署:
D:mongodb-win32-i386-2.0.2bin>mongod --install --serviceName MongoDB --serviceDisplayName MongoDB --logpath c:MongoDB.Log --dbpath c:MongoDB --directoryperdb
version: '3.8'
services:
mongodb:
image: mongo:7.0-jammy
container_name: mongodb
restart: always
ports:
"27017:27017"
volumes:
./data:/data/db
./config:/etc/mongo
./logs:/var/log/mongodb
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: your_secure_password
command: mongod --config /etc/mongo/mongod.conf
networks:
app_network
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
networks:
app_network:
driver: bridge
五、安全加固与性能优化
5.1 防火墙配置
# 配置firewalld
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="27017" accept'
firewall-cmd --reload
# 或使用iptables
iptables -A INPUT -p tcp -s 10.0.0.0/8 --dport 27017 -j ACCEPT
iptables -A INPUT -p tcp --dport 27017 -j DROP
5.2 性能调优参数
在/etc/sysctl.conf中添加:
# 内存优化
vm.swappiness = 1
vm.vfs_cache_pressure = 50
# 网络优化
net.core.somaxconn = 4096
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_tw_reuse = 1
# 生效
sysctl -p
六、域名绑定与访问配置
若需要通过域名访问,可配置Nginx反向代理:
upstream mongodb_cluster {
server 127.0.0.1:27017;
}
server {
listen 80;
server_name mongo.yourdomain.com;
location / {
proxy_pass http://mongodb_cluster;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
至此,MongoDB已在Linux服务器上成功配置为系统服务。
建议定期备份数据并监控服务状态。
如需在32位系统部署,请特别注意数据文件大小限制(通常为2GB),生产环境务必使用64位操作系统以确保稳定性。

Comments NOTHING