blog的wordpress的/var/www/html持久化出现了意外的丢失,在工作之后,很长一段时间,没有经历去修复这些问题,导致实际上很长一段时间(半年左右),blog是缺席的,新的一年,或许应该缝缝补补这些问题了。

目前服务器恰巧只有这一个最核心的服务丢失了,检查下来,媒体站、云盘等资源都还活着。需要操作的事情如下:

  1. 修复blog
  2. 备份配置类的持久化数据
  3. 升级kubernetes
  4. 升级kubersphere面板

对于备份,可以使用longhorn的备份方案存储在对象存储中,在此方案实施前,应考虑kubectl cp 命令保存在主机中这样对于homelab更简单实用的方案

目前blog的mysql数据仍存在,我需要创建一个新的wordpress,理论上这只会丢失部分皮肤数据,以及媒体库。

顺带一提,很久没有做这件事情了,发现kubernetes官网上面已经更新了教程:

示例:使用持久卷部署 WordPress 和 MySQL | Kubernetes

但是在kubernetes中还存在一个问题就是:wordpress启动时会确认url配置,但是你需要进入wordpress才能调整这个参数。而且很可能,wp-admin等配置中的url和数据库不匹配,出现了其他的问题。

进入数据库,查看到wordpress的url设置:

mysql> SELECT option_name, option_value
    -> FROM wp_options
    -> WHERE option_name IN ('siteurl', 'home');
+-------------+-----------------------------+
| option_name | option_value                |
+-------------+-----------------------------+
| home        | https://blog.maoyulong.club |
| siteurl     | https://blog.maoyulong.club |
+-------------+-----------------------------+
2 rows in set (0.00 sec)

这个实际上可以通过wp-cli来解决,但是官方镜像是没有安装的,我们直接修改数据库和配置文件;

UPDATE wp_options 
SET option_value = 'http://blog.maoyulong.club:30080' 
WHERE option_name IN ('siteurl', 'home');

配置文件作如下修改,在wp-config.php 里面插入如下语句:

// 强制设置站点URL
define('WP_HOME', 'http://<NODE_IP>:<NODE_PORT>');
define('WP_SITEURL', 'http://<NODE_IP>:<NODE_PORT>');

此时重建容器,已经可以访问了,但是会出现空白页面

但是通过f12我们发现,头部信息是完整的,但是body没有实际内容,根据此前丢失的数据来看,疑似是主题文件的丢失,我们尝试在数据库恢复默认主题。

查看/var/www/html/wp-content/themes 确认默认主题名称,有以下三个:

root@wrodpress-5f87d49fb6-bbhwm:/var/www/html/wp-content/themes# ls
index.php  twentytwenty  twentytwentyone  twentytwentytwo

更新数据库:

UPDATE wp_options 
SET option_value = 'twentytwentytwo' 
WHERE option_name IN ('template', 'stylesheet');

UPDATE wp_options 
SET option_value = 'Twenty Twenty-Two' 
WHERE option_name = 'current_theme';

之前的主题找不到了,先临时用sakura顶岗吧= =

另:此后一段时间blog的图片库暂时处于丢失状态,影响观感的封面等将会逐步补齐


维修中。。。