问题描述
更新:我现在可以正常工作了。 Jim Zajkowski的回答帮助我检测到/etc/init.d/couchdb重新启动调用实际上并未重新启动实例。在我手动终止了CouchDB进程并启动了一个新实例之后,它选择了所需的BindAddress更改。
我已经通过安装了CouchDB
aptitude install couchdb
在我的服务器上,我可以通过
telnet localhost 5984
并执行RESTful命令。当我尝试从网络上的另一台计算机或网络外部的计算机访问服务器时,出现“连接已重置”错误。我已经在路由器上设置了端口转发,并且可以通过Apache,Tomcat,SSH等访问该服务器。
我是Linux /Ubuntu的新手,所以不确定是否有默认防火墙阻止连接,所以我运行了:
iptables -A INPUT -p tcp –dport 5984 -j ACCEPT
但这没有帮助。
这是运行iptables -L -n -v的转储
Chain INPUT (policy ACCEPT 2121K packets, 1319M bytes)
pkts bytes target prot opt in out source destination
70 3864 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:5984
9 1647 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 1708K packets, 1136M bytes)
pkts bytes target prot opt in out source destination
我认为显示为5984传输的字节归因于我的本地主机连接。
这是运行netstat -an的转储。 grep 5984
tcp 0 0 127.0.0.1:5984 0.0.0.0:* LISTEN
我将ouch.ini配置为具有”BindAddress=0.0.0.0″并重新启动,因此它应该在所有接口上进行监听。当我运行“ sudo /etc/init.d/couchdb stop”然后运行netstat时,我仍然看到上面的条目。看起来CouchDB实际上并没有停止。这可能解释了我的问题,因为这意味着可能意味着CouchDB从未真正重启过,也从未获得过BindAddress更改。
我手动终止了CouchDB进程,然后再次启动了它。现在netstat显示:
tcp 0 0 127.0.0.1:5984 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:5984 127.0.0.1:35366 TIME_WAIT
即使从LAN上的另一台计算机,我仍然无法连接。
最佳方案
netstat -an | grep 5984
说什么?它说127.0.0.1:5984
还是*:5984
吗?如果它是127.0.0.1
,则需要将ouchdb设置为侦听所有接口。
次佳方案
您必须在/etc/couchdb/default.ini中更改bind_address。然后重新启动服务,然后重试。
第三种方案
我注意到,为了使其正常工作,您必须出于某种原因手动终止正在运行的erlang进程。 ps ax | grep beam
应该显示错误过程,您应该在输出中某处的0:00 /usr/lib/erlang/erts
中得到一些东西。如果您取消了此过程,然后运行/etc/init.d/couchdb restart
,则将加载新的配置文件。
第四种方案
在家用PC /Mac上,运行以下命令:
ssh -L 5984:localhost:5984 YOUR-SERVER-IP-HERE
接下来在浏览器中打开localhost:5984 /_utils …对我有用
第五种方案
如果您在Futon配置面板中进行更改,则无需执行其他任何操作(重新引导数据库等):
更改默认的bind_address之前:
peter@earth:~/$ netstat -an | grep 5984
tcp 0 0 127.0.0.1:5984 0.0.0.0:* LISTEN
更改为0.0.0.0后:
peter@earth:~/$ netstat -an | grep 5984
tcp 0 0 0.0.0.1:5984 0.0.0.0:* LISTEN
请注意非专家:无法访问您的计算机(通常是您本地网络之外的任何计算机)仍将无法访问您的计算机(CouchDB或其他任何计算机)。