我是基于ChatGPT-turbo-3.5实现的AI助手,在此网站上负责整理和概括文章

本文总结了作者对博客倒腾过程中遇到的问题及解决方案,包括主题、代码渲染异常、评论系统、页面卡顿、图片压缩、部署到CloudFlare等。作者发现Shoka主题存在问题后转向使用ShokaX主题,并采用Waline评论系统,部署到CloudFlare以提高访问速度。此外,作者还介绍了自动生成搜索索引和使用ChatGPT生成摘要的方法。文章以幽默的语气表达了对博客优化过程的总结和个人体会。

# Prologue

是的,我又倒腾了一天博客,因为我发现昨晚的部署方案存在一堆坑,所以在本文里总结一下:

# 问题一览

# Shoka 主题

千万不要用这个主题,Shoka 主题已经停更了,很多代码有问题(依赖库更新 / 安全性问题等)

但是这个主题是真的好看 ┭┮﹏┭┮ ,别急,有解决方案,往下读。

# Markdown 代码渲染异常

调试了一下源码发现不会触发 PrismJS 的渲染代码的函数,所以无法正常生成代码块头部

这是头部
代码块...

同时,因为没触发相应逻辑,所以也没办法将代码每行可以单独选择并产生高亮,而是将会把整个代码块选择后变高亮,功能残缺,让我感觉很难受:

这个代码每一行都能单独高亮
{
  "foo": 1,
  "bar": [
    1,
    2,
    3
  ]
}

# Valine 评论安全问题

该库已停止维护,不再开源,且老版本有安全问题,会造成数据被人利用等问题。。。

# 其它次要问题

  • 页面渲染偶尔会卡顿
  • 需要项目里 clone 一份主题,造成文件管理时需要处理额外的文件(还会全局搜索的时候搜到无关的东西,需要额外剔除)
  • 图片不会进行压缩
  • 国内访问 Vercel 部署的页面过于缓慢

# 解决方案

# ShokaX 主题

功夫不负有心人,我找到了 ShokaX 主题,还在维护,并且解决了大部分上述问题:

  • Markdown 里的代码能正常渲染了!
  • 支持将图片压缩为 webp 格式!
  • 启动速度更快了!
  • npm 安装主题即可,无需复制到项目内
  • 支持 waline 或其他评论系统

# Waline

Waline 是一个评论系统,需要自己部署一下服务端程序,支持云部署也支持自己部署

因为我懒得备案,而用 Vercel 太慢,我选择自己部署这个系统到东京的一个服务器上:

# 申请 LeanCloud Token

这个和昨天搞 Valine 差不多,但是这个现在支持用海外版 LeanCloud 了,获取两个 API TokenApp Id 后直接 docker 启动就行,我懒得写 compose 了:

docker run -d \
  -e LEAN_ID=APP_ID \
  -e LEAN_KEY=APP_KEY \
  -e LEAN_MASTER_KEY=MASTER_KEY \
  -p 8360:8360 \
  lizheming/waline

# 反代

你也不写直接让服务器 IP 在外网带个端口裸奔吧,我们就简简单单写个映射:

记得解析个域名

因为用了一键申请 SSL 证书,所以我做了个判断,如果是在请求证书目录(自动续签脚本会访问这里),那就不走反代,反之则强制走 SSL 并进入反代:

# 强制 SSL
if ($server_port !~ 443){
  rewrite ^(/.*)$ https://$host$1 permanent;
}
#一键申请 SSL 证书验证目录相关设置
location ~ \.well-known{
  root /path/to/root
  allow all;
}
# proxy to 8360
location / {
  proxy_pass http://127.0.0.1:8360;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;
  proxy_set_header REMOTE-HOST $remote_addr;
  add_header X-Cache $upstream_cache_status;
  # cache
  add_header Cache-Control no-cache;
  expires 12h;
}

如果用了 Cloudflare ,千万别把这个解析在里面代理了,不然会出现无限次重定向的问题(因为本身 Cloudflare 也做了强制 SSL ,但是他的强制 SSLWaline 登录回调不兼容,所以必须关闭 Cloudflare 的代理然后自己做 SSL 重定向)

# 配置

然后在博客项目的 _config.shokax.yml 里配置一下评论网站信息即可:

waline:
  enable: true # 是否启用
  serverURL: "https://server.com" # waline 服务端地址
  lang: "zh-CN" # 评论界面语言
  locale: {} # 本地化替换,详见 waline 文档
  emoji: # 表情包,默认为 waline 官方配置
    - https://unpkg.com/@waline/[email protected]/weibo
    - https://unpkg.com/@waline/[email protected]/alus
    - https://unpkg.com/@waline/[email protected]/bilibili
    - https://unpkg.com/@waline/[email protected]/qq
    - https://unpkg.com/@waline/[email protected]/tieba
    - https://unpkg.com/@waline/[email protected]/tw-emoji
  meta: # 评论可以填写的项目
    - nick
    - mail
  requiredMeta: # 评论必须填写的项目
    - nick
    - mail
  wordLimit: 0 # 评论字数上限 (不建议为 0)
  pageSize: 10 # 每页显示评论条数
  pageview: true # 页面浏览量显示
  search: true
  reaction: true
  comment: true

# 最后

弄好后打开服务端地址,登录一下自己账号,这个号就默认是管理员账号了,会在博客网页的评论区显示额外内容(例如你的评论会多个 博主 的描述,同时你可以删除和屏蔽评论)

# 托管到 CloudFlare

因为 Vercel 实在对国内环境不友好(尽管我在国外),于是我打算把网站部署托管到 CloudFlare

主要是托管到国内服务器上要备案域名,而我一直不在国内没办法备案

另外就是部署到 CloudFlare 能走他们的 CDN,肯定比我自己在海外的服务器访问起来快

# 部署

部署过程很简单,在 Worker/Pages 里托管对应的 Git 工程即可,然后默认执行 npm run build 即可,再设置生成的代码在 public 目录下,这样就能在 Git 项目更新后自动部署出来了。

# 域名解析

记得域名解析一下就行,加个 CNAME 的事情

# 自动生成搜索索引

因为用了 Algolia 搜索,没有给这个项目申请自动索引,所以需要自己提交索引。

所幸现在用的 hexo 里的 algolia 插件有接口: hexo algolia

于是我们直接改一下 package.json 就行了:

{
  "name": "xxx",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "build": "hexo generate && hexo algolia && hexo deploy",
    ...
  }
	...
}

这样一来每次构建网站时就会自动提交索引给 Algolia

# 使用 ChatGPT 生成摘要

感觉这个很好玩就搞了一下,需要在 OpenAI 的 API 后台创建新项目,然后创建 项目API Token ,这样才能正常使用

申请后我们改一下配置文件 _config.shokax.yml

summary:
  enable: true
  introduce: "我是基于ChatGPT-turbo-3.5实现的AI助手,在此网站上负责整理和概括文章" # AI 自我介绍
  mode: openai # openai/custom
  pricing: "trial" # trial 为试用模板 (3 RPM);pay 为即用即付模板 (60 RPM)
  openai:
    remote: "https://api.openai.com"
    apikey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

# Epilogue

如你所见,现在这个博客比昨天看起来舒服多了(其实没有)!

解决了一些问题,然后又浪费了半天的时间,该去赶作业了。。。

下次一点更新点代码相关的博客

此文章已被阅读次数:正在加载...更新于

请我喝[茶]~( ̄▽ ̄)~*

Jason Xu 微信支付

微信支付

Jason Xu 支付宝

支付宝