请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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

正在回答 回答被采纳积分+3

4回答

Scott 2018-02-12 09:32:24

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

0 回复 有任何疑惑可以回复我~
Scott 2018-01-26 20:47:46

你在服务器上建一个文件及,然后里面装上 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 回复 有任何疑惑可以回复我~
  • 提问者 我很爱大圆脸 #1
    老师,还是连接不上啊,最近公司一直在忙项目,也没时间来看,今天刚来看看,把您的代码复制之后在服务器上跑不通,dburl是使用我的数据库权限账号的拼成的链接。我博客项目的数据库在服务器上手动是能启动的,本地服务器下链接数据库也都没问题,就是部署上去之后链接不到数据库。老师什么时候有时间能帮忙远程指导下吗?现在自己实在是搞不动了,这门课的学习就剩最后这一个点没有解决了,谢谢啦
    回复 有任何疑惑可以回复我~ 2018-02-02 10:14:13
  • Scott 回复 提问者 我很爱大圆脸 #2
    有任何报错的提示么,可以把提示放出来,我们看一下,你 mongo 可以连上,程序连不上,初步推测是代码问题,或者是 mongoose 特定版本的链接(配置不同)问题
    回复 有任何疑惑可以回复我~ 2018-02-05 08:36:44
  • 提问者 我很爱大圆脸 #3
    老师,我贴了我项目的部分代码,链接数据库的代码和请求接口时候的代码,由于合理无法放图片,我自己写了一个链接,您有时间帮忙看下,看有什么问题吗?谢谢   
    
    https://segmentfault.com/n/1330000013143670
    回复 有任何疑惑可以回复我~ 2018-02-05 14:16:19
Scott 2018-01-22 20:40:41

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

0 回复 有任何疑惑可以回复我~
  • 提问者 我很爱大圆脸 #1
    老师,这个我在阿里云的安全组里配置好访问权限了
    回复 有任何疑惑可以回复我~ 2018-01-23 09:28:11
Scott 2018-01-22 20:39:57

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


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

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

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


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


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

0 回复 有任何疑惑可以回复我~
  • 提问者 我很爱大圆脸 #1
    服务器上执行mongo --port xxxx 可以启动数据库,而且通过权限账号都可以查看导到线上服务器的表,url里面写的就是数据库配置的权限账号。
    
    另外防火墙也进行了配置呀,我再看看哪里不对。
    
    另外我想问一下老师,这个和阿里云的专有网络有关系吗?
    
    如果实在解决不了,老师可以远程帮忙解决下吗?现在就剩这一个问题了。我部署的是个人博客,现在已经部署上去了,不过有的用的是mock数据。
    回复 有任何疑惑可以回复我~ 2018-01-23 09:32:02
  • 提问者 我很爱大圆脸 #2
    谢谢老师
    回复 有任何疑惑可以回复我~ 2018-01-23 09:33:29
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信