将Hexo静态博客部署到七牛优化版

起因

由于CDN的特点,缓存时间较长,如果博客发布后再修改的话,需要手动抓取链接。一篇博客发布,会影响首页、分类、标签等,所以这个过程较为麻烦。所以我想写一个脚本,在每次发布后自动抓取所有链接,更新CDN缓存。

首先注册、创建空间、配置域名解析,可以看这里:

http://hjk.im/p/116011.html

工具

用到的工具是七牛的qshell,官网的版本比较旧,可以看七牛官方的Github

Linux版本和macOS版本使用类似,下载下来添加一个软连接到/usr/local/bin。这样是为了可以直接使用qshell命令,写法可以参考如下(如果提示权限问题的话,加sudo执行)

1
ln -s <YOUR_PATH>/qshell_xxx /usr/local/bin/qshell

然后执行一下qshell命令看看是否成功。

设置账户

我们知道调用七牛的API需要一对AccessKeySecretKey,这个可以从七牛的后台的账号设置->密钥获取。

首先要使用七牛的API,必须先设置AccessKeySecretKey。命令写法参考如下:

1
qshell account ELUs327kxVPJrGCXqWae9yioc0xYZyrIpbM6Wh6o LVzZY2SqOQ_I_kM1n00ygACVBArDvOWtiLkDtKi_

上面的ELUs327kxVPJrGCXqWae9yioc0xYZyrIpbM6Wh6o就是你的AccessKey,而LVzZY2SqOQ_I_kM1n00ygACVBArDvOWtiLkDtKi_就是你的SecretKey。如果你想查看当前的AccessKeySecretKey设置,使用命令:

1
qshell account

上面的命令会输出当前你设置好的AccessKeySecretKey
接下来,我们就可以放心地使用七牛的API功能了。

写配置文件

假设文件名为qiniu.json,保存到Hexo博客根目录。

1
2
3
4
5
6
{
"src_dir" : "<LocalPath>",
"access_key" : "<Your AccessKey>",
"secret_key" : "<Your SecretKey>",
"bucket" : "<Bucket>"
}

路径写绝对路径,更多配置参考七牛文档:qupload

处理脚本

假设文件名为hexo.sh,保存到Hexo博客根目录。

1
2
3
4
5
6
7
8
9
10
11
12
# 生成HTML
hexo g
# 部署(可选)
hexo d
# 根据配置上传文件
qshell qupload qiniu.json
# 修改为你的域名
echo "http://hjk.im" > pageurl.txt
ls public/*/*.html | sed 's;public;http://hjk.im;' >> pageurl.txt
ls public/*/*/*.html | sed 's;public;http://hjk.im;' >> pageurl.txt
# 根据生成的URL列表刷新
qshell cdnrefresh pageurl.txt

以后每次更新博客只需要运行hexo.sh即可

1
bash hexo.sh

参考

https://github.com/qiniu/qshell

https://github.com/qiniu/qshell/wiki/qupload

https://github.com/qiniu/qshell/wiki/cdnrefresh