Hexo Btterfly 引入 Waline 评论系统以及常见问题解决
引入 Waline 评论
Hexo 博客框架 Butterfly 主题中引入 Waline 评论操作可以参考以下文章解决:
注意:
-
在 快速上手 | Waline 这篇文章中,请按照指引完成 Vercel 的部署,并完成域名绑定小节(虽然它说可选,但我强烈建议你完成,否则你的评论系统只能在严苛的网络环境中运行)
-
在 Butterfly 的主题配置文件中有两处需要改:
1
2
3
4
5
6comments:
use: Waline # Valine,Disqus
# ...
waline:
serverURL: https://pl.uuanqin.top # Waline server address url注意 serverURL 填自己创建子域名
切换数据库
基本步骤:
- 打开 Waline 管理面板,导出数据
- 准备好自己的数据库
- 依据文档要求添加环境变量
- 删除 Vercel 中原有数据库相关的环境变量。或者把这些变量的多环境「Production」取消掉。
- Vercel 重新部署
- 登录 Waline,并成为第一个注册用户
- 打开管理面板导入数据,等待数据导入成功。
把数据从 LeanCloud 切换到自己服务器数据库的好处是:
- 评论数据加载迅速
- 数据维护方便
如果你是从 LeanCloud 迁入 MySQL,建议紧接着看下一小节完成时区转换问题。
加速 Waline
按照官网配置好的 Waline 在国内的加载速度还是有点慢,现记录下一些可用的加速手段:
- Waline 的 js 文件、css 文件全部替换为国内高速访问的 CDN 链接,或直接存储在本站。国内常用 CDN 镜像站详见:国内访问 Hexo 博客优化加速(CDN 链接替换)
- 使用的「文章反应」「表情包」等素材均替换为国内镜像。比如 Waline 内置的表情包源为 unpkg,我们可以切换到国内 unpkg 的镜像站。参考:学会通过看文档配置 Butterfly 主题中的 Waline 客户端。
- 评论区头像服务使用国内的 Cravatar 服务。详见:Waline 配置头像服务(含常用公共头像服务介绍)
- Vercel 使用国内加速域名、将数据库服务部署到国内。上文已介绍了相关操作方法。
更多美化设置
推荐本站的索引文章: 【索引】定制自己的 Waline 评论系统
Vercel 中的 Waline 的维护
一点开发与维护提示:
- Vercel 中的环境变量可以配置多环境生效设置。
- 默认情况下,GitHub 提交到
main
分支为 Production 正式环境,其他分支则是 Preview 环境。 - 并不是所有的改动提交到 GitHub 上时都会生效,默认情况下仅有
index.js
改动时才会生效。
官方文档:Deploying Git Repositories with Vercel
使用 Waline 可能遇到的问题
问题 1:无法获取和发布评论
问题:评论框已经能在博客中显示,但是获取不到评论内容,且无法发布评论。出现 Failed to Fetch 错误。但使用魔法后评论系统正常运行。
解决:打开 F12 控制台并重新加载问题页面,你可能会发现 vervel.app 无法访问:
注意到页面向 vercel.app 发送了 GET 请求,但此时 vercel.app 在国内环境是无法访问的。
排查方向:
-
首先确保按照 快速上手 | Waline 设置好了评论系统子域名,或再参考一下这篇文章 关于waline国内无法使用的解决方案 (vercel.app国内无法使用问题)_vercel 国内访问-CSDN博客
在域名服务器商(例如 阿里云>云解析 DNS>域名解析>解析设置)处添加新的
CNAME
解析记录:
Type | Name | Value |
---|---|---|
CNAME | example(你想要的子域名名称 | cname.vercel-dns.com (也可以是cname-china.vercel-dns.com) |
- 确保在 Butterfly 的主题配置文件中设置了正确的 Waline 服务器地址(比如设置为example.yourdomain.com)。
问题 2:从 LeanCloud 迁入 MySQL 数据库后时间显示错误
问题描述:利用数据导入导出工具从 LeanCloud 把数据迁入 MySQL 后,数据中与时间相关的字段均落后 8 小时。且发布新评论时插入数据库字段中的时间均超前 8 小时。
下面介绍一种能解决问题的方式。
导入评论数据后,立即执行以下 SQL 恢复正确的时间:
1 | UPDATE `waline-comments`.wl_Comment SET |
调整 MySQL 数据库时区:修改服务器文件:/etc/my.cnf.d/mysql-server.cnf
:
1 | [mysqld] |
1 | # 重启mysqld |
这样评论的时间就能正确展示,新评论时间也能正确设置了。