bye wordpress, hi hexo -- 记一次个人博客的灾难恢复

前情提要: 树莓派搭建个人博客&网络音乐播放系统

灾难发生

2018/1/12晚, 偶然想起家里路由器旁边那个充当博客服务器的红白肥皂盒子树莓派3B已经近2年没备份过了, 于是连接ssh, sudo shutdown 将其关机.
拔掉电源和网线, 摘下cf卡放入读卡器准备在PC上克隆一个全盘镜像, 以备不时之需.

我错误地使用了一个叫做USB Image Tool的工具备份cf卡(后来研究才知道正确的做法是使用SD card copier软件), 备份时间很漫长, 但每次都在中途或快要完成的时候弹出”无法连接到设备”, 试了3次, 最后只好放弃, 把卡塞回树莓派里就当什么都没发生过.

然后树莓派就不正常了, 局域网无法ping通, 接上显示器发现开机时有大量自检信息刷过去, 大意是mmcblk读取时间超时之类的, 大概3分钟后能进入桌面(默认boot to desktop,没有改)或者永久黑屏, 有时重启还出现fdisk磁盘检查的信息. 我知道cf卡应该是被我搞坏了…

好不容易进入到桌面, 我发现只要不进入树莓派的”控制面板”–raspbian config 就不会死机, 此时的系统不识别物理网卡, apache2,mysql服务启动不起来, 已经在挂与未挂的边缘了…

备份wordpress

当务之急是备份网站资料, 备份wordpress只需要完整拷贝前台所有文件(整个/var/www/html文件夹,内含html,js,css,php,上传的图片附件等)以及mysql下的wordpress数据库(所有文章的文本存在这里面)即可

我给树莓派插上一个U盘, 然后
sudo cp /var/www/ /media/sda1 -r
成功了

mysql服务无法启动, 尝试sudo mysql -u root -p时, 始终提示:
Failed to issue method call: Unit mysqld.service failed to load: No such file or directory.

百度查到:
systemctl start mariadb.service
systemctl enable mariadb.service
mysql_secure_installation
成功启动mysql服务

备份wordpress数据库
cd /media/sda1
mysqldump -u root -p wordpress > wordpress.sql
成功了

恢复wordpress并迁移到hexo

备份过程有惊无险, 开始恢复wordpress. 几天后我重新下载了最新的raspbian stretch镜像写入cf卡, 旧cf卡已废, 使用disk genius软件的坏道检测工具查不出有任何问题, 但在pi3上就是无法启动… 只好找另一张卡写入镜像

在这几天里我已经决定将博客从wordpress迁移到hexo, 原因: 相对于wordpress, hexo这种静态博客更适合性能有限的树莓派, wordpress太重了…

Hexo 是一个快速、简洁且高效的博客框架,基于node.js。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。>>官方文档

先在pc上安装xampp软件(一套集成apache, mysql, php, perl的开发环境), 拷贝www/html/文件夹下的内容到c:\xampp\htdoc\下面, 在mysql里新建wordpress数据库, 然后用source命令导入先前备份的wordpress.sql文件. 浏览器访问localhost, 旧博客在pc上复活了.. 登录wordpress后台, 点工具–导出–全部, 得到一个xml文件.

同时, 我在pi上安装了Node.js 参考了这篇文章: 在树莓派3B上安装node.js

在树莓派上安装hexo, 并使用hexo-migrator-wordpress这个插件迁移, 过程参考这篇文章 博客搬家记:从 Wordpress 到 Hexo+Github

hexo使用感受

轻量

本地部署时只需要敲一行hexo g命令, 就会在public目录生成所有页面的纯静态文件, 非常适合树莓派, 只需要安装一个nginx将网站目录改为public目录即可.

扩展性强

官方插件近百种, 主题美观大方, 主题用到的所有javascript插件都可以自由设置使用cdn资源(例如bootcdn), 而不是通过本站请求资源, 页面访问几乎秒开.

缺点:无管理后台

所有配置都要靠手动修改配置文件完成…
远程发文章很麻烦…
过于geek…