Cloudflare Worker 是 Cloudflare 提供的基于 Serverless 的云端服务,最新的 Workers Sites 允许使用者将博客程序如 Hexo、Wordpress 等部署到 Cloudflare 云端运行,算是新开发出来的奇技淫巧吧。本教程以 Hexo 部署为例,默认具有 Node 环境。

安装 Cloudflare 提供的部署程序 Wrangler

安装 Wrangler

Wrangler 的项目地址:github.com/cloudflare/wrangler
按照官方教程,使用 npm 安装 Wrangler ,在控制台输入

1
2
$ npm i @cloudflare/wrangler -g    #全局安装
$ # npm i @cloudflare/wrangler #如果默认环境无法进行全局安装,可以使用此局部安装命令,在工程目录需使用npx调用

cargo 方式安装 Wrangler(未使用)

1
$ cargo install wrangler

获取 Cloudflare api 密钥

Cloudflare 的 api 控制台中创建一个新的 api-token,点击新建 api-token,选择使用模板(Start with a template)。

使用Edit Cloudflare Workers模板创建新的 api,配置相应的权限即可获得一个新的api-tokens,保存备用。

创建api

配置 Wrangler 全局密钥

控制台执行

1
$ wrangler config

输入刚才保存的api-tokens运行验证即可完成全部配置。

初始化 Wrangler

在工程目录终端中执行

1
2
$ wrangler init --site my-static-site        #my-static-site替换为要创建的Works名称
# $ npx wrangler init --site my-static-site #局部安装使用此命令,用法如上

执行此条命令会在工程目录中生成wrangler.tomlaworkers-site,其中wrangler.toml是工程中 Wrangler 的配置文件。

配置 Wrangler

简单设置 Wrangler.toml

默认生成的wrangler.toml如下,可依据设置

1
2
3
4
5
6
7
8
9
10
name = "site"               #此处为之前初始化填写的Workes名称
type = "webpack"
account_id = "" #这里填写自己的Workers ID,在Workers面板中查找
workers_dev = true
route = "" #这里是个性化域名区域
zone_id = ""

[site]
bucket = "public" #这里填写Hexo程序默认的生成目录文件
entry-point = "workers-site"

配置个性化域名(这一步可以不填写,使用默认的 Workers 域名)

根据以下提示写入wrangler.toml

1
2
zone_id = "42ef.."
route = "example.com/*"

设置自定义域名时,可以在 wrangler 配置完成后,在域名管理中的 Workers 设置中添加对应的 Workers 路由,再将 SSL 安全级别调整为 Flexible,否则会遇到 SSL 526 错误。

上传全站到 Cloudflare Workers

使用 Hexo 生成一次静态文件

首先使用 Hexo 在工程目录生成一次静态文件,以产生public文件,如不生产则会下下一步上传中报错。

上传 Public 到 Cloudflare

控制台中运行

1
$ wrangler publish

提示以下即完成所有的运行操作。

1
2
3
4
5
6
7
Using namespace for Workers Site "__site-workers_sites_assets"
Uploading site files
Success
⬇️ Installing wranglerjs...
⬇️ Installing wasm-pack...
Built successfully, built project size is 11 KiB.
Successfully published your script to https://*.workers.dev #这里就是生成的预览地址

部署在 Workers 的 Hexo 演示程序:https://test.pv.workers.dev/ ,演示程序所生成的静态文件存储在对应的 Workers KV 中。


注意,免费版本的 Workers Plan 有每天 100,000 次的访问限制(100,000 requests per day ),免费额度适合小站部署(流量大容易翻车),大站还是使用独立服务器或者收费版本部署稳一些。