前言
2020-07-29 更新:用java重新写了一个轮子,详细请看这里
2020-05-27 更新:新增关于阿里云计费问题,详情看下一条博客
众所周知hexo是一个静态博客,我们可以将生成的静态页面上传到对象存储(OSS)实现托管,理论上可以完全不需要服务器了。
再加上CDN站点加速,相对于github静态托管,访问速度应该是有很大的提升的。
这里再运用阿里云的sdk,实现在服务器上一条命令将静态页面上传至OSS。
创建OSS Bucket
打开OSS控制台
首次进入先开通服务:
创建Bucket
- 填写自定bucket名称
- 选择与你服务器同地区的区域
- 选择“标准存储”
- 修改读写权限为:公共读
配置OSS静态托管模式
填写默认首页为 index.html,
开通子目录首页 :
- 如你的config.yml文件中
pretty_urls:false,请务必开通子目录首页!
配置CDN全站加速
打开CDN全站加速控制台
首次进入也要先开通:
- 选择按流量计费
添加CDN加速域名
- 填写你的博客域名
- 源站信息选择OSS域名,选中你刚刚创建的bucket
配置你添加的域名
- / 代表所有资源(因为hexo是静态,可以全站都用CDN加速)
- 过期时间按需配置(过期后会回OSS源站重新获取资源)
- 可以适当延长过期时间(省流量),反正后面会开启“CDN缓存自动刷新”
- 回源会吃流量(这部分是收费的)
配置https证书
- 如不开通https则不需要配置此步
域名解析
查看CDN加速的CNAME
解析
- 复制CDN的CNAME到域名解析即可
OSS域名管理
- 填写你的域名绑定即可(不要勾选“自动添加CNAME记录”)
- 配置完成后等几分钟就会生效

- 打开“CDN缓存自动刷新”
- 以后当OSS文件更新,CDN就会自动回源刷新
计费问题
计费问题请查看这一篇:关于阿里云的OSS和CDN流量的计费问题
使用SDK上传网站文件到OSS
2020-07-29 更新:
由于下面的js代码只有一个方法,只支持直接上传,随着文章越来越多,文件体积也越来越大,每次都简单的覆盖上传已经显得不那么“方便”了,每次上传的时间越来越长,阿里云的自动刷新CDN也没有那么“聪明”,所以我决定重写一个轮子,详细在一键上传hexo文件到阿里云OSS-第二版,如果想用新的轮子,下面就可以不用看啦~
hexo默认生成的网页文件在/public下,我们只需要把/public的文件上传到oss上,网站就能正常访问了,OSS+CDN部分到这里也就结束了。
那么问题来了:
每次更新博客就需要手动上传文件到OSS,服务器到OSS有没有一步到位的方法呢?有的!
我们需要用到阿里云官方的SDK
这里我用的是node.js的SDK - 官方文档
这里精简的写下怎么使用:
安装node.js
这里只写一种安装方式:
Ubuntu apt-get命令安装sudo apt-get install nodejs
sudo apt-get install npm
查看node版本node -v
- 其他版本linux安装方式请到node.js官网
- ali-oss需要node版本10.x+
安装阿里云 ali-oss 模块
先进入你的hexo项目根目录cd /path/of/your/hexo
安装ali-ossnpm install ali-oss
新建一个js文件
新建:vi send-to-oss.js
写入以下代码:
|
- 阿里 access key 建议使用子账户进行管理
- region以你实际在的地区为准,一般为:oss-cn-地区拼音
接下来每次hexo g 后只需要一条命令即可上传文件到oss:node send-to-oss.js
