使用第三方托管平台部署博客

写在前面

为了实现Serverless架构,部署博客到第三方托管平台是个不错的选择,同时也可以提升博客访问速度。
本文将介绍如何使用GitHub Pages,Vercel,Netlify和Zeabur第三方托管平台部署博客。

常见托管平台优劣比较

托管平台优点缺点
GitHubGithub免费服务,可用Github Action自动部署,限制较小。国内访问速度较慢,时常出现超时等情况。一般推荐
Vercel速度较快,支持监测GitHub仓库变动和持续部署,操作简单。推荐近年来IP屡次被墙,需要解析到自定义域名才能正常访问。
Netlify速度较快,支持监测GitHub仓库变动和持续部署,操作简单。推荐线路支持不全面,国内部分地区可能依然较慢,但足以满足大部分需求。
Cloudflare速度较快,支持监测GitHub仓库变动和持续部署,操作简单。一般推荐需要在CF处购买域名,否则需要将DNS解析权移交CF,国内部分地区访问速度可能仍不稳定。
Zeabur速度较快,有中文文档,支持监测GitHub仓库变动和持续部署,操作简单。免费线路只有海外,国内线路需要收费,免费计划环境随时可能会被删除。一般推荐
Railway基于Docker的云原生应用托管平台,同时支持部署数据库和缓存服务。不支持docker-compose,免费额度较小,依靠Docker部署,持续化部署可能会额度不足。 一般推荐
EdgeOne腾讯云推出的全栈开发部署平台,有详尽的文档,支持监测GitHub仓库变动和持续部署,支持源代码直接部署。 推荐腾讯的收费制度经常修改,可能不知道啥时候收费了。

部署方法

因 Gitee Pages 服务已永久关闭,本文不做说明。Railway因为额度问题暂时不考虑使用,同样不做说明。
所有部署方法实行前最好先完成GitHub Pages部署博客,这样方便导入项目。

建议使用GitHub Action部署博客,这样就无需每次更新都将博客文件上传到GitHub Pages仓库。
详见使用Github Action实现全自动部署

  1. 注册GitHub账号,并创建一个仓库,仓库名为[username].github.io,其中username为你的GitHub用户名。
  2. 将博客[Blogroot]/public/文件夹下所有内容上传至仓库或者使用hexo-deployer-git插件自动部署,具体步骤可参考官方文档
  3. 访问https://username.github.io即可访问你的博客。
  4. [Blogroot]/source/文件夹中新建 CNAME 文件,并将你的域名写入其中,如:blog.example.com,重新上传至仓库。
  5. 项目-Settings-Pages-Custom domain中绑定自定义域名(此时应已自动填写CNAME文件中的域名)。
    域名解析中
  6. 在你购买域名的运营商处修改域名的DNS解析,新增一条cname解析指向[username].github.io
    DNS记录
  7. 等待解析生效后,GitHub Pages验证后会自动签发HTTPS证书,等待约1小时后,即可访问用自己的域名访问博客。
  1. 访问Vercel官网,点击右上角的sign up进行注册(最好直接用Github账号注册,方便导入项目)
  2. 进入到项目管理页面后点击Add New...按钮,选择Project,选择你要部署的博客仓库,点击Import按钮,Framework Preset选择Other,点击Deploy按钮,等待部署完成。
    Vercel项目管理页面
    Vercel导入项目
    Vercel部署项目
  3. 因为国内Vercel基本处于无法访问状态,所以需要绑定自己的域名。在项目-Settings-Domains添加自己的域名,然后在运营商处按需求添加DNS解析。


  4. 等到域名解析生效,Vercel验证后会自动签发HTTPS证书,等待约15分钟后,就可以用自己的域名访问博客了。

国内访问Vercel速度较慢,解析时可以选择指向加速节点,例如
vercel.cdn.yt-blog.topcname-china.vercel-dns.com

  1. 访问Netlify官网,点击Sign up进行注册(最好直接用Github账号注册,方便导入项目)
  2. 进入到项目管理页面后点击Add new site-Import an existing project,选择你要部署的博客仓库(这里我直接使用GitHub),选择username.github.io项目导入,Site name按喜好填写,点击Deploy site按钮,等待部署完成。
    Netlify项目管理页面
    Netlify导入项目
    Github Pages项目导入
    Netlify部署项目
  3. 部署完后,在Domain management中绑定自定义域名,点击Save按钮。
    Netlify绑定域名
  4. 点击Awaiting External DNS查看需要解析到的网址,在运营商处添加CNAME解析记录[你的网站给出的网址].netlify.app.
    Netlify解析域名
  5. 等到域名解析生效,Netlify验证后会自动签发HTTPS证书,等待约15分钟后,就可以用自己的域名访问博客了。

使用Cloudflare托管网站前,需要先在Domains中添加自己的域名(即在Cloudflare购买域名或移交域名的NS给Cloudflare),移交NS会导致无法在原有运营商处修改DNS解析,只能在Cloudflare修改,请先考虑是否需要这样做。

  1. 访问Cloudflare官网,点击登录进行注册(最好直接用Github账号注册,方便导入项目)
  2. 进入到项目管理页面后点击Compute & AI-Workers & Pages,点击Create application,选择Connect Github,登陆后点击Continue with Github,选择你的博客仓库。

  3. 填写相应参数,如果你的仓库为静态网页,部署指令需要填写为npx wrangler deploy --assets=./. --compatibility-date YYYY-MM-DD,其中YYYY-MM-DD需要替换为当天(或早于当天)的日期。
  4. 部署完成找到项目-Settings-Domains & Routes点击Add选择Custom Domain绑定自己的域名,该域名需要是Cloudflare接管的域名,设置后会自动解析和签发证书。
  5. 等到域名解析生效,就可以用自己的域名访问博客了。
  1. 访问Zeabur官网,点击Get Started进行注册(最好直接用Github账号注册,方便导入项目)
  2. 进入到项目管理页面后点击创建项目,选择服务地区(免费的地区不一定图中一样),选择从Github仓库部署,选择你的博客仓库,会自动识别为Static-Hexo,点击部署。
    Zeabur服务器选择
    Zeabur选择项目
    Zeaburi部署项目
  3. 部署完成找到项目-网络-自定义域名绑定自己的域名,点击Create Domain按钮。
    Zeabur绑定域名
  4. 在运营商处添加指定的CNAME解析记录。
  5. 等到域名解析生效,Zeabur验证后会自动签发HTTPS证书,等待约15分钟后,就可以用自己的域名访问博客了。

官方已经有详尽的文档,可直接前往查看。

  1. 访问EdgeOne工作台,登录账号后,点击页面上的“立即开通”。
  2. 指示连接Github,选择你的网站仓库。
  3. 填写配置项,静态网页文件框架预设直接选择Other即可,你也可以选择你的源码仓库并选择Hexo框架预设,其余设置会自动填写。
  4. 部署完成点击添加自定义域名绑定自己的域名。相关文档
  5. 在运营商处添加指定的CNAME解析记录。
  6. 等到域名解析生效,就可以用自己的域名访问博客了。

其他类似部署平台

实际上部署2-3个平台作为分流已经能满足日常需求,以此我也没有进行过这些平台的部署,感兴趣的小伙伴可自行摸索。

云部署

  • Heroku:PaaS解决方案,需绑定信用卡验证。
  • Render:另一个流行的云部署平台,和 Vercel 类似。
  • Firebase:Google 提供的一个平台,可用于部署和托管 web 应用。
  • CloudBase:腾讯云的一体化应用开发平台应用,可以实现GitHub监控,但是免费版无法自定义域名。

开源的部署方案(自托管平台)

这些平台大多是开源的自托管替代方案,仍需要服务器部署,虽然有云部署方案,但仍需收费。

  • Coolify:一个开源且可自托管的 Vercel、Heroku、Netlify 和 Railway 替代方案
  • Dokku:一个轻量级的开源 PaaS(平台即服务)
  • SST:用于将应用发布到AWS等云厂商,但应用运行在AWS上,仍需按量付费。
  • Dokploy:叫板 Vercel, Netlify and Heroku 的开源替代方案。

另类解决方案

  • UniCloud:DCloud 联合阿里云、腾讯云、支付宝云,为开发者提供的基于 serverless 模式和 js 编程的云开发平台,需要绑定使用旗下应用(uni-app,HBuilderX等)。能绑定自定义域名,可以通过Python脚本绕过应用实现上传。
  • 阿里云EMAS:阿里云的移动研发平台,其EMAS Serverless也可以用于托管,相比于其OSS的静态托管免费,能绑定自定义域名,也提供了官方SDK方便上传。
  • 又拍云:以场景化CDN为核心业务,提供云存储、云处理、云安全及流量营销等服务。加入联盟可获得每月10GB免费存储空间+15GB免费 CDN 流量,可以将静态网页文件直接上传到云存储实现部署。