Wish you a happy day~(❁´◡`❁)

阿里云wordpress站点数据库连接错误的解决方案

[ 进击的程序媛 ] zoey 1636次浏览 10个评论

最近我的网站频繁出现建立数据库连接时错误的毛病,一开始没觉得自己的小网站没什么流量不会被攻击,直接重启ECS了事,后来不胜其烦,决定斩草除根。

之前跟wp博主-蛋蛋同志共同解决过这种问题,所以这次就比较得心应手。比较干脆的做法是,删除www/phpwind目录下面的xmlrpc.php文件,然后重启一下ECS,完美!详情请移步->http://www.luoxiao123.cn/1443-2.html   这篇文章是15年写的,对于现在的wp版本来说直接删掉并不碍事,因为这个文件已经没有用了。

以下是之前解决这个问题时的探索过程:(转自www.antdlx.com)


前言:

在2.17日早上登录自己的网站的时候发现打不开了,只留下一个“服务器连接错误”的提示,于是就开始了漫长的修复网站的过程。走了很多弯路导致2天才修好,在这里给大家说一下,帮助同样处境的人少走些弯路。在网站出了问题之后我首先打开了阿里云的控制台,然后重启了服务器,通常情况下这样做就可以了,但是这次不行。由于对Ubuntu和网站建设不熟悉,所以只能 盲目的初始化系统,每次初始化+ 恢复环境差不多要90分钟,很耗费时间和精力,还没有什么预期的效果。     所以给大家的建议就是遇到问题分析问题,恢复系统实乃下下之策。

一、特征

我的网站的特征就是每次重启之后,没过多久就会非常的卡顿,爆内存,然后mysql服务因为没有内存而被kill无法打开。

二、备份和恢复

网站遇到问题之后最先想到的就应该是数据备份。如果平常有备份的习惯那便是极好的。在mysql服务可以开启的情况下我们可以正常的备份(不知道怎么备份请自行查阅相关资料,主要就是wordpress里面工具->导出和数据库的导出)。刚刚也说过了,我的服务器重启不到半分钟mysql就因为爆内存而死掉了,在mysql无法开启的情况下如何备份呢?通过data文件夹!

2.1、首先一定要确保mysql服务处于关闭状态。不放心可以在xshell中手动输入

2.2、找到data目录并通过ftp工具下载到本机进行储存备份。data通常就在mysql的安装目录。我的目录是“/alidata/server/mysql-5.6.21/data”。将整个data复制即可

2.3、然后把www文件夹下的wordpress相关代码全部复制到本地进行备份

ps:数据恢复:找到恢复后的系统的data文件夹,将你需要恢复的数据库和“ibdata1”文件覆盖即可

wp31

如上图,加入我要恢复之前的test数据库,那么只需要将test和ibdata1覆盖到现在的目录下即可。但是在执行这些操作前先备份现在系统的test(没有就算了)和ibdata1,防止发生意外

wordpress的恢复更简单,直接把刚刚保存下的代码重新恢复到www目录下即可

 

三、查出问题

在重装系统后情况并没有改善,于是我只能开始手动查找问题

首先要传授一点人生的经验:

阿里云ECS,Ubuntu系统,1G内存,20G磁盘,承受一个wordpress(访问量不是很大的话)是没有问题的,正常运行内存大约900M左右,如果你开了swap就更没问题了。

先看log,不要盲目的去修改mysql、Apache或者其他的什么配置文件以试图降低他们的内存。

3.1、首先查看当前系统的内存使用情况

wp32

发现真的是爆内存了。。。

ps:这里的swap可以理解成虚拟内存。默认是没有的,可以自行搜索资料建立合适的大小。swap添加教程

3.2、使用top指令查看到底是什么占用了这么多的内存

wp33

被无休止的httpd爆了内存。每一个请求都对应着一个httpd,httpd又跟Apache有关。那么接下来当然是要看log

3.3、找到Apache的log,我的在“/alidata/log/httpd”,我打开里面的“phpwind.log”,可以看到下图所示的东西

wp34

可以看到,全部都是185.130.5.209或者247通过xmlrpc.php发来的post请求。那么xmlrpc.php是什么呢?是wordpress自带的一个文件,这个文件带有接口漏洞,可以给黑客提供暴力破解wordpress密码的操作漏洞。

那现在就基本明白了,大致就是ip为185.130.5.209和247的人通过那个漏洞暴力破解我的密码,导致了大量并发http请求,产生大量httpd,导致系统内存耗尽宕机。

 

四、解决方案

4.1、为了应急,我们可以简单的领Apache拒绝那两个ip的访问,使用iptables即可。使用xshell输入:

xxx替换成相应的ip即可。然后重启httpd服务

4.2、 为了安全起见,我们可以删除掉“xmlrpc.php”或者下载相应的安全插件

4.3、安装云锁。去官网下载云锁,一个windows本地版一个linux版本,linux版本解压,使用ftp工具上传到服务器上安装即可,windows本地版直接安装即可。增加服务器安全性

五、恢复

mysql和wordpress的恢复在前面已经说到了。

这时我们再来看一下正常的系统

wp45

wp46

这才是正常的。

 

 


喜欢 (1)or分享 (0)