本文记录一次比较困难的网站恢复过程,这个过程遇到了好多个坑,老魏过五关斩六将终于把网站成功运行并正常显示。写下整个过程也是希望这几个问题的解决过程能够对您有帮助,这也是老魏写作的初衷。
网站有错误打不开
事情起因是接到朋友的请求,帮助把网站恢复正常。目前网站的前台、后台都无法正常打开。显示的是英文,大概意思是说 contact-7 插件有错误。那我就去插件目录中修改了这个插件的目录名字,结果又显示 mailChimp 插件错误,再次修改目录名,结果网页还是无法显示。
最后决定恢复前几个月的网站备份算了,反正产品页、新闻页面一直也没有更新,这网站的人该有多懒啊!
尝试手动恢复网站
在 24年5月30日的时候,老魏帮助备份过一次网站,那时候网站还是能正常打开的。使用的是宝塔面板手动备份功能。于是就用这个备份来还原一下,快速让网站恢复正常。
网站备份在 /www/backup/site,数据库备份在 /www/backup/database,按照网站域名进入找压缩包。把网站备份压缩包复制到现在的网站目录,删除原有网站文件,解压缩,再复制粘贴到网站根目录即可。
数据库老魏是在手动备份那里直接导入的,因为一直也没有添加网站内容,所以比较放心。
都还原之后,我们去刷新网站前台页面和后台页面,看看是否正常。结果都可以正常打开了。
网站样式错误
此时发现网站页脚的样式不对,检查后发现使用了 Woodmart主题的核心插件,叫 Woodmart-core,这个插件被禁用了,没有激活按钮,只有删除和升级按钮。
这货和 Woocommerce紧密配合,又得先升级 Woocommerce插件,然后再去升级 Woocommerce database,这几步都是在 WordPress后台操作的,一键升级,然后等待一会就行。
搞定 Woocommerce后,回头再去看 Woodmart-core插件,还是没有激活按钮,这就奇怪了,问题出在哪里了?
后面折腾了好久都没有变化,干脆心一横,我删除掉这个插件目录,去用同类插件的网站复制一份不就解决问题了嘛。
不让复制不让删除
说办就办,复制后过来粘贴,却提示:网站文件复制失败,真是无语了。
不让复制那我就直接删除掉这个插件目录吧,结果提示:删除目录失败。
我立即想到宝塔面板网站防篡改插件,去把插件停掉,重复上述操作,问题依旧,去把防篡改插件删除,重复上述操作,还是不让删除,见鬼了!
询问过这台主机只有宝塔面板,没有安装过其他安全软件,排除了软件对目录的权限限制。
网站目录 a属性
冷静一下,去宝塔面板论坛找了一下,果然有人遇到过这个问题,宝塔面板官方客服回答说:目录存在a属性导致无法删除,a属性只能追加文件不能删除。就这一句话没有提到如何解决,对大佬们来说是小case,对我等小白来说简直是太难了呀。
不过大方向有了, 后面就是如何操作实现的问题了。于是继续在网上搜索相关内容,发现了解决办法。
命令行一波三折
我在宝塔面板的“终端”这个功能,想要进入 ssh命令行,反复提示账号密码错误,逼得我不得不下载了宝塔SSH软件,又跑去腾讯云重置了root密码,修改了ssh端口,这才成功登陆进去。
在命令行输入 cd /www/wwwroot/你的网站目录名/plugin/,这样就定位到了问题网站的插件目录。cd后面是有空格的哟!
先试了下 rm -rf /woodmart-core 的命令,无效。哎,早就知道不会这么容易解决的!
根据宝塔面板官方的解释 woodmart-core 的目录属性被修改,导致无法删除这个目录和下面的文件,即使用 root 用户也无法删除。
先用 lsattr 命令列出有问题的目录的文件夹属性,看看是否有 i 和a 这两个属性
i 属性让文件或目录无法删除、改名、无法写入或添加数据(增删改都不行), root 用户才能设置
a 属性让文件或目录只能增加数据,不能删除更不能修改数据,root 用户才能设置
e 代表该文件为可执行文件
目前我们处于plugin目录中,直接输入 lsattr 回车,就会显示这里面所有插件目录和文件的属性。经过仔细观察,发现 woodmart-core 目录是有 a 属性和 e属性的,也就是只能添加文件,无法被删除。
接下来我们用 chattr命令去除 a属性,然后就能正常被删除了。
# 删除 woodmart-core目录的 a 属性
chattr -a /woodmart-core
#如果还有i属性的话,就删除 woodmart-core目录的 ia 属性
chattr -ia /woodmart-core
# 查看是否移除成功
lsattr /woodmart-core
看到 woodmart-core 已经没有 a 属性了,只剩下 e属性。
见到曙光了
前面经过多次的复制粘贴文件,导致目前的 woodmart-core插件文件有增加,为了尽快恢复网站, 我们去宝塔面板的网站目录中,找到这个插件目录,删除,成功!
再把正常的 woodmart-core 目录复制粘贴过来,也能正常操作了。
再去网站的 WordPress后台>插件,看到 woodmart-core 插件下面出现了久违的激活字样,激动的心颤抖的手,点击激活按钮,激活成功。
去检查网站前台页面的页脚样式,看到恢复正常,就大功告成了!
总结一下
从一开始的网站打不开,到后面的手动恢复网站,目录无法删除,再用命令行去除 a 属性,删除成功,用正常的插件目录替换,激活成功,页脚样式正常显示。
目录出现 a属性的原因,结合之前这个服务器中过病毒的情况,猜测可能是被动添加的 a属性,我们也不去深究了,解决问题就行了。
这一路走来,经历了太多的坑,老魏也是第一次遇到 目录a属性无法删除这种问题,也是又学习到一个知识点。
以上就是今天折腾的内容,希望对您有用。