部署好mongodb服务器后,在客户端安装好php的mongodb扩展,用程序连接mongodb服务器出错:no route to host。
搜索了差不多一天的时候都没有相关的解决方法。最后在mongodb服务器上停掉防火墙,再访问一切正常了!
如果不想停止防火墙,只需在防火墙添加一条规则即可。
添加规则的方法如下:
先停止防火墙 service iptables stop 然后修改 /etc/sysconfig/iptables
添加 -A INPUT -m state --state NEW -m tcp -p tcp --dport 10001 -j ACCEPT
这里注意的是需要注意的是添加的位置必须在
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
上方
后来换服务器了,按照之前的安装,一切正常。最后在客户端服务器通过PHP程序远程连接mongodb时出现如下错误:
Caught exception: Failed to connect to: xxx.xxx.xxx.xxx:27017: Connection refused
在网上搜索了一通,也没见其它人使用mongodb有遇到相同的问题。
后来不知是受了那篇文章的启发,修改mongodb.conf文件里面的IP,将里面的bind_ip:127.0.0.1,改成外网IP。这样是可以
正常连接了,但我想用正常的命令(db.shutdownServer)关闭mongo时却有错误提示,好像是说什么不是 localhost 吧。
受文章《mongodb 远程访问配置》启发,将bind_ip改成 0.0.0.0 后,一切终于正常了。
PS:
严格来说,0.0.0.0已经不是一个真正的意义上的IP地址了。它表示 的是这样一个集合:所以不清楚的主机和目的的网络。这里的“不清楚”是指在本地的路由表里没有特定条目指明如何到达。对本机来说,它就的一个“收容所”, 所以不认识的“三 无”人员,一律送进去。如果你在网络设置中设置了缺省网关,那么Windows系统会自动产生一个目的地址为0.0.0.0的缺省路由。
/ 2014-05-30 update /
后来换服务器了,用yum安装的。可能是安装的版本比较新原因,不用再配置bind_ip,默认是监听所有的IP的。