Skip to main content
一切皆代码

静态博客的更优解法:CNB 云原生开发 + EdgeOne Pages

2025年快过完了,5年前的文章介绍了使用Coding IDE + COS + CDN 来部署博客的方法,现在回头看,略显复杂,写的又臭又长,配图达到逆天的30+。

而且 Coding 已经公告下线了,那么,是时候介绍一个更优雅的静态博客部署方式了。

这篇文章献给我几个好朋友,他们有的还在用老古董的虚拟主机部署的 Wordpress,这篇文章能让他们从此不用操心服务器、网站被黑、数据丢失等一系列问题;

除此之外本地也不用再装开发环境了,随时随地都可以通过浏览器写博客,哪怕手机也行;

更重要的是在可预见的将来,都不需要为这些便宜且大碗、便捷且安全、运行稳定且访问快速的服务付费呢。


前提条件

  • 接受实名认证
  • 拥有自己的域名(能在大陆备案更好,不能也行)
  • 稍微带点耐心,如果你没有任何代码基础,那么整个部署流程可能需要约 60 分钟的专注时间。

第一步:开启 CNB 云原生开发

注册账号、创建组织、创建仓库、开启云原生开发并进入 WebIDE,相信你,有手就行!


注意

创建仓库时属性选择「私密」,因为后面要填 Secret ID/Key

1:创建组织

2:创建仓库

3:开启远程开发

4:进入 WebIDE


第二步:配置 CNB 开发环境

这里还是用 Hexo 这个久经考验的博客框架来举例,需要配置 Nodejs 的开发环境。

在左边栏的文件中我们新建三个文件,其中重要的两个分别是 .ide/Dockerfile.cnb.yml ,具体含义有兴趣的可以去读文档,这里就跳过解释。

注意

这两个文件的路径关系,不是同级的哦


.ide/Dockerfile 文件内容如下:

# .ide/Dockerfile

# 可将 node 替换为需要的基础镜像
FROM node:20

# 安装 code-server 和 vscode 常用插件
RUN curl -fsSL https://code-server.dev/install.sh | sh \
  && code-server --install-extension cnbcool.cnb-welcome \
  && code-server --install-extension redhat.vscode-yaml \
  && code-server --install-extension dbaeumer.vscode-eslint \
  && code-server --install-extension waderyan.gitblame \
  && code-server --install-extension mhutchie.git-graph \
  && code-server --install-extension donjayamanne.githistory \
  && code-server --install-extension tencent-cloud.coding-copilot \
  && echo done

# 安装 ssh 服务,用于支持 VSCode 等客户端通过 Remote-SSH 访问开发环境(也可按需安装其他软件)
RUN apt-get update && apt-get install -y git wget unzip openssh-server

# 指定字符集支持命令行输入中文(根据需要选择字符集)
ENV LANG C.UTF-8
ENV LANGUAGE C.UTF-8

.cnb.yml 文件内容如下:

# .cnb.yml
$:
  vscode:
    - docker:
        build: ./.ide/Dockerfile
      runner:
        cpus: 4
      services:
        - vscode
        - docker
      stages:
        - name: ls
          script: ls -al
        
        - name: 拉起 WebIDE
          script: vscode:go

push.sh 文件内容如下:

#!/bin/bash
SCRIPT_DIR=$(dirname "$(readlink -f "$0")")
cd "$SCRIPT_DIR" || exit
git add .
git commit -m "new"
git push origin main

新建好这三个文件后,在 WebIDE 页面中按Ctrl+Shift+C打开终端,执行 push.sh,输入:

sh ./push.sh
文件保存

注意从此以后,每次修改后要保存生效并同步更新博客,都需要在关掉 WebIDE 前先执行 push.sh 这个脚本,否则修改可能会丢失。 当然如果确实忘了也不用怕,云开发环境会为我们临时保留上次修改还未提交保存的内容,具体可看官方文档


看到 Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 这样的字样后接着敲:

kill 1

5:首次配置 WebIDE 开发环境

kill 1 后 WebIDE 及开发就被销毁了,这时我们关闭这个网页,来到刚刚新建的仓库页面,刷新一下,刚刚三个文件应该已经出现了。

重新点击云原生开发,再次拉起配置好开发环境的 WebIDE,首次拉起开发环境时间会长点(约2分钟左右),稍等会。

6:再次进入 WebIDE


第三步:安装博客程序

按照 Hexo 官方文档 中的步骤,我们首先安装 Hexo 框架程序,在终端中执行:

npm install -g hexo-cli
mkdir Blog
cd Blog
hexo init

不出意外几秒钟就搞定,然后我们试试博客预览,在终端中接着敲:

hexo s

7:安装博客框架并测试预览

右下角会弹窗,提供生产环境端口预览,点击「Open in Browser」,就可以跳转页面查看博客雏形了,如果需要结束预览,回到 WebIDE 的终端,按下 Ctrl+C 即可结束预览程序。


第四步:配置博客信息,并切换博客主题

博客的主要信息例如网站名称、网址、博主名称等都在 /Blog/_config.yml 文件中填写。

具体可以查看官方文档


然后找一个我们想要的主题,有两个方法:


接下来我们以我比较喜欢的风格:hexo-theme-fluid 为例,将其设为自己博客的默认主题。

以下操作均来自官方教程

回到 WebIDE的 终端中,首先进入博客程序路径:

cd /Blog

然后执行:

npm install --save hexo-theme-fluid

if [ "$(basename "$(pwd)")" = "Blog" ]; then wget https://raw.githubusercontent.com/fluid-dev/hexo-theme-fluid/refs/heads/master/_config.yml -O _config.fluid.yml && echo "下载成功"; else echo "错误:当前路径不是 ./Blog"; fi

这时博客 /Blog 路径下会出现 _config.fluid.yml 文件,用于个性自定义博客主题,其中的注释写的非常详细,仔细对照着修改,相信你,有手就行!

8:安装博客主题


修改完主题配置 _config.fluid.yml 后,我们再来修改博客配置 _config.yml,启用这个主题:

分别找到 languagetheme,将默认的 enlandscape 分别改为如下:

language: zh-CN  # 指定语言,会影响主题显示的语言,按需修改
theme: fluid  # 指定主题

9:分别修改语言及默认主题


然后我们再在终端中执行 hexo s 看看改动是否生效吧!

10:博客已经准备就绪了!


第五步:配置并将博客部署至 EdgeOne Pages

注册账号、新建一个「直接上传」的 Pages 项目、获取 Pages API,相信你,有手就行!

这里以国内版为例,如果没有腾讯云账号,先注册一个(国内版可能会需要实名认证)。

随后进入 EdgeOne Pages 控制台,点击「立即开通」,然后新建一个「直接上传」的 Pages 项目,根据你自己域名有无备案选择可访问区(国内访问速度差不了太多)。

11:立即开通EO-pages

12:创建直接上传Pages项目

获取项目名称,后面要用。

13:获取项目名称备用

然后创建一个永久有效的 API,获取创建后的 API Token,后面要用。

14:创建Pages的API备用


回到 WebIDE,修改 .cnb.yml 文件:

  • 找到 vscode 部分的 stage ,在「拉起 WebIDE」之前增加一个安装 Hexo 环境依赖的步骤:

    - name: 安装依赖
      script: npm install -g hexo-cli && cd ./Blog && npm install

    注意与其他两个 - name 保持对齐,yaml 语法对缩进敏感。

  • .cnb.yml 最底下新增触发时间,当保存修改时自动将博客推送更新到 EO Pages 部署:

    main: 
      push: 
        - stages: 
            - name: 构建 Public 目录
              image: node:20
              script: node -v && npm install -g hexo-cli && cd ./Blog && npm install && hexo g
    
            - name: 部署到腾讯云 Edgeone
              image: node:20
              script: npx edgeone pages deploy Blog/public -n [Pages名字] -t [Pages API]

  • 我怕你修改出错,你可以直接复制完整的 .cnb.yml 配置文件:

    # .cnb.yml
    $:
      vscode:
        - docker:
            build: ./.ide/Dockerfile
          runner:
            cpus: 4
          services:
            - vscode
            - docker
          stages:
            - name: ls
              script: ls -al
            
            - name: 安装依赖
              script: npm install -g hexo-cli && cd ./Blog && npm install
    
            - name: 拉起 WebIDE
              script: vscode:go
    
    
    main: 
      push: 
        - stages: 
            - name: 渲染博客静态文件
              image: node:20
              script: node -v && npm install -g hexo-cli && cd ./Blog && npm install && hexo g
    
            - name: 部署到腾讯云 EdgeOne Pages
              image: node:20
              script: npx edgeone pages deploy Blog/public -n [Pages名字] -t [Pages API]

15:配置博客自动部署

然后,再在 WebIDE 的终端里执行: sh ../push.sh ,没什么意外,博客就会自动构建并推送部署到 EdgeOne Pages了。

然后我们输入 kill 1 结束 WebIDE。


第六步:配置自定义域名,欣赏新博客

16:添加自定义域名

到域名解析提供商那里按照指引设置好 cname 解析即可生效,使用自定义域名访问博客网站。


最后:补充说明

以后只要每次回到 CNB 的博客仓库,点击「云原生开发」按钮,拉起 WebIDE 开发环境,就可以开始修改博客配置、发表新文章了!

拉起 WebIDE 后终端的默认路径是 workspace,如果要进行 hexo [command] 的操作需要先通过 cd Blog 进入博客路径下操作。

务必注意

记得每次操作完都需要执行 push.sh 以保存生效并推送部署到 EO Pages 让博客网站更新。

当终端路径是 workspace 时,通过 sh ./push.sh 执行保存脚本;

当终端路径是 Blog 时,通过 sh ../push.sh 执行保存脚本;其他路径同理。



以防你还不清楚 Hexo 博客基本操作:

  • 为博客写作文章

    • WebIDE 中进入/Blog 路径:cd Blog

    • 然后在终端中执行hexo new 2025-fitst-post,这里 2025-fitst-post就是新建文章的自定义标题,最好不要用中文。

    • 文章会出现在 /Blog/source/_post 目录下,例如本次生成的即为 2025-fitst-post.md 文件。

    • 使用 Markdown 语法书写完毕后,终端执行 hexo s ,可以预览新文章情况,注意这时所有改动还未保存,如果要使改动生效,需要在终端执行 sh ../push.sh 哦。

17:新增博客第一篇文章


  • 新建「关于」(/about)页面

    • WebIDE 中进入 /Blog 路径

    • 执行:hexo new page about

    • /Blog/source目录下会出现 /about 文件夹和其内的 index.md,对应的就是博客网站中example.com/about 页面,书写方式同上。


  • 配置评论系统

    评论系统是需要数据库支持的,所以静态博客没法自带评论,那么我们需要引入第三方服务。

    例如 Fluid 主题支持的评论系统有很多种,官方文档中有列举,这里我们以 Waline 为例。

    我本想再详细讲讲,但是我一看 Waline 的用户手册已经写的足够详细了,所以你可以直接照着操作就行:https://waline.js.org/guide/get-started/


那么暂时先到这里。

散会。

评论