PouchDB - 尝试连接CouchDB时“数据库遇到未知错误”

时间:2015-02-19 14:37:43

标签: ubuntu couchdb pouchdb

我正在尝试设置pouchDB同步,但是我无法远程连接到couchDB ...我已经跟着these instructions from couchDB安装在我的ubunto服务器上 - 这是用laravel forge管理的......虽然这个项目本身没有使用laravel(只是一个常规的html文件)

所有内容都已正确安装,包含所有预期的响应

如果我跑:curl localhost:5984

我得到:{"couchdb":"Welcome","uuid":"*******************","version":"1.6.1","vendor":{"version":"14.04","name":"Ubuntu"}}

我跑了:npm install -g add-cors-to-couchdbadd-cors-to-couchdb

我没有得到任何跨源错误

但如果我尝试去http://178.xx.xxx.xxx:5984/_utils,它就会挂起来?

使用以下代码时:

var localdb = new PouchDB('messages');
var remotedb = new PouchDB('http://178.xx.xx.xx:5984/messages');

localdb.sync(remotedb, {live: true});

我明白了:

Unhandled promise rejection 

Promise 
{
    [[PromiseStatus]]: "rejected", 
    [[PromiseValue]]: o
}
__proto__: Promise
[[PromiseStatus]]: "rejected"
[[PromiseValue]]: o
    error: true
    message: "Database encountered an unknown error"
    name: "unknown_error"
    status: 500

(取自铬)

为什么我收到此错误的任何想法?这似乎是超时.....任何想法为什么会这样做?

如果我使用:ssh -L5984:127.0.0.1:5984 forge@178.xx.xx.xx

然后转到http://localhost:5984/_utils/它工作正常

同样用http://localhost:5984/messages替换远程地址也会使同步工作

使用此功能时,我还使用“验证安装”检查了所有内容是否已正确安装,并返回“您的安装看起来很好。放松时间。”

奇怪!

所有人都有任何想法,为什么我无法远程连接到couchDB?

非常感谢任何帮助!

谢谢, 戴夫

1 个答案:

答案 0 :(得分:3)

听起来您需要修改CouchDB的local.ini文件,以允许从更多IP访问,而不仅仅是localhost。

检查您的local.ini以了解此部分:

[httpd]
;port = 5984
;bind_address = 127.0.0.1

将其更改为:

[httpd]
;port = 5984
bind_address = 0.0.0.0

编辑:更简单的解决方案是设置Nginx / Apache代理以将http://example.com/couchdb路由到localhost:5984。这是我使用的Nginx配置:

location /couchdb {
  rewrite /couchdb(.*) $1 break;
  proxy_pass http://127.0.0.1:5984;
  proxy_redirect off;
  proxy_buffering off;
  proxy_set_header Host $host;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}