博客升级半个多月了,目前运行稳定,记录一下升级过程。
升级原因
我的博客使用的是「Halo」,部署时间是 2019 年,到现在有四年时间了,当时部署的版本是 0.4.0-0.4.2 之间的一个版本,有点记不太清了,紧接着升级到了 0.4.3,然后就一直用到了现在。
用了这么久,发现这个版本还是有些问题的:
- 管理端界面不够现代化
- 版本过旧,可能存在安全漏洞
- 数据库使用的是 H2,访问不方便
- 程序和数据分开,数据备份迁移不方便
- 底部最近评论如果包含特殊符号可能显示异常
博客之前遇到过一次恶意评论,短时间内有大量评论涌入,我虽然开启了评论审核,但持续的评论使邮箱通知疯狂报错,无奈只好停了博客,从数据库中查到评论的 IP 地址,通过设置服务器黑名单才解决。说实话,H2 数据库的访问还是挺麻烦的,尤其是服务关了,想要本地访问就更麻烦了。
去年年底的时候就考虑升级博客,当时 Halo 已经开始 2.0 版本的测试了,稳定版是 1.6.0。
随后我就在本地测试博客升级,过程虽然有点繁琐,但是升级是可以走通的。
一直想找个合适的时间升级一下,结果拖着拖着就到了今年,直到从「科技爱好者周刊(第 242 期):一次尴尬的服务器被黑」看到阮一峰老师博客被黑的消息,加速了我升级博客的步伐。
于是,找了个时间,开始博客的升级,此时最新的 v1 版本已经是 1.6.1 了,目测应该不会有什么更新了,便决定升级到此版本。
升级
升级方案
我的升级方案是先在本地虚拟机中进行升级,数据检查无误之后再迁移到服务器上。
具体的步骤如下:
- 虚拟机 1
- 恢复服务器同版本的 0.4.3 及数据
- 升级到 0.4.4
- 检查数据完整性
- 导出数据
- 虚拟机 2
- 部署 1.2.0
- 导入数据
- 检查数据完整性
- 升级到 1.6.1
- 导出数据
- 虚拟机 3
- 下载配置文件
- 设置使用 MySQL 数据库
- 创建数据库
- docker compose 映射本地目录
- docker compose 部署 1.6.1
- 导入数据
- 修改配置项
- 服务器
- 复制 docker compose 配置文件和映射目录
- 部署并启动
- 检查数据和配置
方案说明
- 为什么要在虚拟机上进行升级操作?
- 避免直接在服务器上操作导致数据出错或丢失。
- 为什么要先升级到 0.4.4?
- 这是 1.0 之前的最后一个版本,需要升级到此版本才能将数据导出。
- 为什么导入到 1.2.0?
- 印象中这个版本之后就不支持导入旧版本的数据了。
- 为什么采用 docker compose 方式部署?
- 方便数据备份和迁移,只需将映射的目录和 docker-compose.yml 备份好,即可进行数据迁移。
遇到的问题
迁移中也遇到了一些问题,记录在此。
首先是评论导入失败,看日志是有一条评论内容过长,在导入数据的时候失败了,同时导致后续几条评论也导入失败。后来尝试修改目标数据库的字段长度,成功导入进去。
其次,升级过程时间较久,可能会把虚拟机挂起,导致虚拟机时间不准,访问的时候出现问题。解决办法也很简单,对服务器时间进行校准即可。
还有就是升级过程中使用非 80 端口可能无法访问博客,我也没深究原因,只是把端口改为 80 即可。最后迁移到服务器上使用非 80 端口是没问题的。
配置检查
关于需要检查的配置项,我这列举一下:
- 配置文件
- 数据库:选择 MySQL 数据库,更稳定可靠
- 缓存:选择 level,即使重启服务也不会丢失数据
- 数据库
- OPTIONS 表:修改 birthday,用于展示建站天数
- 博客设置
- SMTP 服务:配置后测试
- 评论设置
- 打开所有开关
- Gravatar 镜像源:如无法访问则寻找替代源
- 附件设置:检查存储位置和配置
- 其他设置:添加统计代码
- 高级选项(博客设置右上角点击「切换到高级选项」)
- 自定义页面前缀:p
- API 服务:打开,填写之前的 Access key
升级总结
总体来说先在本地虚拟机进行升级还是比较靠谱的,以后有类似的升级也会参考此方案。
截止到目前,升级已经有半个多月了,博客运行稳定,暂未发现有什么问题。
其实我升级的时候 Halo 2.0 正式版已经出了,但我还是选择了 1.6.1,主要原因还是求稳。博客毕竟是以内容为主,博客本身的版本并不是特别重要,只要能保证博客系统的稳定性和安全性就可以了,还是以内容产出为最终目标。
除此之外,我个人是一个妥妥的升级狂人,各种软件基本都是第一时间升级到最新版,如果升级到 hao 2.0,那么随着官方的更新,我也会忍不住更新,一方面占用时间,另一方面对内容产出也起不到什么作用,甚至需要花时间解决升级遇到的问题。
所以,我选择了 Halo 1.6.1,既能保证稳定性和安全性,又避免了紧跟最新版不断升级带来的焦虑感。
最后友情提示,升级最重要的就是数据备份,一定切记。只要有备份,再加上在虚拟机里操作升级,怎么搞都可以,大不了从头再来一遍。
以上就是本次博客升级的过程,欢迎沟通交流。
本文由 掘墓人 创作,采用 CC BY-NC-ND 4.0 DEED
,转载或翻译请注明出处。
最后编辑时间为: 2023年04月9日