oynix

于无声处听惊雷,于无色处见繁花

通过Cloudflare部署博客

在Cloudflare上部署了一个静态网页博客,过程较为简单,在此记录一下。

1. 前言

想到部署博客,多数人首先想到的是Github Pages,主要是奔着它的免费域名去的,使用特殊的仓库名,最终博客名就可以用:

1
https://username.github.io

博客域名带github,看着好看还高级,当初我也是处于这个目的才部署,之前还写过文章介绍,并且这种教程文章网上一搜一大把。

但是,这种地址的博客,每个GitHub账号只能部署一个,部署第二个Pages时,域名就没这么简短好看了,除非再注册新账号。

其实,如果有自己的域名的话,部署静态网站,Cloudflare或许才是更好的选择,而且Cloudflare也有自己的Pages功能,只不过早期是独立的,现在和Workers服务合在一起了,但是不影响使用,主要有以下几个优点:

  • 免费的额度足够用,所以和GitHub一样,也是免费的
  • 免费使用Cloudflare的全球CDN
  • 免费使用网站数据分析
  • 免费使用网站的安全防护
  • 配置、部署更简单
  • 仓库可以设置成private,不必强制公开

当然,如果免费的套餐不够用,也可以开通不同价格的付费套餐。不过对于一个静态网站来说,已经足够用了。

2. 静态网站生成

作者写的是Markdown格式的文档,读者看的是网站,这是不同的东西,所以中间就需要一个转化器。我用的还是之前的Hexo,除此之外,还有Hugo、Jekyll,等等,这类工具大同小异:提供一个框架模版,作者在里面写Markdown格式的文档,然后工具负责将整体生成一个静态网站,读者访问的便是最终生成的网站,而不是作者写的md文档,GitHub在中间充当的是一个网站托管服务。

3. 部署

根据上面所说,可以看到,这里面有两套东西,一套是网站的源码,一套是工具生成出来的网站。GitHub的方式,先通过工具生成网站,然后把生成出来的网站,提交到一个仓库,最后开启并配置仓库的Pages功能。Cloudflare的方式,同样是将生成后的网站提交到仓库,然后会自动触发Workers的部署操作,这是大致流程,下面通过截图详细介绍一下。

3.1 创建Worker

Worker在这里,充当的是网站托管服务器,而每次访问的实际上也是Worker,Worker会根据配置,返回网站内容资源。首先在侧边栏找到功能入口:

然后是按部就班,GitHub的仓库选择之前配置Pages的仓库,其他的保持原样即可

3.2 配置自定义域名

打开刚刚创建好的Worker的域,可以看到Cloudflare给Worker分配的URL,此时,网站便是可以访问的了,使用其中的生产域名即可,但要开启右侧的开关,截图中的开关是关闭的,因为不需要。

我的域名就在用Cloudflare管理,所以点击添加域名后,直接输入子域名,或者直接使用根域名,然后就可以了,只需要一步操作,因为我希望只通过自定义的域名进行访问网站,而不通过Cloudflare分配的Worker URL,所以我关闭了上面的2个开关。

3.3 使用网站源码部署

上面说到,里面有两套东西,一套是网站的源码,一套是工具生成出来的网站,创建Worker时,关联的是GitHub上生成的网站的仓库,实际上,可以直接关联网站的源码仓库。新建一个GitHub仓库,将网站的源码push上去,然后在Worker的设置里,将关联的仓库改成网站的源码仓库,并且增加一条编译命令,

这样一来,在执行部署命令前,都会先执行编译命令,来生成静态网站,Worker会自动更新Pages配置,这样再次访问网站时,依旧可以正常访问。

其中的构建命令npm run build,执行的是网站源码仓库下的packge.json文件中的命令,如果没有,需要手动添加一下,然后再push到远程仓库,我这里用的是hexo,所以构建命令如下:

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
28
29
{
"name": "hexo-site",
"version": "0.0.0",
"private": true,
"hexo": {
"version": "5.4.0"
},
"scripts": {
"build": "hexo generate"
},
"dependencies": {
"eslint": "^7.29.0",
"hexo": "^5.4.0",
"hexo-deployer-git": "^3.0.0",
"hexo-generator-archive": "^0.1.4",
"hexo-generator-category": "^0.1.3",
"hexo-generator-feed": "^3.0.0",
"hexo-generator-index": "^0.2.0",
"hexo-generator-search": "^2.4.3",
"hexo-generator-tag": "^0.2.0",
"hexo-renderer-ejs": "^0.3.0",
"hexo-renderer-marked": "^4.0.0",
"hexo-renderer-stylus": "^0.3.1",
"hexo-server": "^0.2.0",
"hexo-symbols-count-time": "^0.7.1",
"hexo-wordcount": "^6.0.1"
}
}

------------- (完) -------------
  • 本文作者: oynix
  • 本文链接: https://oynix.com/2026/08/c08550ed68f7/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

欢迎关注我的其它发布渠道