采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
本地服务器下,项目都正常跑通。线上服务器,阿里云网络为专有网络,项目可以部署成功,node服务可以跑起来,不需要链接数据库的接口可以正常请求,但是需要链接数据库的接口都链接不上,不知道是哪里出了问题。求指导,谢谢,这个问题困扰我很久了。
你部署到服务器上是用 pm2 部署的吧,你 ssh 到服务器上,用 pm2 logs 打开实时日志,然后重新从本地部署下,访问下网页,看下服务器的 log 是什么,如果连不上,这里就一定会报错,报错信息就能给出线索,现在依然不确定是哪个问题导致的
你在服务器上建一个文件及,然后里面装上 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,看看有没有报错,是否能链接成功
老师,还是连接不上啊,最近公司一直在忙项目,也没时间来看,今天刚来看看,把您的代码复制之后在服务器上跑不通,dburl是使用我的数据库权限账号的拼成的链接。我博客项目的数据库在服务器上手动是能启动的,本地服务器下链接数据库也都没问题,就是部署上去之后链接不到数据库。老师什么时候有时间能帮忙远程指导下吗?现在自己实在是搞不动了,这门课的学习就剩最后这一个点没有解决了,谢谢啦
有任何报错的提示么,可以把提示放出来,我们看一下,你 mongo 可以连上,程序连不上,初步推测是代码问题,或者是 mongoose 特定版本的链接(配置不同)问题
老师,我贴了我项目的部分代码,链接数据库的代码和请求接口时候的代码,由于合理无法放图片,我自己写了一个链接,您有时间帮忙看下,看有什么问题吗?谢谢 https://segmentfault.com/n/1330000013143670
还有第四个,是阿里云后台的安全组这里可能也要配置下端口的访问权限
老师,这个我在阿里云的安全组里配置好访问权限了
那应该是跟数据库这里有关系,如下几种可能:
数据库没有成功开启服务,导致连不上
服务器的端口没有在防火墙这里配置好访问权限,导致连不上
链接数据库的 url 里面的参数组合可能不合法,导致连不上
可以先到服务器上,命令行连接数据库试试看,类似这样子:
mongo --port 20517 moveha-june-online -u muhaha_runner -p fxxkuHou233$
服务器上执行mongo --port xxxx 可以启动数据库,而且通过权限账号都可以查看导到线上服务器的表,url里面写的就是数据库配置的权限账号。 另外防火墙也进行了配置呀,我再看看哪里不对。 另外我想问一下老师,这个和阿里云的专有网络有关系吗? 如果实在解决不了,老师可以远程帮忙解决下吗?现在就剩这一个问题了。我部署的是个人博客,现在已经部署上去了,不过有的用的是mock数据。
谢谢老师
登录后可查看更多问答,登录/注册
阿里云部署Node.js+MongoDB+Nginx的应用项目,打通全栈
1.1k 14
1.9k 12
1.9k 7
1.1k 7
3.5k 7