我部署在 linode 上的这个 blog 是 09 年装的 ubuntu 系统。只在 10 年的时候升级到 ubuntu 的 10.04 LTS 版,后来就一直懒得升。
其实敲一行指令就可以了,可每次 ssh 上去就是懒得做。今天突然觉得不太妥了,试了一下 do-release-upgrade 居然失败了 :( 。google 了一下,大约是说我这个系统停止维护太久了,早就超过了最后期限,升不了了。
痛定思痛,打算亡羊补牢一把。我想了一下,其实最主要的业务就是一个为 codingnow.com 解析域名的 bind9 服务,一个 apache 一个 mysql ,重装一下系统的话,把数据链过来应该问题不大。正好 linode 前些年送了我 8G 硬盘空间,一直懒的用上,正好装新系统。
工作进行的比预想的要麻烦的多,这提醒了我,下次一定要及时升级系统,不能再这么折腾了。
在新分区上安装 ubuntu 14.04 LTS 倒是很简单,linode 后台一分钟搞定,重新 reboot 就可以切到新系统。然后挂接老分区当数据盘用。我必须把 /home 和 /var 目录指回老的数据盘,否则新分区空间太少了。这个工作倒容易,只是一开始忘记修改 fstab ,导致系统重启后跑不起来(/var 目录被我做了个软连接到未挂接的分区上,导致 log 文件创建失败)。
最先折腾 bind9 服务,发现直接复制数据盘上的 etc 配置目录是不行的,有几个新安装产生的 key 文件要保留,失败过一次后,马上修好了。随便清理了一些配置文件里的垃圾。
然后 mysql 安装后发现指向数据盘上的库启动失败了 :( 检查 log 发现是我 10 年前创建的库太老了,mysql 5.5 居然读不进来。只好重启回老系统,把数据库直接 dump 成文本,然后再在新系统里导入。这中间忘记了 mysql 的 root 密码,修改了 mysql 的配置关掉密码,进入重置了一下。另外 blog 等几个系统用到的库的密码也忘记了,分别在配置文件中找了回来。
apache 重新安装折腾的时间最长,现在默认装的是 2.4 版, 和我之前的版本居然配置文件中有些命令有差别,老是报访问权限不对,各种淡疼。google 了老半天,然后批量替换了配置文件中的旧写法。
折腾过程中发现 apache2 的 error log 特别巨大,居然有 7G 之多。原来是我一些不太用到的 php 编写的页面实在是太老了,和 php5 最新版本(早两年升级过一次)各种不兼容,报了海量的废弃警告。加上老有发垃圾信息的爬虫每天来尝试,导致 log 增长的飞快。耐着性子把各种不兼容的地方改了过来,总算清静了。
顺便我还研究了一下,为什么 blog 的留言现在这么慢,每次留言都要等 4,5 秒。打开 mysql 的慢查询记录,没有发现什么异常,留言过程中 top 也没看到 cpu 有什么暴涨。想来是卡在某种 IO 操作上了。最后发现是 blog 留言的后台用了一个 10 年前的反垃圾模块,会对外提交一个请求。估计最近两年那边不维护了,结果每次留言都卡在这个请求上好久。赶紧关掉这个没用的反垃圾插件,立刻流畅了。
就这样,我这个 blog 系统还能破罐子破摔坚持用几年吧,等哪天心情好了再重新搭一下。
可能各位同学在访问本网站时还会碰到一些奇怪的现象,那都是我维修工作没做到位,遇到的话可以留言或 email 告诉我一下 :)