目录

利用腾讯云开发免费搭建个人博客

之前一直使用Github Pages搭建个人博客,随着Github访问越来越困难,个人博客国内访问速度越来越慢。之前也试过用cloudflare进行加速,但是收效甚微,所以才考虑将项目迁回到国内。一个偶然的机会,腾讯云开发进入我的视野,起因是他们的9.9元计划,不过后来由于我配置错误,这部分资源无法使用。但是经过研究,原来腾讯云开发提供了最基础的免费资源,恰好可以让我们搭建个人的Blog,经过将近一年多的使用过程中,非常好用,所以就记录下来,供大家参考。

什么是腾讯云开发

腾讯云开发是我一种非常推崇的开发理念,简单来说就是将Serverless进行了进一步封装,为开发者提供了更便捷的开发体验。目前云开发将轻量级业务中常见的数据库、存储(包括文件存储、对象存储)、云函数(计算资源)、基础运维(告警、监控、日志)进行了整合,同时云开发与微信小程序之间有个非常紧密的整合,能够快速帮助微信小程序构建服务端程序,基本可以承载很多基于微信场景的业务开发,比如电商等应用的开发,并且基于这样的基础架构,支撑千万级并发的需要。

/images/pasted-126.png

目前腾讯云开发,主要在广州和上海区域提供服务。

/images/pasted-125.png

腾讯云开发目前提供用户可以创建一个免费的环境,其中包含了存储、数据库等免费资源,但是相对于博客场景,主要还是静态资源的托管,每个月有1GB的存储空间,和5GB/月的流量,如果资源不够还可以购买额外的资源包。

更多的免费额度请参考https://cloud.tencent.com/document/product/876/47816

/images/pasted-127.png

构建过程

先说一下整体的构建思路:

  • 我们的博客源代码仍然托管在github上,这样不需要破坏现有逻辑
  • 如果你有自己的域名,最好申请备案,因为云开发在绑定域名的时候必须要求已备案的域名,但是如果你就不想备案,也有一个Work Around方法,就是通过cloudflare进行跳转的方式实现了,后面会简单介绍
  • 通过Travis CI自动构建,并上传至云开发中,这样就实现我们在提交代码后,自动进行博客发布的效果了

云开发购买

云开发购买的过程,这里不再赘述了,只需要在新建时选择免费资源即可。因为我已经购买过资源了,所以提示我再次购买。

/images/pasted-128.png

成功构建后,你会得到这样的环境id,这个id作为你后续使用cli命令行更新环境的参数使用。

/images/pasted-129.png

Travis CI配置文件

相信很多人都使用Travis CI构建自己的Github Pages,确实非常方便,虽然Github也提供了自己的CI工具,但是我依然保留着使用Travis CI的习惯。我们无须调整之前的Github Pages的配置或者策略,只需要在你的master分支下,增加或者修改你的.travis.yml即可。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
sudo: false
language: node_js
node_js:
  - 10 # use nodejs v10 LTS
cache: npm
branches:
  only:
    - master # build master branch only
before_install:
  - npm i -g @cloudbase/cli
  - git clone --depth=1 https://github.com/JoeyBling/hexo-theme-yilia-plus.git themes/yilia-plus
after_success:
  - cloudbase login --apiKeyId $TECENT_AK --apiKey $TECENT_KS
  - cd public && echo 'y' | tcb hosting deploy -e your-env-id
script:
  - hexo generate # generate static files
deploy:
  repo: xiaoquqi/xiaoquqi.github.io
  target_branch: master
  provider: pages
  skip-cleanup: true
  github-token: $GH_TOKEN
  keep-history: true
  on:
    branch: master
  local-dir: public

在新的配置文件中,我保留了之前deploy到Github Pages的逻辑,主要增加的逻辑是在before_install开始前,安装cloudbase的cli。

1
2
before_install:
  - npm i -g @cloudbase/cli

在hexo generate成功后,增加部署的命令,这里需要在Travis CI中配置腾讯云的鉴权环境变量。

1
2
3
after_success:
  - cloudbase login --apiKeyId $TECENT_AK --apiKey $TECENT_KS
  - cd public && echo 'y' | tcb hosting deploy -e your-env-id

目前cloudbase cli(简写:tcb),有一个问题,如果超过1000个文件上传会有个提示,导致Travis CI认为没有返回任务失败,但是实际上已经提交上去了,这里已经给腾讯团队提交了一个需求,在cloudbase cli中增加一个force-yes的选项。

这样我们在提交代码后,就可以实现在腾讯云开发中自动发布我们博客的效果了。