需要着重要说明的一点是,与TzCHZ 逃离WordPress.com的经历与教训:自主建站的重要性 不同,从基于LeanCloud和Vercel的waline转移数据并不会有任何费用😝;话虽如此,但还是自建waline更好一些

前情提要

LeanCloud宣布不为中国大陆用户提供服务之后,我其实一直在想转移评论系统,只不过限于当时的情况(高三),我不得不将计划向后推迟,进入大学之后,又沉溺于学习(玩乐)无法自拔;当然,大家不要学我,我是个反面教材

Railway

直接按照官方文档上写的部署就好;其实Vercel还能用,但是在中国大陆无法访问了,所以会选择Railway;去原来的waline后台导出json文件后再导入新的waline即可,唯一让我不太满意的就是在Railway上搭建的waline无法使用自己的MySQL,反观Vercel却可以使用,所以如果你不嫌麻烦,可以把Vercel里的变量全部改成MySQL,作为备用

导入报错

我从原先基于LeanCloud和vercel的waline中导出了json文件,在基于Railway上的waline重新导入时发现总是会卡在54/240,并报错,百思不得其解,waline社区成员也没人能理解我的这个错误
image

后来我通过查看Railway中PostgreSQL的Logs发现有一个评论在导入时出现了问题,将该条评论删除后,再次导入正常;显示的错误是“整数超出范围”
image

该评论如下(ip已处理):

        {
        "nick": "Anonymous",
        "ip": "",
        "mail": "",
        "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36",
        "insertedAt": "2021-03-17T18:32:00.297Z",
        "isSpam": false,
        "pid": "600235745582f5630f01333a",
        "link": "",
        "comment": "<p><a class=\"at\" href=\"#600235745582f5630f01333a\">@高浩轩 </a> ,  <img alt=\"titter\" referrerPolicy=\"no-referrer\" class=\"vemoji\" src=\"//img.t.sinajs.cn/t4/appstyle/expression/ext/normal/71/2018new_touxiao_org.png\" />何止是图床</p>\n",
        "url": "/2020/07/08/22/",
        "QQAvatar": "",
        "rid": "600235745582f5630f01333a",
        "isNotified": true,
        "objectId": "60524b23e061ae461cfcd123",
        "createdAt": "2021-03-17T18:32:03.649Z",
        "updatedAt": "2021-03-17T18:32:06.255Z"
    },

Vercel

目前Vercel还不能在中国大陆地区访问,所以仅作备用;在操作之前别忘记把评论导出!!

先把之前LeanCloud的环境变量删掉
image.png

然后添加MySQL的环境变量

环境变量名称必填默认值备注
MYSQL_HOST127.0.0.1MySQL 服务的地址
MYSQL_PORT3306MySQL 服务的端口
MYSQL_DBMySQL 数据库库名
MYSQL_USERMySQL 数据库的用户名
MYSQL_PASSWORDMySQL 数据库的密码
MYSQL_PREFIXwl_MySQL 数据表的表前缀
MYSQL_CHARSETutf8mb4MySQL 数据表的字符集
MYSQL_SSLfalse是否使用 SSL MYSQL 连接数据库

服务器上MySQL的设置

导入waline.sql之前,要先确认你的MySQL版本不低于5.6,因为 mysql 5.5 不支持两个 timestamp 字段同时为 CURRENT_TIMESTAMP ,在导入waline.sql文件时会报错;

新建用户之后要去授予用户数据库的访问权;如:我的waline数据库名为blog-waline,新建新建的账户名为user,那么在新建user之后要去授予它blog-waline数据库的访问权限,不然会报错

账户里,user有两个,如果是独立部署,那么仅修改localhost的权限显然会更加安全,但很可惜,我尝试在本地搭建了几次waline都没成功,只好把数据库放在Vercel上备用
image.png

只需要给user需要访问的数据库权限即可
image.png

独立部署waline

关于独立部署,官方文档中写的很少,比较适合有一定前端经验的人运行,像我这种刚学会C、Python的大学生就很难部署成功,上文MySQL的设置就是在我折腾独立部署时的产物,这篇文章本来是想记录一下独立部署waline的,结果因为我没成功,所以文章标题变成了《从Vercel逃到Railway》,不过我也会记录自己失败的尝试

来自CHZ的小广告:如果你想自己尝试,但苦于没有服务器,欢迎来到TzCHZ的小店选购NAT或者未激活的Azure $100(可续订)

systemd

可以说是我比较喜欢的方案,但是无论如何配置,最终都是以systemd启动失败告终

参考文章:

  1. 在服务器上直接独立部署 Waline,并使用 systemd 启动
  2. Fluid -25- 独立部署基于 MongoDB 的 Waline

直接运行

最后启动main.js的时候总是显示错误,可能是有些文件没有配置成功?

参考文章:

  1. Waline 服务端独立部署解决方案
  2. Waline 服务端一键独立部署解决方案
  3. 宝塔面板独立部署 Waline 评论系统
  4. 独立部署waline评论系统服务端

Docker部署

我没有尝试Docker部署,所以我贴出的文章也仅供参考:

  1. 使用Docker部署waline
  2. Waline评论服务docker自部署手册 + 无需备案域名配置