最近网站备案通过了, 准备把博客部署到国内的节点, 使访问更快些. 之前部署在CODING Pages和GitHub Pages, 感觉太慢了. 然后发现阿里云的OSS比腾讯云的要便宜一些, 所以就选择了阿里云.

准备

  • 一个已经开通了阿里云对象存储的账号
  • 一个已经备案的域名

安装插件

已经有人写好插件了, 那就直接用.

1
npm install hexo-deployer-cos-cdn --save

更改Hexo配置文件

在_config.yml里, 更改deploy的属性.

HH_Blog/_config.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
deploy:
- type: cos-cdn
cloud: aliyun
bucket: bucket-name
region: oss-cn-*
cdnEnable: true
updatePosts: true
deleteExtraFiles: true
secretId: aLT4G8ppVyDIW2uIW2vbKUqv9 # 示例
secretKey: GGYrwnVZ085p5ZrquxAh6YWFJteZks # 示例

imageConfig:
cloud: aliyun
cdnUrl: https://图床根目录
bucket: bucket-name
region: oss-cn-*
folder: _assets/images
cdnEnable: true
secretId: aLT4G8ppVyDIW2uIW2vbKUqv9 # 示例
secretKey: GGYrwnVZ085p5ZrquxAh6YWFJteZks # 示例

按照插件的文档文档写, type固定为cos-cdn, cloud可填aliyuntencent, 分别是阿里云的OSS和腾讯云的COS. bucket填存储桶的名字, region是存储桶的地域,进入相应存储桶控制台时, 应该可以在浏览器的地址栏里找到, 具体看帮助文档. cdnEnabletrue时, 如果存储桶开启了CDN加速, 会在上传时自动刷新CDN缓存. updatePoststrue时, 在上传时会将Markdown源文件里图片路径替换成在图床(CDN)上的路径, 具体看imageConfig的设置. deleteExtraFilestrue时, 会在上传时, 删除那些多余的文件.

imageConfig用于设置网站静态文件与图片文件分别存储, 需设置updatePoststrue. 它里面的部分参数与之前参数是一致的, 区别就是存储桶不一样. folder是本地图片存放的位置, 相对于[博客根目录]/source目录, 会根据这个地址来选择那些图片路径是需要被替换的. cdnUrl是图床存储桶绑定的CDN加速域名, 替换时会使用到它.

接下来具体说明如何获取secretIdsecretKey.

首先进入RAM访问控制控制台, 创建新用户.

Aliyun访问控制添加用户

然后返回, 选择添加权限.

用户添加权限

搜索OSS相关权限, 添加. 如果存储桶开启了CDN, 并且cdnEnabletrue, 则需要添加CDN相关权限.

获取secretId和secretKey

最后复制到配置里即可.

测试

命令行输入hexo deploy测试是否起效.

注意

网站的存储桶可能需要修改静态网页选项设置, 来开启访问子目录时自动转到子目录的默认主页的功能. 因为Hexo生成页面链接时似乎不会添加index.html到链接尾部, 不开通就有可能无法访问. 存储桶的静态网页设置可能还需要修改404跳转规则, 具体查看官方文档.