语雀+Hexo+serverless云函数自动同步
语雀免费版是无法发布“互联网可见”的文章的,使用语雀发布,需要开通会员 (99/年)
语雀免费版是无法发布“互联网可见”的文章的,使用语雀发布,需要开通会员 (99/年)
用到了这个项目:
安装:npm i -g yuque-hexo
然后把 package.json 的内容添加上下面这些:
1 | "yuqueConfig": { |
这里需要说明:
baseurl 是固定的
login 和 repo 是如下图这样对应的,个人界面和团队界面都可以
token 是在右上角头像 -> 账户设置 -> Token 添加的,权限的话只给读取就可以
ps.公开的知识库也要设置 Token。
接着,
在 “scripts” 中添加
1 | "sync": "yuque-hexo sync", |
这样整体下来我的 package.json 内容如下(参考):
1 | { |
这时候,在本地调试的时候使用命令:yuque-hexo sync 就会把语雀的文章给下载下来,下载到 \source_posts
(使用以上命令前先备份本地的_posts 文件夹下的 md 文章,使用语雀下载的时候会先清空此文件夹)
然后 hexo g && hexo s 就可以访问 127.0.0.1:4000 本地看一下了
手动发布是 hexo g && hexo d
在主题的 layout 文件夹中的 post.ejs 文件中加上一句(不同主题加的位置不同)
1 | <meta name="referrer" content="no-referrer" /> |
小灰灰用的是 butterFly 主题,加的位置在:
\themes\butterfly\layout\includes\head.pug 文件:
大概在第 40 行左右添加:
(PS:放在这个位置是因为百度统计的 referrer 问题。只能放在统计后面)
1 | meta(name="referrer" content="no-referrer") |
如图:
在 github 上创建一个私有仓库(因为会涉及到一些 token 啥的)仓库名字无所谓(用来存放 hexo 源码)
注意:在仓库里面再放一个仓库是没法把里面那个仓库 push 到 github 的,只会传一个空文件夹,导致后期博客成了空白页面,最简单粗暴的办法就是把你 git clone 的 hexo 主题里的 .git 文件夹给删掉
然后在 hexo 的目录下运行如下命令,把 hexo 的源码传到 github 远程仓库中
1 | git init |
去 github 的 settings 创建一个 token (ps:个人中心的设置,非项目的设置)
只勾上这一个即可:
生成了 token 之后一定要记下来,再回来就没法看了
然后来到刚才创建的私有仓库的 settings
添加三个 secret
GH_REF 是你博客的仓库地址 github.com/**/**.github.io
注意去掉前面 https://
GE_TOKEN 是刚才生成的 token
然后来到 actions,点击 set up a workflow yourself
**HEXO_DEPLOY_PRI **是新增的 ssh 密钥
在命令行中输入:
ssh-keygen -t rsa -C “your_email@example.com“
备注:
同时生成的公钥,要放到 Hexo 生成 page 的项目的公钥下面
(只有密钥和公钥相互匹配,才能推送静态文件到公开的项目下(page 项目))
编辑内容如下:
1 | name: Hexo Deploy |
下面那个 user.name 和 user.email 根据自己的情况改一下,注意对齐
弄完之后每当 push 或 repository_dispatch 的时候都会自动的进行更新
Github Action 使用云函数调度服务 | 小灰灰的世界
小灰灰使用的是 webhooks 的功能同步推送到服务器上的
小灰灰的 Hexo 博客地址:
PS:
听说使用 github action 执行 ssh 可能会出现封号的情况。
另外同步到 github 速度比较慢,
所以小灰灰的博客代码直接使用自己的服务器搭建的,然后加个 webhook 到语雀上,这样语雀更新之后请求 webhook 执行命令直接在服务器上更新了。
宝塔的 webhook 代码:
1 | #!/bin/bash |
服务器需要改动,要求 copy 命令的时候不要提示询问。改动方法:
执行:vi ~/.bashrc
在 alias cp=’cp -i’前加上”#”注释掉这行,:wq! 保存退出,然后重新登陆。
最后使用 cp -r -f 就可以了