在服务器上部署Redis集群、mysql等服务时,没有经验的程序员们经常会按照自己在本地虚拟机里的配置一样,但总会代码报错-连接超时,
百般无解,一样的配置,为什么部署在服务器上就不行了呢?
首先,本地和线上有几点区别:
1. IP地址
本地虚拟机IP是由此电脑的局域网虚拟划分的,在局域网内是可以直接访问的
而服务器不同,他是一个真实的IP地址(公网ip)里面的一个Linux虚拟机,
这个虚拟机也是由服务器自己的局域网划分的一个虚拟IP(私网)
2.防火墙
本地虚拟机中,你可以关闭防火墙来达到连接,或者开放对应端口这两种方式
服务器上则需要多加一项,在公网开放对应端口以后,在Linux上也开放端口才行
附上命令和截图:
centos6:
开放端口80,22,3306,8080命令
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
保存之前输入已开放端口号语句的命令
/etc/rc.d/init.d/iptables save
查看打开端口命令
/etc/init.d/iptables status
centos7:
开启端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
查询端口号80 是否开启:
firewall-cmd --query-port=80/tcp
重启防火墙:
firewall-cmd --reload
查询有哪些端口是开启的:
firewall-cmd --list-port