在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 常见问题排查

MongoDB Windows服务安装_MongoDB Windows系统服务配置_服务器MongoDB安装

如果遇到启动失败,按以下步骤排查:

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位操作系统以确保稳定性。