Posted in: Website/Blog

服务器以及 wordpress 网站受灾重建

今年开年时遇到了地震、飞机撞击等灾难,我这个站点也遇到了灾难:因为升级导致服务器坏了,所以也要搞“灾后重建”。

因 CentOS 升级导致机器毁灭

众所周知 CentOS 7 在今年 6 月底就停止支持了,我原先的设想是先切换到 Oracle Linux 7,然后用 leapp 升级到 Oracle Linux 8。第一步 CentOS 7 切换到 Oracle Linux 7 成功了,但是第二步 Oracle Linux 7 升级到 Oracle Linux 8 失败了,重启之后无法开机。因此只好重新新建一个 VPS 了,这次选择了 Ubuntu 22.04 LTS。

MySQL 数据库问题

虽然原来的 VPS 系统坏了,但是硬盘可以挂载到新的 VPS 上,文件都能复制出来。可是 MySQL 数据库只剩下了二进制文件,版本还不一样,无法还原。最后采用的是曲线救国的 ManageWP 方案。

以前我曾经找过 wordpress 增量备份插件但一直没有合适的(全部都很贵)。最后选择了 ManageWP 的免费每月底备份方案。恰好出问题的是月初,上个月底有备份,可以下载备份好的 SQL 文件,只是损失月初的几条评论而已,还算 OK 了。代价是需要付 0.1 美元。

可惜 ManageWP 备份结果里面不支持 emoji 字符,偏偏我又是 emoji 字符爱好者。所有的 emoji 字符都被替换成了四个问号。对于文章里面的 emoji 字符我自己进行了手动重写,对于评论里面的 emoji 字符只好保留了乱码。抱歉🙇

我❤️ emoji

插件问题

刚重新安装好之后就出现诡异的现象:后台能够进去,前端却始终显示:您的站点遇到了一个严重错误。后来开启了 WP_DEBUG 之后,就能显示问题的细节了,代码来自于一个插件。试着删除这个插件就好了。

文件权限问题

我知道 http 进程会往 wp-content 目录里面写东西,所以我已经把 wp-content 目录的所有者设置成了 nobody 和 nogroup。结果在后台尝试删除插件时出现了诡异的提示:操作正在请求 FTP 权限,请输入 FTP 的用户名和密码。

OMG😦!我从来没记得现在搭 wordpress 还需要设置 FTP 啊!谁都知道 FTP 极不安全,现在 Oracle VPS 都是 ssh-key 认证,都不用密码的。后来网上搜了好久才发现问题出在:只设置 wp-content 目录的权限是不够的,要设置整个 html 目录为 http 进程可写入才行。

虽然有点奇怪,但是想想也有道理,如果其他文件 http 不可写的话,wordpress 怎么进行后台更新呢?

SSL(HTTPS) 问题

大部分都解决了,却剩下最后一个难以解决的问题:LiteSpeed Cache 爬虫一直不正常,总是显示全部为蓝色(即 missing),虽然我保证服务器的 IP 地址设置是正确的。

wordpress forum 里面 和开发者沟通了好几轮才知道,原来问题出在 CloudFlare 上。自从博客被墙之后,我就直接开启了 CloudFlare。因为 CloudFlare 自带 SSL(HTTPS),所以这次重建时我就没有在源服务器上搭建 HTTPS(因为麻烦啊,而且没必要)。然而恰恰就是那么巧,LiteSpeed Cache 爬虫是需要绕过 CF 直接在本地爬 URL 的,所以还是需要搭建 HTTPS。方法依旧依照之前的 certbot 文章。

友情链接问题(感谢某网友反馈)

打开友情链接页面直接卡死。查询服务器 log 发现

[80739] [T0] [xxx.xxx.xxx.xxx:41496-1#blog] [STDERR] PHP Warning: getimagesize(https://dn-qiniu-avatar.qbox.me/avatar/5ba655c9abcbd5f81a3ce0d1a88dc568): Failed to open stream: Connection timed out in /xxx/xxx/xxx/blog/html/wp-content/plugins/litespeed-cache/src/media.cls.php on line 734\n

把这个信息拿到网上搜索,发现原来是 php 版本太新的问题。解决方法是加入 litespeed_media_ignore_remote_missing_sizes 这个 filter。

备份问题

Oracle VPS 是免费的,好像没有官方的快照功能。这次因为没有备份吃了苦头(ManageWP 备份不方便),所以接下去如何搞增量备份是个问题。初步的想法是建一个新的实例,两者之间用 rsync 进行同步(因为是 Oracle 内网,同步很快。MySQL 数据库也可以利用 Percona-XtraBackup 转成文件之后进行增量备份)。这个内容后面再尝试。现在才发现,虽然这个博客写了 14 年,但是 MySQL 完整地 dump 一次才 2 MB (gzip)左右,搞什么增量备份啊!于是改成了每天 cron 任务完整 dump 一次。至于其他文件不用担心,Oracle 硬盘一直都在不会坏。

我很重视与大家的留言互动,不仅是为了维持关系,更重要的是留言也是测试数据写入和消息发送的好手段!欢迎大家多来吼吼!

Comments (34) on "服务器以及 wordpress 网站受灾重建"

  1. Google Chrome 120.0.0.0 Android 10

    还是ubuntu用得比较习惯🥰🥰🥰迁移的确是个大问题。重装过好几次系统了😭😭😭,幸亏有全盘备份和Linux基于文件的系统设计。如果是windows注册表绝对恢复不过来。

    1. Safari 17.2.1 Mac OS X  10.15.7

      我后来发现,不用全盘备份也没事,oracle VPS 就算系统坏了硬盘肯定还在,读取普通文件是没有问题的(这次也是如此),只要定期备份 mysql 数据库就好了。而我这个博客虽然写了十几年,mysql 完整的备份压缩后才 2MB,每天 cron 定时备份毫无压力,刚才已经设置了。

  2. Safari 17.2 iPhone iOS 17.2.1

    对于增量备份,我个人有个想法,不知道恰当否:用wp的插件,如backwpup,把xml文件备份到其他地方,如需恢复,可以在后台通过导入的方式来恢复,如果有重复数据则不会重复导入,不知道算不算增量备份😂缺点就是,插件和主题配置这些不会被写入xml中。对于后台文件也可以使用这个插件备份。如果博主也想这样弄,建议是先去tastewp这个网站开一个临时博客,测试完以后再用于生产环境。另外,我推荐一个almalinux系统,它是centos的继任者。

    1. Safari 17.2.1 Mac OS X  10.15.7

      谢谢提醒。其实 oracle 的 vps 就算挂掉,文件还是都能取出来。所以我现在备份 mysql 数据库就可以了,虽然文章不少,但数据库却一点也不大。

      1. Safari 17.2.1 Mac OS X  10.15.7

        我以为那个图标只是装饰作用(防垃圾插件带来的),没想到还有这种功能

    1. Safari 17.2.1 Mac OS X  10.15.7

      我这种被墙掉的简体中文网站不太可能出现什么流量超上限的,一般都是无人问津。

  3. Google Chrome 95.0.0.0 Android 10

    emoji本質上也是一個unicode字符,很多導出數據庫的服務,都沒有支持到4字節的字符,就包括中文ext-b往後的字符也都會變成????。

    所以為了保證包括表情在內的字符能正常保留,我一般都自己導出。據悉是較新的mysql才支持直接把emoji當一般字符寫入,以前的不支持。

    在2022年11月,我也經歷過一次emoji變????,真是災難啊。當時也是需要回溯幾日。還有幾位朋友那個時段在評論區出沒。我的解決辦法是將不同版本的數據表合併。

    1. Safari 17.2.1 Mac OS X  10.15.7

      感謝分享。我現在用本地的 mysqldump 就沒問題,裡面正常容納 emoji。

  4. Google Chrome 120.0.0.0 Mac OS X  10.15.7

    文件权限用chown 命令即可。想备份的话定期手动导出下数据库就行了。

  5. Microsoft Edge 120.0.0.0 Windows 10 x64 Edition

    升级以前一定要先备份,一定要备份。
    【操作正在请求 FTP 权限,请输入 FTP 的用户名和密码。】 这个一般是权限问题,一个命令就可以解决 chown -R www:www /网站文件目录

    1. Safari 17.2.1 Mac OS X  10.15.7

      是的,备份很重要。

      我是 litespeed 服务器,所以用户名不是 www,是 nobody:nogroup

      1. Firefox 121.0 Windows 10 x64 Edition

        之前一直都是abc的,但是前阵子本着再试下的心态,结果申请成功了。
        这段时间测试了很久,比我花钱购买测试用的CC速度还要快一点。
        不知为什么,验证码我刷新多次才能回复。

  6. Firefox 115.0 Windows 10

    甲骨文就是怕删号,其它还好,我用的Hetzner ARM也行,除了日本过去延迟有点高 🙁 ,好像绕新加坡

    1. Safari 17.2.1 Mac OS X  10.15.7

      是的,最重要的是 mysql 备份,mysql 的二进制文件不能直接用于别处。

  7. Firefox 121.0 Windows 10 x64 Edition

    升级前、折腾前备份、备份、备份……重要的事情说无数遍。数据库最好是每天自动备份,全站文件每星期或者每月。我个人是直接用另外一台vps来做同步备份。

    1. Safari 17.2.1 Mac OS X  10.15.7

      以前误以为 mysql 全站备份会很大,后来才发现其实很小,gzip 压缩之后都不到 2MB。

      1. Firefox 121.0 Windows 10 x64 Edition

        对于个人博客来说,几年群发文章都没事。毕竟一些小公司7、8年(每天5~10篇)才到1G(未压缩),1G压缩后才100~200M

  8. Google Chrome 120.0.0.0 Windows 10 x64 Edition

    原来是服务器崩了,前端时间想上来看看博主有没有更新新文章的,发现无法访问了,还以为是换域名了,本来想去v2留言询问的,结果一忙起来就忘了 😆

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注