Rodrick

vuePress-theme-reco Rodrick    2022
Rodrick Rodrick

Choose mode

  • dark
  • auto
  • light
Home
Category
  • CS基础
  • 数据库
  • 前端
  • 其他
Tag
About
Timeline
D&T
  • 官方文档

    • Vue
    • Vue3
    • Webpack
    • MDN
    • Node中文网
    • React
    • 小程序
    • FineReport
  • 学习面试

    • 现代JavaScript教程
    • ES6
    • 阿西河
    • LeetCode
    • 牛客网
  • 工具

    • bejson
Contact
  • Github
  • Gitee
author-avatar

Rodrick

62

Article

18

Tag

Home
Category
  • CS基础
  • 数据库
  • 前端
  • 其他
Tag
About
Timeline
D&T
  • 官方文档

    • Vue
    • Vue3
    • Webpack
    • MDN
    • Node中文网
    • React
    • 小程序
    • FineReport
  • 学习面试

    • 现代JavaScript教程
    • ES6
    • 阿西河
    • LeetCode
    • 牛客网
  • 工具

    • bejson
Contact
  • Github
  • Gitee

Vuepress+Valine+LeanCloud+Github Actions 构建个人博客评论体系

vuePress-theme-reco Rodrick    2022

Vuepress+Valine+LeanCloud+Github Actions 构建个人博客评论体系

Rodrick 2020-09-11 valinegit

背景

由于 LeanCloud 的各种“你懂的”的原因,现在国内节点需要备案等等限制

加上自己又想白嫖 LeanCloud 来实现浏览量+评论管理+邮件通知一条龙服务

网上也没有很好的综合文档,所以这里整理一份完整的操作步骤

# 20200926 更新

国内大量使用国际版LeanCloud后端的博客的Valine评论一齐失效

通过Valine的Github的Issue 得知,早在5月份LeanCloud官方就低调表示us.avoscloud.com域名将于不久后下线。

参考上方的讨论办法,现在如果使用国际版LeanCloud作为Valine评论的后端的话则必须指定自定义服务器URL才能正常使用了。

自定义服务器的URL需要到LeanCloud后台查看。打开后台之后进入Settings - App Keys,找到Domain whitelist,里面的Request domain里面的那个xxxxxxxx.api.lncldglobal.com就是你需要指定的服务器URL。其中xxxxxxxx就是各位的AppID的前8位字符。

然后再 config.js 里加上 serverURLs:'https://xxxxx.api.lncldglobal.com', 即可


# 参考来源

Valine :评论管理系统

Valine-Admin :Valine v1.4.0 之后已经去除了邮件提醒功能,所以我们这里使用 Valine-Admin by @zhaojun1998

LeanCloud流控原因的解决方案 :由于白嫖党过多导致的官方限流解决方案

# 开始

# 1. 打开LeanCloud 官网,注册账号

image-20200911183531065

# 2. 登陆

登陆之后右上角选择 国际版【如果你的域名备过案了就选个正常节点就行,但是没备案的或者使用ghpages这种的,请选择国际版】,然后创建新的应用

image-20200911183742658

# 3. 应用创建后

应用创建好以后,进入刚刚创建的应用,选择左下角的设置>应用Key,找到你的APP ID和APP Key,然后填入我们项目的 config.js

image-20200911184026702
 valineConfig: {
      appId: 'xxxxx',// your appId
      appKey: 'xxxxxx', // your appKey
  }

# 4. valine-admin 的配置

这段不做详细介绍,参见官方说明

要注意的几个点:

  • 记得在 设置->域名绑定->云引擎、ClientEngine 域名 这里绑定你的域名,这就是为什么要选个国际版,因为没国内节点没备案你是过不了审的
  • 部署填写代码库直接是在 云引擎->部署页面最下面的Git部署
  1. Leancloud 休眠策略【重要】

    首先按照大佬给的教程 如下:

    免费版的 LeanCloud 容器,是有强制性休眠策略的,不能 24 小时运行:

    • 每天必须休眠 6 个小时
    • 30 分钟内没有外部请求,则休眠。
    • 休眠后如果有新的外部请求实例则马上启动(但激活时此次发送邮件会失败)。

    分析了一下上方的策略,如果不想付费的话,最佳使用方案就设置定时器,每天 7 - 23 点每 20 分钟访问一次,这样可以保持每天的绝大多数时间邮件服务是正常的。

    首先需要先配置下 Web 主机的域名【现在叫”云引擎域名“】,使用定时器时要用到。配置方式如下。

    image-20200911185002555

    后台登录需要账号密码,需要在这里设置,只需要填写 email、password、username,这三个字段即可, 使用 email 作为账号登陆即可。(为了安全考虑,此 email 必须为配置中的 SMTP_USER 或 TO_EMAIL, 否则不允许登录) img

    # LeanCloud 自带定时器[推荐]

    首先需要添加环境变量,ADMIN_URL:Web 主机域名【现在叫”云引擎域名“】,如图所示(添加后重启容器才会生效):

    img

    然后点击云引擎 - 定时任务,新增定时器,按照图片上填写:

    img

    注意, LeanCloud 最近更新了定时器校验规则, 需要将 Cron 表达式写为: 0 */20 7-23 * * ? !!!

    上面这个写法是国内的时间!!!国际版和国内有八小时时差,所以国际版请使用0 */20 0-15 * * ?

    添加后要记得点击启用:

    img

    启用成功后,每 20 分钟在云引擎的 - 应用日志中可以看到提示:

    img

# 5. 流控问题解决

​ 用一段时间后,会在日志里发现定时任务报错:"因流控原因,通过定时任务唤醒体验版实例失败,建议升级至标准版云引擎实例避免休眠",官方说法是:

img

然后我去参照了这篇文章 ,里面介绍的很详细了,就不重复说明了

基本思路就是:

既然你自带的定时任务你可以监控到然后限制,那么我就定时从外部发起请求,只要外部发起请求没有问题,那就可以保证适当的活跃时间,并且避开白天休眠的情况

使用 Github Action ,来代替自带的定时器功能,或者代替休眠期后的第一次唤醒工作,因为有人发现只要从休眠中的第一次唤醒是外部发起的,后面定时器执行就不会报错

欢迎来到 Rodrick
看板娘