ZrLog 从 3.2 适配了 AWS 的 Lambda 服务,基于 Lambda 搭建的博客程序会更加的简单,同时基本不用关心服务器相关的环境了,本文用于帮助大家在 Lambda 环境上运行 ZrLog
通常优先选择离自己较进的区域,比如 亚太,或者是选择美国的区域(及离自己落地比较进区域),减少网络跳的次数
提示:选择非中国区域可单个帐号可以获得 100gb 的出口流量(覆盖 aws 所有产品)
创建数据库过程通常比较简单,只是我们还需要让这个 D1 数据库能够通过 webapi 的方式能让 ZrLog 程序正常的完成数据库的连接,及通过 worker 的方式去访问 D1 数据库
https://github.com/zrlog-extensions/faas-deploy/blob/main/cloudflare/d1-database-worker/index.js
注:可以直接复制
为了方便 worker 的使用,配置环境变量可以避免将敏感的变量硬编码到代码中
上面三个变量都可以是 cf 允许的任何字符串,分别对于安装是需要的 数据库名称,及数据库帐号和密码
简单测试以下 https://xxx.xxxx.workers.dev/_region
输出 worker 运行的区域就表示, D1 数据完成搭建了
这里的 xxx 表示为 cf 的 worker 名称, xxxx 为用户名,xxx.xxxx.workers.dev 就是后面安装引导需要填写的数据库主机地址
稳定 faas.zip 包 https://dl.zrlog.com/release/zrlog-Linux-amd64-faas.zip
预览 faas.zip 包 https://dl.zrlog.com/preview/zrlog-Linux-amd64-faas.zip
使用界面创建 Lambda 的方法,推荐函数方法名称为为实际部署的域名关联,比如 demo.zrlog.com -> demo-zrlog-com
由于包文件超过了 50mb 了,无法通过 web 界面上传,需要创建一个 S3 的仓库,同时后续更新程序也需要这个仓库作为临时的文件存储服务,推荐仓库名为 demo-zrlog-com-update-bucket
export LAMBDA_S3_REPO_NAME="zrlog-update-bucket"
export AWS_LAMBDA_FUNCTION_NAME="demo-zrlog-com"UA="Mozilla/5.0 (X11; Ubuntu; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
wget --user-agent="${UA}" -O "/tmp/zrlog-Linux-amd64-latest.zip" "https://dl.zrlog.com/release/zrlog-Linux-amd64-faas.zip"
aws s3 cp /tmp/zrlog-Linux-amd64-latest.zip s3://${LAMBDA_S3_REPO_NAME}/zrlog-Linux-amd64-latest.zip
aws lambda update-function-code \
--function-name ${AWS_LAMBDA_FUNCTION_NAME} \
--s3-bucket ${LAMBDA_S3_REPO_NAME} \
--s3-key zrlog-Linux-amd64-latest.zip在 Lambda 控制面板主页获取到 Function Url,并访问,完成数据的初始化,同时按照引导完成环境变量的配置
Lambda 默认超时时间较短,若开启全站静态化需要将超时时间改长一点,推荐配置为最大的 900 秒,避免极端情况下无法完成静态页面的同步
到这里基本就完成了基础无服务博客了,如果还需要将公开内容,还需绑定域名,完成静态页面的托管,以加速访问速度
请参考这篇文章,无服务上云 Cloudflare Pages 篇