记录一下这个bug,因为第一次使用lnmp框架搭建网站配置linux服务器的时候碰到了这个问题花了时间解决,服务器停机续费后也出现了这个问题,但是没能第一时间想到解决方法,感觉有点在一个坑跌倒两次的感觉,今天做一次记录。
问题是:
服务器使用的是lnmp框架(不熟悉lnmp框架的可以访问https://lnmp.org),用来搭建博客网站。在php、Nginx、mysql都正常启动的情况下,网站不能正常的链接到数据库,会报数据库链接错误 : Connection timed out。
解决方案:
首先我排除了一些可能的错误。
1、mysql的用户名和密码有没有错。
2、阿里云控制台里面的网络和安全中的安全组有没有添加3306端口范围的规则。
如果以上两个都没问题,应该可以通过域名访问到phpmyadmin。
一般访问方法 域名/phpmyadmin。
上面都没问题网站还是不能正常访问的话,很可能就是linux的防火墙问题了,限制了3306端口的访问。阿里云的CentOS 6.8 32位安装的防火墙软件是iptables,用来控制访问系统服务的端口,我这里仅记录一下iptables的设置方法:
1、首先打印一下防火墙做了哪些设置
iptables -L -n
v:显示详细信息,包括每条规则的匹配包数量和匹配字节数
x:在 v 的基础上,禁止自动单位换算(K、M) vps侦探
n:只显示IP地址和端口号,不将ip解析为域名
结果如下:
可以看到,3306端口是DROP状态,是不允许访问的
2、我们删除掉这条对3306端口的限制规则,再配置一个新的允许访问的规则
删除:
将所有iptables以序号标记打印出来
iptables -L -n --line-numbers
出现结果:
可以看到3306端口是序号6
再执行:
iptables -D INPUT 6
就可以删除掉这条规则了。
再添加一条新的规则
执行:
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
就允许通过3306访问服务器的mysql服务了。
此时再访问网站,应该就正常了。
如果想了解更多的iptables的命令,看一下这篇文章
https://www.vpser.net/security/linux-iptables.html
就写这么多了……