Cloudflare Workers 博客系统部署备忘录
# Cloudflare Workers 博客系统部署备忘录
本文档记录了基于 Cloudflare Workers、D1 数据库 和 KV 存储构建的轻量级博客系统的完整部署流程与配置说明。
* 运行环境:Cloudflare Workers (Edge Runtime)
* 数据库:Cloudflare D1 (SQLite)
* 配置存储:Cloudflare KV
* 前端样式:浅蓝色科技风三栏布局
* 主要功能:文章发布、分类管理、"随心说"(微动态)、评论系统、全站搜索、Turnstile 人机验证。
---
首先需要在 Cloudflare 控制台创建 D1 数据库并执行初始化 SQL。
1. 登录 Cloudflare Dashboard。
2. 进入 Workers & Pages -> D1 SQL Database。
3. 点击 Create database,输入数据库名称(例如:
4. 记录下生成的 Database ID,稍后绑定需要用到。
点击进入创建好的数据库,选择 Console 标签页,依次执行以下 SQL 语句:
创建文章表
CREATE TABLE IF NOT EXISTS posts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT,
content TEXT,
cover_image TEXT,
category_id INTEGER,
password TEXT,
type TEXT DEFAULT 'post',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
创建分类表
CREATE TABLE IF NOT EXISTS categories (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
slug TEXT
);
创建评论表
CREATE TABLE IF NOT EXISTS comments (
id INTEGER PRIMARY KEY AUTOINCREMENT,
post_id INTEGER NOT NULL,
author_name TEXT NOT NULL,
content TEXT NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
status TEXT DEFAULT 'approved'
);
---
KV 用于存储博客的基础配置信息(如站点名称、管理员密码等)。
1. 进入 Workers & Pages -> KV。
2. 点击 Create a namespace,输入名称(例如:
3. 记录下生成的 Namespace ID。
1. 进入 Workers & Pages -> Overview。
2. 点击 Create Worker(如果已创建则点击进入编辑)。
3. 点击 Settings -> Variables。
4. 在 KV Namespace Bindings 区域添加绑定:
* Variable name:
* KV namespace: 选择刚才创建的
5. 在 D1 Database Bindings 区域添加绑定:
* Variable name:
* D1 database: 选择刚才创建的
---
进入 Cloudflare KV 页面,选择你的命名空间,手动添加以下键值对。
| Key (键) | Value (值) | 说明 |
| :--- | :--- | :--- |
|
|
|
|
|
|
|
|
> 注意:如果暂时不想使用评论验证码,可以暂时不添加
---
为了防止垃圾评论,建议开启此项。
1. 访问 [Cloudflare Turnstile](https://dash.cloudflare.com/?to=/:account/turnstile)。
2. 点击 Add site,域名填写你的博客域名。
3. 获取 Site Key 和 Secret Key。
4. 将其填入 KV 的
* 访问地址:
* 登录:使用 KV 中设置的
* 功能:
* 发布文章/随心说。
* 管理分类(支持删除,删除后文章归入“其他”)。
* 修改文章分类。
* 删除评论。
* 后台发布内容时,选择类型为 "随心说"。
* 该内容会出现在右侧边栏流中,且不会显示在首页文章列表。
* 支持直接展示 Markdown 格式。
* 发布文章时填写“密码”字段。
* 访问该文章时需要输入密码才能查看。
---
1. 发布文章后提示乱码:
* 确保代码中所有
2. 评论提示“人机验证失败”:
* 检查 KV 中是否正确配置了 Turnstile 密钥。
* 如果不需要验证,删除 KV 中的
3. 首页只显示几篇文章,没有翻页:
* 检查 KV 中的
* 确保文章总数超过了
4. 左侧分类栏“其他”是什么:
* 用于展示所有未设置分类的文章。
* 当你删除某个分类时,该分类下的文章也会自动归入“其他”。
本文档记录了基于 Cloudflare Workers、D1 数据库 和 KV 存储构建的轻量级博客系统的完整部署流程与配置说明。
一、 系统架构概览
* 运行环境:Cloudflare Workers (Edge Runtime)
* 数据库:Cloudflare D1 (SQLite)
* 配置存储:Cloudflare KV
* 前端样式:浅蓝色科技风三栏布局
* 主要功能:文章发布、分类管理、"随心说"(微动态)、评论系统、全站搜索、Turnstile 人机验证。
---
二、 数据库配置 (D1)
首先需要在 Cloudflare 控制台创建 D1 数据库并执行初始化 SQL。
1. 创建数据库
1. 登录 Cloudflare Dashboard。
2. 进入 Workers & Pages -> D1 SQL Database。
3. 点击 Create database,输入数据库名称(例如:
blog_db)。
4. 记录下生成的 Database ID,稍后绑定需要用到。
2. 执行 SQL 建表语句
点击进入创建好的数据库,选择 Console 标签页,依次执行以下 SQL 语句:
创建文章表
`sql
CREATE TABLE IF NOT EXISTS posts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT,
content TEXT,
cover_image TEXT,
category_id INTEGER,
password TEXT,
type TEXT DEFAULT 'post',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
`
创建分类表
`sql
CREATE TABLE IF NOT EXISTS categories (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
slug TEXT
);
`
创建评论表
`sql
CREATE TABLE IF NOT EXISTS comments (
id INTEGER PRIMARY KEY AUTOINCREMENT,
post_id INTEGER NOT NULL,
author_name TEXT NOT NULL,
content TEXT NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
status TEXT DEFAULT 'approved'
);
`
---
三、 KV 存储配置
KV 用于存储博客的基础配置信息(如站点名称、管理员密码等)。
1. 创建 KV 命名空间
1. 进入 Workers & Pages -> KV。
2. 点击 Create a namespace,输入名称(例如:
blog_config)。
3. 记录下生成的 Namespace ID。
2. 绑定变量
1. 进入 Workers & Pages -> Overview。
2. 点击 Create Worker(如果已创建则点击进入编辑)。
3. 点击 Settings -> Variables。
4. 在 KV Namespace Bindings 区域添加绑定:
* Variable name:
CONFIG (必须完全一致)
* KV namespace: 选择刚才创建的
blog_config。
5. 在 D1 Database Bindings 区域添加绑定:
* Variable name:
DB (必须完全一致)
* D1 database: 选择刚才创建的
blog_db。
---
四、 系统参数设置 (KV 键值对)
进入 Cloudflare KV 页面,选择你的命名空间,手动添加以下键值对。
| Key (键) | Value (值) | 说明 |
| :--- | :--- | :--- |
|
site_name | 你的博客名称 | 显示在左上角和浏览器标题 |
|
site_desc | 你的博客介绍 | 显示在名称下方 |
|
footer_text | Copyright © 2024... | 页脚版权信息 |
|
admin_user | admin | 后台管理员账号 |
|
admin_pass | yourpassword | 后台管理员密码 (建议设置复杂密码) |
|
page_size | 10 | 首页每页显示文章数量 |
|
turnstile_site_key | Your_Site_Key | Cloudflare Turnstile 站点密钥 (可选) |
|
turnstile_secret_key | Your_Secret_Key | Cloudflare Turnstile 密钥 (可选) |
> 注意:如果暂时不想使用评论验证码,可以暂时不添加
turnstile_ 开头的两个键,或者留空。代码会自动处理。
---
五、 功能配置说明
1. Turnstile 人机验证配置 (推荐)
为了防止垃圾评论,建议开启此项。
1. 访问 [Cloudflare Turnstile](https://dash.cloudflare.com/?to=/:account/turnstile)。
2. 点击 Add site,域名填写你的博客域名。
3. 获取 Site Key 和 Secret Key。
4. 将其填入 KV 的
turnstile_site_key 和 turnstile_secret_key 中。
2. 后台管理
* 访问地址:
你的域名/admin
* 登录:使用 KV 中设置的
admin_user 和 admin_pass 登录。
* 功能:
* 发布文章/随心说。
* 管理分类(支持删除,删除后文章归入“其他”)。
* 修改文章分类。
* 删除评论。
3. "随心说"功能
* 后台发布内容时,选择类型为 "随心说"。
* 该内容会出现在右侧边栏流中,且不会显示在首页文章列表。
* 支持直接展示 Markdown 格式。
4. 文章加密
* 发布文章时填写“密码”字段。
* 访问该文章时需要输入密码才能查看。
---
六、 常见问题排查
1. 发布文章后提示乱码:
* 确保代码中所有
Response 返回头部都包含 charset=utf-8。最新版代码已修复此问题。
2. 评论提示“人机验证失败”:
* 检查 KV 中是否正确配置了 Turnstile 密钥。
* 如果不需要验证,删除 KV 中的
turnstile_secret_key 即可关闭验证。
3. 首页只显示几篇文章,没有翻页:
* 检查 KV 中的
page_size 设置。
* 确保文章总数超过了
page_size,否则不会显示分页按钮。
4. 左侧分类栏“其他”是什么:
* 用于展示所有未设置分类的文章。
* 当你删除某个分类时,该分类下的文章也会自动归入“其他”。
评论 (0)
发表评论