线上服务器链接数据库失败,不知道和专有网络有关系吗?

来源:10-4 部署发布电影网站并连接线上 MongoDB

我很爱大圆脸

2018-01-22

本地服务器下,项目都正常跑通。线上服务器,阿里云网络为专有网络,项目可以部署成功,node服务可以跑起来,不需要链接数据库的接口可以正常请求,但是需要链接数据库的接口都链接不上,不知道是哪里出了问题。求指导,谢谢,这个问题困扰我很久了。

写回答

4回答

Scott

2018-02-12

你部署到服务器上是用 pm2 部署的吧,你 ssh 到服务器上,用 pm2 logs 打开实时日志,然后重新从本地部署下,访问下网页,看下服务器的 log 是什么,如果连不上,这里就一定会报错,报错信息就能给出线索,现在依然不确定是哪个问题导致的

0
0

Scott

2018-01-26

你在服务器上建一个文件及,然后里面装上 mongoose,把下面的测试脚本帖进去,比如 db.js


const mongoose = require('mongoose')
mongoose.Promise = global.Promise
const connectDb = () => {
  // const db = 'mongodb://localhost/xxx'
  const db = '你的 db url,如 mongodb://localhost/xxx'
  let maxConnectTimes = 0
  mongoose.set('debug', true)
  mongoose.connect(db, {
    // 这个配置可能不需要,如果 mongoose 是 5.x 的话
    // useMongoClient: true
  })
  mongoose.connection.on('disconnected', () => {
    maxConnectTimes++
    if (maxConnectTimes < 5) {
      mongoose.connect(db, {
        // 这个配置可能不需要,如果 mongoose 是 5.x 的话
        // useMongoClient: true
      })
    } else {
      throw new Error('数据库挂了吧 快去修复')
    }
  })
  mongoose.connection.on('error', err => {
    console.error(err)
  })
  mongoose.connection.once('open', () => {
    console.log('Connected to MongoDB -> ', db)
  })
}
connectDb()


最后执行 node db,看看有没有报错,是否能链接成功

0
7
我很爱大圆脸
我把mongoose换成5.0.3也不成功,一样的效果
2018-02-05
共7条回复

Scott

2018-01-22

还有第四个,是阿里云后台的安全组这里可能也要配置下端口的访问权限

0
1
我很爱大圆脸
老师,这个我在阿里云的安全组里配置好访问权限了
2018-01-23
共1条回复

Scott

2018-01-22

那应该是跟数据库这里有关系,如下几种可能:


  1. 数据库没有成功开启服务,导致连不上

  2. 服务器的端口没有在防火墙这里配置好访问权限,导致连不上

  3. 链接数据库的 url 里面的参数组合可能不合法,导致连不上


可以先到服务器上,命令行连接数据库试试看,类似这样子:


mongo --port 20517 moveha-june-online -u muhaha_runner -p fxxkuHou233$

0
2
我很爱大圆脸
谢谢老师
2018-01-23
共2条回复

Node.js项目线上服务器部署与发布

阿里云部署Node.js+MongoDB+Nginx的应用项目,打通全栈

1747 学习 · 448 问题

查看课程