博客评论从 Valine 迁移 到 Waline
条评论前些日子收到了一个「关于 LeanCloud 停止对外提供服务的通知」,我的博客是Hexo的,评论系统用的是Valine,评论的后端服务刚好就是放在这个上面的,而且 Valine 也是很长时间没有更新了,是时候就得把它迁移到 Waline 上面去了。这个更安全,而且完美支持 Valine 的数据迁移(后面发现其实也没有那么完美)。主要是官方的那个指引写的没有那么小白,而且有些配置或者数据表变更了但是指引没有变,不过在AI帮助下还是一两小时解决问题。
导出数据
登录到Leancloud后台,直接进入数据存储->导入导出->数据导出->选择限定class->选择comment,点击导出,就可以从邮件里面下载这个jsonl文件了。
然后在waline的官方文档中,有一个数据迁移助手,可以把各种格式的文件转换为waline支持的格式。直接把jsonl文件的内容直接复制出来,粘贴到迁移工具的输入框里,选择从Valine迁移至 Waline MySQL/postgreSQL/SQLite这个,点击「转换」就会下载一个csv出来。这里有一个小坑,就是导出的jsonl文件里有一行文件类型声明的代码:
需要去掉,不然一直会转换失败,而且也不会有什么报错的那种。
导入数据
使用Waline自带的管理后台的导入数据功能,点击导入,选择上面转换之后的csv文件,一直失败报错:
我搜了一圈子发现这个问题好像一直存在。算了,看样子是这个导入工具有问题,跟最新的评论表结构不是那么兼容,于是乎我直接让AI帮我根据 waline的pgsql建表语句 这里面的最新的表结构,生成INSERT SQL语句,到到vercel的后台管理中sql-editor面板去直接执行,然后数据就进去了。
关闭Vercel Authentication
又一个坑,数据插入进去之后发现,一直刷新不出来,而且提交新的评论会一直报这个错误:
又是一顿搜索,发现解决方案就是参考这篇文章里面的 「采用waline配置博客评论出现fail to fetch解决方案」,找到Vercel Authentication,找到你的项目里面Setting->Deployment Protection->Vercel Authentication,关掉即可。
域名
最好还是需要一个自己的能直接访问的域名,毕竟vercel国内是不能直接访问的。先在你自己的vercel控制面板里找到Domains菜单,找到你的project点击edit,然后把Domain那一栏改成你自己的二级域名,它会弹出来一个指引,告诉你在你的域名解析里加一条CNAME记录,照着填进去保存,等几分钟生效即可。
添加评论邮件通知
添加邮件通知,需要在vercel中配置环境变量,配置路径是你的项目->Setting->Environment Variables->右上角的Add Environment Variables,然后根据评论通知文档,去配置对应的环境变量就可以,注意SMTP_PASS这个一般是需要去邮箱里配置专用密码,比如qq邮箱的需要去后台安全管理生成一个16位的授权码,别把登录密码写进去了。配置好之后,需要点击Deployment重新部署一下,环境变量才会生效。
以上操作全部完成之后,迁移工作打完收工。
