v0.12.0 升级笔记
今天终于把 writefreely 升级到了 0.12.0 版本,有以下几个主要变化:
- 可以在本站 @ 任何一个使用 ActivityPub 协议的站点(如长毛象)的账号。当然,也可以 @ 本站用户,只是他们不会收到提醒,例如:@0x0@matterofti.me。目前看来,这个功能比较鸡肋,假如你平时用长毛象,那可以考虑用 @ 来推广自己的博客,或者管理订阅列表(手动 @ 自己的读者来看新文章……)。
- 据说可以用 slack 和 gitlab 进行第三方登录,但我还没摸索出要怎么打开。
- 导入
.md
或.txt
文章。
此外还修复了大大小小的 bug。增加了一些页面,配套的翻译还在进行中。
很遗憾,中文标签依然没有实装,我打算再去 github 催一催,或者找机会迁移到 mysql 算了……
简单记录一下这次升级的过程,以资参考。
首先,从服务器备份数据库:
ssh <user>@<your-server>
// windows
pscp.exe <you>@<your-server>:</path/to/your/>writefreely/writefreely.db <local destination>
// -nix
scp <you>@<your-server>:</path/to/your/>writefreely/writefreely.db .
然后下载新的 release 到服务器,解压:
dpkg --print-architecture // 获取本机 cpu 架构
wget https://github.com/writeas/writefreely/releases/download/v0.12.0/writefreely_0.12.0_linux_amd64.tar.gz
tar -zxvf writefreely_0.12.0_linux_amd64.tar.gz
根据官方说明,接下来执行以下几步:
- 停止服务
systemctl stop writefreely
- 把 release 目录里所有文件(除了
key/
目录之外)都复制到工作目录,覆盖原来的文件 - 重启服务
systemctl start writefreely
- 更新数据库 scheme
writefreely db migrate
但由于我做了本地化,魔改了不少 css 和页面模板,static/, pages/, templates/
这三个目录不能直接覆盖,需要和 remote git repo 里的版本 merge。之前迟迟没有动手,也是在纠结这一步要怎么做。权衡了各种方案后,最后我决定把 repo clone 到本地,然后在本地手动合并。
我用的工具是 WinMerge,可以对比最多三个文件夹。大部分改动都挺 trivial,只是比较繁琐(有些页面我就顺便翻译了)。注意这个工具会产生一堆 .bak
文件,需手动删除。全部做完后,push 回 repo,再登进服务器 pull 就行了。
这一步不会和其他步骤冲突,可以有闲的时候慢慢处理,等全部文件准备好了再做升级。除了合并静态文件之外,实际升级耗时五分钟左右。