Ubuntu VPS部署Nodejs应用无法连接服务器本地MongoDB故障求助
MongoDB连接故障排查修复方案
1. 确认MongoDB服务运行状态
首先登录Ubuntu VPS执行命令验证MongoDB是否正常运行:systemctl status mongod
如果服务未启动,执行以下命令启动并设置开机自启:
- 启动服务:
systemctl start mongod - 设置开机自启:
systemctl enable mongod
2. 校验MongoDB端口监听配置
Ubuntu系统下MongoDB默认配置文件路径为/etc/mongod.conf,找到net.bindIp配置项:
- 若Nodejs应用和MongoDB部署在同一台VPS,
bindIp设置为127.0.0.1为合理配置,检查是否被注释或填写错误 - 修改配置后必须重启MongoDB生效:
systemctl restart mongod - 可以在VPS本地执行命令验证连接有效性:
mongo mongodb://127.0.0.1:27017/dealerportal,确认无报错即可正常连接
3. 核对MongoDB身份认证配置
如果你的MongoDB开启了身份认证,无账号密码的连接字符串会被拒绝访问:
- 未开启认证场景:可继续使用原连接字符串
mongodb://127.0.0.1:27017/dealerportal - 开启认证场景:需要修改连接字符串为
mongodb://<你的用户名>:<你的密码>@127.0.0.1:27017/dealerportal?authSource=admin,替换对应账号密码即可
4. 检查VPS本地防火墙规则
即使是本地回环地址,也需要确认防火墙未拦截27017端口:
- 查看当前防火墙规则:
ufw status - 若27017端口被拦截,执行本地回环放行规则:
ufw allow in from 127.0.0.1 to any port 27017
5. 调整Nodejs数据库连接超时配置
服务器环境网络波动可能导致默认短超时配置连接失败,可在连接参数中延长超时时间,以下为Mongoose连接示例:
const mongoose = require('mongoose'); mongoose.connect('mongodb://127.0.0.1:27017/dealerportal', { connectTimeoutMS: 30000, socketTimeoutMS: 30000 })
6. 移动端访问报错额外排查项
如果确认Nodejs已经成功连接MongoDB,但移动端访问仍返回网络错误,需要检查Nodejs服务监听配置:
- Nodejs服务不能只绑定
127.0.0.1,否则只有VPS本地可访问,需要修改监听地址为0.0.0.0,示例:app.listen(3000, '0.0.0.0')(3000替换为你实际使用的端口) - 在防火墙放行Nodejs服务端口:
ufw allow 3000/tcp(替换为实际端口)
内容的提问来源于stack exchange,提问作者Mohsin Uddin Abir
相关产品推荐
相关产品推荐

