在阿里云找了半天没找到关于 serverless 部署 hexo 的文档,还是腾讯云比较全,记录一下在腾讯云 serveless Framework 部署 hexo 过程.

npm 方式安装

使用 npm 安装前,需要确保您的环境中已安装好了 Node(版本需要 > 10)以及 npm(查看 Node.js 安装指南)。

1
2
3
4
5
$ node -v
v12.18.0
$ npm -v
7.0.10

安装命令行执行
1
2
3
4
npm install -g serverless

mac如提示没有权限运行
sudo npm install -g serverless
更新 serverless
1
npm update -g serverless
Serverless 的版本
1
2
serverless -v

部署 Hexo 博客

前提条件

  • 已安装 Node.js(Node.js 版本需不低于 8.6,建议使用 Node.js10.0 及以上版本)
  • 已安装 Git

hexo 中文官方文档

安装

通过 hexo-cli 脚手架安装 hexo
1
2
3
4
5
$ npm install -g hexo-cli  # 安装脚手架
$ hexo init hexo # 生成 Hexo 目录
$ cd hexo
$ npm install

生成静态页面
1
2
hexo g   # generate

预览

本地预览 hexo,运行以下命令打开 localhost:4000 查看页面效果

1
2
hexo s

配置

在 hexo 目录下,创建 serverless.yml 配置文件:

1
2
$ touch serverless.yml

配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# serverless.yml

component: website # (必填) 引用 component 的名称,当前用到的是 tencent-website 组件
name: hexodemo # (必填) 该 website 组件创建的实例名称
org: test # (可选) 用于记录组织信息,默认值为您的腾讯云账号 APPID
app: websiteApp # (可选) 该 website 应用名称
stage: dev # (可选) 用于区分环境信息,默认值是 dev

inputs:
src:
src: ./public # Upload static files generated by HEXO
index: index.html
# dist: ./dist
# hook: npm run build
# websitePath: ./
region: ap-guangzhou
bucketName: my-bucket
protocol: https

部署

执行下面的命令然后扫码登录即可,稍等一下就会生成部署好的地址了,记得每次更新文章都重新执行一下 hexo g 重新生成静态资源

1
serverless deploy

如果不想一直扫码登录则需要配置账号,只需要在根目录下创建.env 文件

1
2
$ touch .env # 腾讯云的配置信息

在 .env 文件中配置腾讯云的 SecretId 和 SecretKey 信息并保存:

1
2
3
4
# .env
TENCENT_SECRET_ID=123
TENCENT_SECRET_KEY=123

自定义域名

虽然可以访问了,但是说实话这一长串的 http 地址还是很难看,对比了一下还是腾讯云的域名便宜一点,注册购买好之后,在 serverless.yml 配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# serverless.yml

component: website
name: myWebsite
org: test
app: websiteApp
stage: dev

inputs:
src:
src: ./public
index: index.html
error: index.html
region: ap-guangzhou
bucketName: my-hexo-bucket
protocol: https
# 新增的 CDN 自定义域名配置
hosts:
- host: www.example.com # 希望配置的自定义域名
https:
switch: on
http2: off
certInfo:
certId: 'abc'
# certificate: 'xxx'
# privateKey: 'xxx'

再次执行 serverless deploy 进行部署

部署好之后会输出类似以下内容,然后再域名管理后台添加记录解析。新注册备案的域名在两个小时以后重新尝试。

1
2
3
4
5
6
7
myWebsite:
url: https://my-hexo-bucket-1250000000.cos-website.ap-guangzhou.myqcloud.com
env:
host:
- https://www.example.com (CNAME: www.example.com.cdn.dnsv1.com)
17s › myWebsite › done

部署完成后,在命令行的输出中可以查看到一个以 .cdn.dnsv1.com 为后缀的 CNAME 域名。参考 CNAME 配置文档,在 DNS 服务商处设置好对应的 CNAME 并生效后,即可访问自定义域名。

以上绑定域名也可以在可视化配置后台配置。进入详情,点击左侧域名与传输管理进行配置

存储桶列表

需要注意的是,如果想使用自定义域名,还需要进行域名备案。而腾讯云 serverless 的域名备案需要额外购买 110 元 5 年的备案域名包…
serverless 备案文档

  • 腾讯云域名实名认证之后满 3 个自然日才能备案
  • 腾讯审核需要一天,管局审核需要 20 天不等
添加域名解析

参考腾讯域名解析相关文档

相关文档