抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

前言

经过了短暂的等待(其实不那么短暂),终于成功地将Qexo部署在了Vercel app上,再加上前几个月达成的博客仓库远程化,现目前已经彻底告别了只能在家本地修改博客的更新方式。现在可以通过部署在Vercel上的Qexo远程修改并推送至Github上的远程仓库,再通过 Github Actions 进行自动生成与发布,即可实现自动部署,大大简化了工作量。

当然,在实现这个效果之前,VercelGithub Actions 也是报了巨多的错,此处将记录过程中遇到的问题及解决方法。(看我记性,毕竟已经鸽了好久了:D)

此外,鉴于hcspace.top这个域名还没有到期,就顺便使用全球云平台 | Cloudflare 中国官网的免费CDN缓存服务,给VercelGithub Pages访问进行了加速。现在不用担心访问过慢了。

Cloudflare网络服务介绍

另外,博客评论系统已经更新至Twikoo | 一个简洁、安全、免费的静态网站评论系统,现在评论不用登录Github了。(气死我了Edge)

一、Qexo 的 Vercel 部署

这个章节记录了在Vercel部署Qexo时我遇到的问题与解决方案。详细部署方案请参阅Qexo (oplog.cn)官方文档。

1. ./migrate.sh: line 1: pip: command not found

选择Vercel 部署 (PostgreSQL/Vercel)的部署方案(其他部署方案类似),在重新部署操作遇到如下报错:

报错图片

1
./migrate.sh: line 1: pip: command not found

已解决。详见Vercel 部署 (PostgreSQL/Vercel) Redeploy 时报错:./migrate.sh: line 1: pip: command not found · Issue #524 · Qexo/Qexo (github.com)

解决方案:将nodejs版本降至18.x

详细步骤:Vercel -> 你的Qexo Project -> Settings -> General -> Node.js Version -> 将20.x改为18.x

然后Redeploy,问题解决。

二、Cloudflare 网络服务(CDN)

1. Vercel App 无法访问 & Github Pages 访问过慢

由于 VercelGithub 服务器都在国外,导致在国内访问有那么一点点麻烦。Vercel 有专门开的解析ip,而Github Pages 作为静态网页可以通过CDN服务器达到加速访问,这两个需求恰好可以通过Cloudflare的网络服务达成。下面介绍Cloudflare服务开通全过程。

2. 开通Cloudflare服务

注册Cloudflare账号后,在Dashboard侧边栏选择网站服务,在随后的页面输入你购买好的域名。(不要加主机名!!!)

输入你的域名,注意不要加www

接下来,选择Free计划,并开通服务。

选择计划面板

接下来的页面为DNS解析管理和DNS服务器修改指引,在你的域名管理后台处的DNS服务器修改为Cloudflare提供的服务器地址,使Cloudflare完全接管你的域名的DNS。到此,Cloudflare服务开通完成。

配置你的DNS服务器

3. 为 Vercel App 加速

添加A类型DNS解析,如xxx(也可以是泛解析),将内容填写为76.223.126.88。这是Vercel的官方加速ip。

添加DNS解析

然后,在你的Vercel项目设置里找到Domains设置项,在此处填写你解析好的域名,如xxx.example.com

为Vercelapp配置域名

最后,你可以在Cloudflare中把SSL/TLS模式改为严格,防止多次重定向导致无法访问。但是这个操作会导致Github Pages如果没有开启Enforce HTTPS就无法访问,保持完全选项即可。

SSl/TLS模式

到此,你可以使用xxx.example.com访问你的vercel app了。继续配置Qexo即可。

4. 为Github Pages加速

速度比较

由于Github Pages为静态网页,我们可以使用CDN来缓存.css.js文件,来减少客户端向Github请求的文件数量。使用Cloudflare的CDN缓存访问测速如下:

直接访问Github.IO的测速如下:

虽然看似直连访问更快,但也可以看到实际上并不稳定,成都的两个节点全部超时。而且还有矮墙影响,有些时候根本无法连接。因此,我们选择更稳定的Cloduflare的CDN缓存

CDN部署

详见博客:为Github page绑定自定义域名并实现https访问-CSDN博客。在域名解析时,我们使用Cloudflare的DNS解析即可。

具体操作:

1.添加解析

添加四个A类型解析与一个CNAME类型解析,如下:

我的A类型解析是泛解析,你可以在此自定义主机名,注意在Github上填写的是你设置A类型的域名!!!

几个ip:

1
2
3
4
185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153

其中www这个主机名指向你的github.io,使得www.example.com也能指向你的网站。

2.修改Github Pages Domian

按如图所示设置你的自定义域名:

设置之后,Github会帮你在仓库根目录创建CNAME文件并检测你的DNS解析,检测成功后,你就可以通过https://example.com访问你的站点并启用CDN缓存了。

当然,如果你是用的Hexo直接DeployGithub Pages仓库中,Hexo会覆盖掉仓库的所有内容导致CNAME文件丢失。此时在博客仓库或本地博客目录中创建Your-Hexo-Blog-Path\source\CNAME文件,文件中输入你的自定义域名example.com并保存,这样Hexo在每次Generate的时候就会把CNAME文件附加到public文件夹里并同时部署了。

你可以在Cloudflare仪表盘中的缓存选项中配置你的缓存计划。当你的站点更新涉及到被选中缓存的文件内容变动,但标识符未改变时,你也可以在这里删除你的CDN缓存对其进行刷新。

关于这方面操作涉及的实际问题,可参阅我的博客解决CDN缓存刷新问题 - H.C.Blog (hcspace.top)。该文章介绍的是本地CDN文件缓存刷新机制造成的问题,两者原理是相通的。但你不可能要求你的用户自行清空本地缓存文件,所以建议对文件的标识符进行版本区分。毕竟Cloudflare是在我们手里的。

结尾 & 相关链接

好了,这就是这篇博客的全部内容。

相关网页

相关博客

解决 Vercel 部署网站在国内被墙 | Zoey’s Blog (blog-zoey.top)

【教程】Github Page 添加自定义域名_github pages 自定义域名-CSDN博客

为Github page绑定自定义域名并实现https访问-CSDN博客

Unavailable for your site because your domain is not properly configured to support HTTPS · community · Discussion #134087 (github.com)

评论