#meta posts

from 0x0

今天终于把 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 就行了。

这一步不会和其他步骤冲突,可以有闲的时候慢慢处理,等全部文件准备好了再做升级。除了合并静态文件之外,实际升级耗时五分钟左右。

#dev #meta

 
阅读更多