You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在生产环境中使用Mongoose连接MongoDB?

生产环境Ubuntu服务器部署React+Express+MongoDB连接问题排查与解决

一、基础连接问题排查

  • 端口与防火墙配置:Ubuntu默认防火墙ufw可能拦截5000端口,执行ufw allow 5000开放端口;若使用Nginx反向代理,可仅开放80/443端口,将5000端口设为对内访问。另外,非root用户无法监听1024以下端口,5000端口无此限制,若更换端口需注意权限。
  • MongoDB连接权限检查:
    • 若使用MongoDB Atlas:登录控制台,在「Network Access」中添加生产服务器的公网IP,或临时设置为允许所有IP(0.0.0.0/0)测试连接。同时确认.env文件中ATLAS_URI的用户名、密码、集群地址配置正确。
    • 若使用本地MongoDB:修改/etc/mongod.conf中的bindIp为0.0.0.0(允许远程连接),执行systemctl restart mongod重启服务,且确保MongoDB服务处于运行状态。
  • 环境变量加载验证:在代码中添加console.log('MongoDB URI:', uri),启动服务后查看日志,确认ATLAS_URI是否被正确读取,避免.env文件路径错误导致变量加载失败。

二、代码层面错误捕获优化

当前代码未处理Mongoose连接失败的场景,添加错误监听可快速定位问题:

// 修改Mongoose连接逻辑
const uri = process.env.ATLAS_URI;
mongoose.connect(uri)
  .then(() => console.log("MongoDB数据库连接成功"))
  .catch(err => console.error("MongoDB连接失败:", err));

// 额外添加连接错误监听
const connection = mongoose.connection;
connection.on('error', err => {
  console.error('MongoDB连接异常:', err);
});

三、生产环境服务运行建议

  • 使用进程管理器:用pm2管理Node.js进程,确保服务意外退出后自动重启。安装命令:npm install pm2 -g,启动服务:pm2 start app.js,通过pm2 logs查看实时日志排查问题。
  • Nginx反向代理配置(域名访问场景):将域名请求转发到5000端口,同时支持SSL证书配置,示例Nginx配置:
server {
    listen 80;
    server_name 你的域名;

    location / {
        proxy_pass http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

配置完成后重启Nginx:systemctl restart nginx,即可通过域名访问服务。

四、其他排查点

  • Node.js版本兼容:确认生产服务器Node.js版本与开发环境一致,执行node -v查看版本,若不一致可通过nvm安装对应版本。
  • 生产依赖安装:在服务器上执行npm install --production,仅安装生产环境所需依赖,避免开发依赖引发的兼容性问题。

内容的提问来源于stack exchange,提问作者user3845941

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 20:35:22