项目目前处于开发阶段,文档可能未及时更新或存在描述不清,如遇部署失败请提 Issue
我们在文档末尾追加了完整的部署流程演示视频,以便解决您在部署期间遇到的部分困难
下文代码块中若出现形如 <文字> 的内容表示需要根据文字提示替换为自己的内容(<
和>
不要保留),如:
表示将 <数据库名称> 替换为你喜欢的名称,这里使用 rin 替换:
这就是最终的命令
打开仓库页面:https://github.com/openRin/Rin
点击 Fork 按钮 fork 出一个新仓库
先简单介绍一下前端与后端的关系,前端是一个静态页面,托管于 Cloudflare Pages上,前端本质上只是一堆不会变化的文件和代码,并没有你的文章数据之类的内容,想要实现如登录,写文章,评论,获取文章和内容、评论列表等逻辑还需要与后端进行数据交换;
后端负责处理具体的逻辑,在本项目中后端运行在 Cloudflare Workers 上,前端通过 API 与后端通信,后端通过 Cloudflare D1 保存文章等数据,通过 Cloudflare R2 存储文章中的图片
下文提到的前端与后端你可以分别等价代换为 Cloudflare Pages 与 Cloudflare Workers,当提到说需要前端地址或者后端地址时,即为 Cloudflare Pages 地址或 Cloudflare Workers 地址,你可以在 oudflare 控制面板中通过少量的操作找到这两个地址,如下面的截图所示:
前端(Pages)的地址在 Workers 和 Pages
> 你的 Pages 项目 > 部署
中可以找到:
图中的rin-6qe.pages.dev
,direct.xeu.life
都是前端地址,如果有更多的地址,你还可以点击形如 +2 个域
的链接查看更多的地址,这些地址都是可以访问的,你可以使用其中任意一个地址,但是需持不同地方都填写的是同一个前端地址(如果有多个环境变量要求填写前端地址的话),通常来说前端地址是 https://rin-6qe.pages.dev
或 https://direct.xeu.life
这样的形式
后端(Workers)的地址在 Workers 和 Pages
> 你的 Workers 项目 > 设置
> 触发器
中可以找到:
图中的 rin.xeu.life
和 rin-server.xeu.workers.dev
都是后端地址,前者是自定义域名,后者是默认分配的域名,你可以使用默认分配的域名,也可以自定义域名,自定义域名需要在 Cloudflare 控制面板中进行配置,在本文档中当要求填写后端地址时,你可以填写形如 https://rin.xeu.life
或 https://rin-server.xeu.workers.dev
的地址,但需保持不同地方都填写的是同一个后端地址(如果有多个环境变量要求填写后端地址的话)
登录 Cloudflare 控制台,进入 Workers 和 Pages
页面,点击创建应用程序
,选择 Pages
点击连接到 Git 连接自己的 GitHub 账号并选择 Fork 的存储库
点击 开始设置
进入配置页面:
构建设置按照填入以下内容:
环境变量复制以下内容,根据自身情况修改变量值:
最后两行环境变量 SKIP_DEPENDENCY_INSTALL
和 UNSTABLE_PRE_BUILD
为配置 Cloudflare 使用 Bun 进行构建的参数,不要修改
点击保存并部署
,等待构建部署,不出意外的话约 30s 后即可部署完成:
点击打开即可看见前端页面
前端就全部部署完成啦 🎉
如遇以下错误,请检查环境变量中是否存在空格等无关内容
如错误提示为以下内容,请点击重试部署
再次尝试:
后续可以在 Pages 的设置中再次修改环境变量以及配置域名
但是现在页面中什么内容也没有,因为我们还没有开始部署后端
后端部署比较繁琐,但经过几次的优化部署流程,现在已经大大简化了
参照 https://developers.cloudflare.com/workers/wrangler/ci-cd/ 来配置 GitHub Actions 所需的 Cloudflare 登录环境变量
ID 随意点击一个自己绑定的域名,进入后在右侧(需要向下滑动一段距离)可以找到账户ID
创建 API 令牌:点击右上角头像
> 我的个人资料
> API 令牌
> 创建令牌
,模板选择编辑 Cloudflare Workers
:
创建完成后保存令牌
在自己 fork 的仓库中 > Settings
> Secrets and Variables
> Actions
> Repository secrets
点击 New repository secret
创建以下两个密钥:
同时你可以在Actions secrets and variables
的 Variables
中创建以下变量:
关于 SEO 工作原理与配置请参考 SEO 文档
完成准备工作以后即可在 GitHub Action 中手动触发一次 Workflow,一切正常的话很快就能部署完成
这样服务端就部署好了,但是目前仍然不能运行,我们还需要配置 GitHub OAuth 用于登录和 S3 存储用于存储图片
在 v0.2.0 版本后,不再需要回到 Cloudflare 面板配置后端域名与一些敏感的环境变量,所有环境变量都可以通过 GitHub 创建对应的密钥来添加,如果你在更早的版本中部署过,需要将环境变量迁移到 GitHub 中
回到 Cloudflare 面板配置后端域名与一些敏感的环境变量
在设置
>触发器
>自定义域
处可以自定义后端的域名,默认也有分配一个workers.dev
的域名
在在 v0.2.0 版本后,以下所有环境变量都建议通过在 GitHub 创建对应的密钥来添加,添加方式与上文添加设置
>变量
>环境变量
处编辑变量,点击添加变量,复制粘贴以下内容至变量名处即可自动添加上所有环境变量,之后再根据自己的具体配置修改变量值:CLOUDFLARE_ACCOUNT_ID
与CLOUDFLARE_API_TOKEN
相同,以下是环境变量列表:
打开 https://github.com/settings/developers,选择 New OAuth App
创建一个新的 Oauth App,填入自己的应用名称与主页地址(带http://
或https://
),Authorization callback URL
填写
这里附上我的参数
随后配置环境变量中 OAuth 部分
以下是具体的配置,RIN_GITHUB_CLIENT_ID
填写 GitHub OAuth App 中的Client ID
,RIN_GITHUB_CLIENT_SECRET
填写在 GitHub OAuth App 点击 Generate a new client secret
后的 Client secret
,注意每次创建后只展示一次,后续无法查看,如果不慎丢失重新生成一个新的即可
理论上支持任意遵循 S3 协议的对象存储服务,这里只介绍接入 Cloudflare R2 的操作
Cloudflare 面板中点击 R2
> 创建存储桶
,填写名称,选择距离自己近的位置:
创建存储桶之后进入存储桶详情页 > 设置
,复制 S3 API 地址,去除末尾的存储桶名称后填入 S3_ENDPOINT
,如:
然后在公开访问
处绑定一个域名用于访问资源,绑定的域名对应于S3_ACCESS_HOST
环境变量:
然后创建一个 API 令牌用于访问存储桶,可参考 https://developers.cloudflare.com/r2/api/s3/tokens/ ,这里不再赘述,拿到 ID 和 TOKEN 对应于S3_ACCESS_KEY_ID
和 S3_SECRET_ACCESS_KEY
变量,填入 Workers 的环境变量中
至此后端就已经部署完成了,记得将前端的 API_URL 修改为后端的地址,与此同时,如果你需要 WebHook 通知的话,还可在后端配置环境变量WEBHOOK_URL
为你的 Webhook 地址,在新增评论时会像目标 URL 发送一条 POST 消息,消息格式为:
在所有环境变量调试完毕后可点击加密按钮加密环境变量(只保留 FRONTEND_URL 和 S3_FOLDER),这样下次部署时加密的环境变量就不会覆盖/删除了
由于时间原因未对以下视频做剪辑与后期说明处理,如果对于部署流程不了解或疑惑可参考视频步骤