摘要:GitHub Pages 部署和访问速度极慢,并且如果不使用 CDN 或主动提交,国内搜索引擎无法爬取相关内容。在寻找替代品的过程中,我尝试了腾讯云的「静态网站托管平台」,自觉体验良好,价格也比较合理,对于简单的静态网站而言,它或许是国内 GitHub Pages 一个不错的替代品。

这个平台的本质是对象存储 + CDN,并针对静态网站进行一些优化。使用腾讯的 COS 也能看到搭建静态博客的选项。然而不如在「静态网站托管平台」上方便。

一、必要准备

  1. 已实名的腾讯云帐号;
  2. 已备案域名:「静态网站托管平台」自带域名,但有访问频率限制。
  3. 本地环境:Nodejs

二、开通服务

登录腾讯云账户后,访问此网址:https://console.cloud.tencent.com/tcb/hosting

点击开始使用后,根据提示创建新环境。一般来说,等待三分钟即可创建完成。腾讯云有首个环境送存储容量和访问流量的活动,可以用于网站第一个月的测试。「静态网站托管」服务目前是按量计费,流量每 GB 0.21 元,容量是每 GB 每天 0.0043 元。对于访问量不高,网站体积不大的产品文档或者个人博客而言还算便宜。如果访问量大的话,也有相应的流量包可供选择。

等到网页出现详细的管理页面,静态网站托管服务就已经开通完成,点击默认域名即可访问。下图第二个红色方框内可以操作网站文件的上传。

三、基本配置

进入「基础配置」,更换域名。默认给的域名识别度不高,并且有访问频率限制。可以在「自定义域名」出进行更改域名的操作。绑定的域名必须已经备案,若有 SSL 证书,则应当先在 SSL 控制台上传。将系统返回的 CNAME 域名写入 DNS 服务商内即可完成绑定。

在自定义域名栏的下方,「路由配置」主要是设置错误代码返回的页面。例如将 404 错误代码绑定到 404.html 上:

四、个人博客自动化部署

登录官网上传文件虽然简单,但对于频繁更新的个人博客而言还是太过麻烦。借助腾讯云的命令行工具,可以将这一过程简单化。

安装 Nodejs 后,使用npm i -g @cloudbase/cli,腾讯云开发的命令行名称 是 tcb,可在安装后输入tcb -h测试是否安装完成,遇到问题也能从tcb -h获得帮助。

首先,使用tcb login 在弹出的窗口给命令行工具授权。 然后,在云开发面板中获得环境 ID。最后,我们就能用tcb hosting deploy <filepath> [remotepath] -e <env_id> 直接将本地静态网页部署到腾讯云了。

以 Hexo 为例,假设在📂D:/Blog 处已经有一个 Hexo 本地库,现需要每次生成博客自动上传到腾讯云。可以编写下面这个简单的 ps 脚本。将脚本加入计划任务便能定时静默运行。

cd D:/Blog #进入博客根目录
hexo clean 
hexo g --slient #生成文件
cd D:/blog/public #进入静态文件目录
tcb hosting deploy ./ -e {env_id} #上传, remotepath 默认为根目录
exit #退出

五、产品文档自动化部署

对于需要多人协作、依赖版本管理系统的产品文档而言,GitHub 等托管平台非常必要。这时,可以通过 腾讯云开发官方的 GitHub Action 实现自动部署。

云托管上传 GitHub Action 链接在这里。使用这个 Action,需要事先在 GitHub 项目中配置三个密钥。环境 ID 的获得参考第三节。另外,我们还需要访问腾讯控制台创建 API 密钥 ID 和 Key。将这三个密钥按照下图保存在 GitHub 项目设置中:

之后,参考官方说明编写 GitHub Action,这里放上一段简单的示例:

name: Deploy to Tencent
on: [push] #当推送时,执行任务
jobs:
  deploy:
    runs-on: ubuntu-latest
    name: Tencent Cloudbase Github Action
    steps:
      - name: Checkout #检查
        uses: actions/checkout@v2
      - name: Deploy static to Tencent CloudBase #上传
        id: deployStatic
        uses: TencentCloudBase/cloudbase-action@v1.1.1
        with:
          secretId: ${{ secrets.SECRET_ID }} #调用 GitHhub 存储的密钥
          secretKey: ${{ secrets.SECRET_KEY }}
          envId: ${{ secrets.ENV_ID }}
          staticSrcPath: build #静态文件目录

官方给的 GitHub Action 是全量上传,如果产品文档数量多的话,每次全量上传将花费大量的时间。如果有增量上传需求的话,可以考虑印记中文文档部署工具,可能体验更佳。

后记

Cloudflare 也有了自己的 Pages 服务,目测是一样的原理和开通方法,只不过是免费的。目前(2021-01-08 01:46:35)是测试阶段。

外部链接

  1. 腾讯云:静态网站托管使用指南
  2. 腾讯云:云开发产品定价
  3. 腾讯云:CloudBase CLI 使用指南