备份WP到github
怕站点由于不可抗拒的因素挂掉,因此将wordpress导出为静态页面,并且备份到github pages上面,作为备份站点源,如果网站挂掉,还能够继续访问。
安装插件
需要用到这个Simply Static插件,将wordpress转化为静态页面 。pro版本的直接集成github插件,能够设置一下就自动导入到github pages,可惜我看了一下,一年要99刀,永久要499刀,这也太tm贵了,因此贫穷的我们只能自己想办法了。
安装完后,需要设置一下,在Simply Static插件的settings-general设置一下Delivery Method,选择Local Directory,即保存静态界面到指定的目录,目录需要提前创建好。

在settings-advance里面设置一下Temporary Files Directory的位置,不要放在wordpress路径下面,这样子使用UpdraftPlus等插件备份的时候会把这些静态文件也打包进去,会使得体积变大。
其他设置就按默认的。
创建Github仓库
首先要有个github账户,这个应该都能解决(gitee因为开通gitee pages需要实名认证,正好最近国庆,审核停了,并且因为免费版不支持自定义域名,所以后续有需求再说)。
创建一个仓库,那么我直接创建了一个自己域名的项目仓库。
生成静态文件
在生成静态文件之前,有几点需要注意:
- 文章的url是中文的会有问题,因为他生成的url的是经过编码的,不是中文的,所以不能直接查看。
- 如果你的url是英文的,那么就没有上述问题,但是涉及的面比较广,文章的url、说说的url、分类的url、标签的url等等全部都要改成英文的,比较麻烦。
虽然有上述的问题,但我找到能够曲线救国的方式,就是如果你的文章里面有纯中文的引用,那么它生成静态文件的时候就会有中文的目录结构,所以我就单独做了一个站点索引网站,里面都是中文的引用,格式类似这样,里面url的链接一定要中文的!
[站点索引网站](https://szx.life/站点归档索引/)
点击插件的Generate的GENERATE STATIC FILES,过个一两分钟就能生成静态文件了。
这样子就会有两份重复的目录生成,一个是经过编码的url,一个是中文的目录,如下图所示。

经过我的探索,发现可以不生成%文件,只需要在settings-exclude里面添加URLs to Exclude,可以把含有%的网站去除掉,经过此操作,页面直接砍了不少。但注意了,站点归档索引的别名一定是要英文的,可以在WP的文章快速编辑里面设置,否则这篇文章也被忽略了,就没有中文url了。
# 去除说说下面的详情界面,因为说说有个index.html就行了,不用查看详细
https://szx.life/shuoshuo/[^\s]*/
# 去除tag的界面,因为tag太多了,导致很多界面都是tag的,但正经人谁看tag
https://szx.life/tag/[^\s]*
# 去除 202*年某月的具体某日界面,只保留月份的就行了
https://szx.life/202\d/\d\d/\d\d
# 去除所有带有%号的界面,但这步需要谨慎
https://szx.life/.*[%].*
在之前设置的Local Directory目录下,使用以下的命令:
# 初始化git
git init
# 删除所有编码过的url目录,更新:去除
# rm -rf *%*
# git添加所有文件
git add .
# git提交
git commit -m "1"
# 切换到main分支
git branch -M main
# 添加远程仓库,这里改为你自己的仓库,这里的github是仓库的别名,可以自定义取别的
git remote add github https://github.com/szx741/szx.life.git
# 推送main分支到github仓库
git push -u github main
设置域名
github pages可以设置自定义的域名,在settings-pages里面,项目的默认地址是:你的名字.github.io/你的项目名称。
当然我们要设置自己的域名了,因为有wordpress的人肯定有个域名了,国内备案过的域名,三级域名不需要再次备案了。例如我的域名szx.life,那么github.szx.life就不需要备案了,直接解析就能用了。首先先去你的dns域名解析,加入添加记录,主机记录添加要的前缀,我的前缀就是github,记录类型为CNAME,即解析到域名,记录值为github pages页面提供的,我的是szx741.github.io.,过几分钟后就会生效了,然后去github pages填写刚才域名就行了,如下图所示。

之后就能查看github.szx.life这个域名,看到生成的静态网站了。恭喜,到这你就成功了。
后续更新
由于github设置了自定义的域名,就会自动生成一个CNAME的文件,所以本地需要拉取一下。
git pull github main
接下来更新就差不多,点击插件生成静态文件,然后操作如下。
cd /home/ubuntu/code/backup_szx_life
# 每次生成静态文件都会重复生成,所以每次都要重新删除
#rm -rf *%*
# 可选,由于镜像点和源站点没有区别,为了区别,我把我的头像文件给替换了,换成黄四郎的“糟了,我成替身了”,这样就能区别两个站点,也算是一个彩蛋了。
cp huangsilang.webp wp-content/uploads/2021/07/huangsilang.webp
sed -i s/huangsilang.webp/huangsilang.webp/g `grep -rl huangsilang.webp --include="*.html" ./`
git add .
# 提交,为提交当天的日期
git commit -m "$(date +%Y-%m-%d)"
# 推送到远程仓库,如果有必要的话,可以加个-f强制推送
git push -u github main
CDN热备源站配置
CDN还能设置热备源站,以防万一源站崩了,就能够使用我们这个静态备份站点,这才算是达到了我们一开始真正的目的。源站地址和回源HOST都填写github.szx.life(大概,毕竟我这样子设置没问题)。

然后你可以停止自己服务器上的nginx,这样子源站点就算崩了,然后他会确实使用github.szx.life这个镜像点,但是显示的域名还是szx.life,所以如果你没有做替身攻击的话(滑稽),很难区别出两者,甚至可以说几乎一模一样。
结语
ok,到此就全部完成了操作,非常的amazing啊,这个方法是我自己一个人琢磨出来的,如有雷同,也很正常,就是基操罢了。不过中文url那个还真是我观察出来的,因为我有些文章引用了另一篇文章,所以只有个别几个才会有中文文件夹,百思不得其解,最后终于被我观察出来了,哈哈哈。
这个方法呢,有几个缺点:
- 需要手动备份,不是自动化的备份。
- 添加了新的文章,需要及时添加链接到归档索引,否则生成的静态文章点击就是404。
- 插件不是从本地站点提取的网页信息,而是实打实的访问szx.life域名来提取所有的网页,那么我的CDN流量就会实打实的上去,几十M甚至上百M,非常的伤。一旦文章多起来的话,这个问题非常的蛋疼,可能需要关闭掉CDN,然后再生成,但越搞越麻烦。流量问题目前为止还不是大问题,因为我CDN流量还挺多的,而且没人访问我的网站,所以自己算一下什么时候进行一次备份就行了,可能两三周?或者文章发了10篇左右的时候?还得看自己的备份策略。
Gitee设置
gitee实名认证通过了,试一试gitee pages怎么样
# 添加gitee的仓库
git remote add origin https://gitee.com/xaotuman/szx.life.git
# 推送到gitee仓库
git push -u origin main
在gitee仓库的服务选择gitee pages,部署分支设置一下,我的是main分支,部署目录不填,强制使用HTTPS,然后部署。
但是由于Gitee pages个人不能更换域名,所以就会带有仓库名称,非常的蛋疼,例如我的:
https://xaotuman.gitee.io/szx.life
这时候要去插件的settings更改Destination URLs,使用相对路径 /szx.life/ ,这样子应该就能够访问了,但是我懒得弄了,毕竟github能更换域名,而且gitee pages也不会被百度收录。如果对网速要求比较严,或者github又间接性被墙,那么可以考虑换回到gitee上面。
已经删除了仓库。
git remote rm origin




