rca*_*ell 28 linux ubuntu port-forwarding couchdb
更新:我现在开始工作了。Jim Zajkowski 的回答帮助我检测到我的/etc/init.d/couchdb重启调用实际上并未重启实例。在我手动终止 CouchDB 进程并启动一个新实例后,它获取了所需的 BindAddress 更改。
我已经通过以下方式安装了 CouchDB
aptitude 安装沙发数据库
从我的服务器,我可以通过连接
远程登录本地主机 5984
并执行 RESTful 命令。当我尝试从我们网络上的另一台机器或我们网络外部的一台机器访问服务器时,我收到一个The connection was reset错误。我已经在路由器上设置了端口转发,否则可以通过 Apache、Tomcat、SSH 等访问服务器。
我是 Linux/Ubuntu 的新手,所以我不确定是否有阻止连接的默认防火墙,所以我运行:
iptables -A 输入 -p tcp --dport 5984 -j 接受
但它没有帮助。
这是运行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
Run Code Online (Sandbox Code Playgroud)
我假设显示为5984传输的字节是由于我的本地主机连接。
这是运行netstat -an |的转储 grep 5984
tcp 0 0 127.0.0.1:5984 0.0.0.0:* LISTEN
Run Code Online (Sandbox Code Playgroud)
我将couch.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
Run Code Online (Sandbox Code Playgroud)
我仍然无法连接,即使是从局域网上的另一台机器。
Jim*_*ski 34
什么netstat -an | grep 5984发言权?是说127.0.0.1:5984还是*:5984?如果是127.0.0.1,则需要将 couchdb 设置为侦听所有接口。
小智 16
您必须更改 /etc/couchdb/default.ini 中的 bind_address。然后重新启动服务并重试。
小智 7
我注意到为了使其工作,您必须出于某种原因手动终止正在运行的 erlang 进程。ps ax | grep beam应该揭示erlang过程,你应该0:00 /usr/lib/erlang/erts在输出中的某个地方得到一些东西。如果你杀死这个进程然后运行/etc/init.d/couchdb restart新的配置文件将被加载。