网站托管的二三事

Posted by Ariescat on September 30, 2021

路漫漫其修远兮,

吾将上下而求索。

现在

现源代码托管于 Github,由 GitHub 自动部署于 Vercel、Coding Pages。

为何选择 Vercel? 折腾的心不想受限于 Github Pages;

至于 Coding Pages,那是因为以上平台对墙内的世界并不友好,访问速度让人 jio 急。(现在境内的线路会自动分发至 Coding Pages,并由 腾讯云的 CDN 加速 🚀🚀 )


结果是美好的,过程却离奇坎坷,容我细细道来……


不稳定的环境

本站大部分内容都是本人毕业后输出的(虽然也没写啥),有幸于就职的公司都有稳定的海外网络环境(真的很方便,方便查阅各种资料,相当一部分的英文文档阅读能力也是在这段时间建立的),所以搭建之初都没太考虑这种网络问题。

内容直接部署于 github pages,方便快捷,支持自定义域名,https 等,配合 gittalk 等简直太好用了。

但是慢慢的,就发现,离开了稳定的海外网络环境后,网站的访问就异常的龟速,偶尔甚至直接打不开!

别说打开网站了,连 github 的访问都是一种奢侈,对于程序来说,大部分都懂科学上网,所以对自己的影响问题大不。但是,你写的东西不止是自己看吧?别人看不到的话,就违背了自己搭网站的初心了~

所以,

得寻求一个稳定的平台托管自己的网站。

路漫漫其修远兮,

吾将上下而求索。


Vercel

对比并实践了若干平台,Vercel,是我用过的最好用的网站托管服务(在某个时候到来之前)。它类似于 github page,但远比 github page 强大,速度也快得多,而且将 Github 授权给 vercel 后,可以达到最优雅的发布体验,只需将代码轻轻一推,项目就自动更新部署了。

此外,Vercel 还支持自定义域名,https 等。https 这点说简单但其实也并不简单,首先你得去 FreeSSL 申请证书(腾讯云的证书申请少说得三天),此后还有一大堆证书的配置。所以这简直是懒人的福利啊啊啊有木有!

还有两个平台我也简单说下:

netlify 我也试过,但其速度不如 vercel 稳定快速;

gitee 的速度绝对是一流的,但是不支持自定义域名(劝退劝退)。


他,变了!

Vercel 我也用了相当长一段时间,也没什么毛病。直到……

各位也知道,我国每年都会开一个例会,这段时间网络会查得比较严。而这时候 Vercel 貌似刚好挂了!访问不了!!虽然我下不了定论这两者有关系,总之后来 Vercel 尽管也能访问了,但其也不稳定了起来,延时较高。

也因为那段时间工作比较忙,后来也由于换工作而交接,适应新环境等,就把这个给落下了。(虽然也休了半个月的年假,但我内心其实也是懒的,不想动……)


后来

后来的后来

我又决定折腾一下了,借着抽离 Blog 里 Awesome 的契机,我研究了一下 Coding。Coding 这几年的变化也挺大的,现在 Coding 为腾讯代理,在国内的服务器较多,所以使用 Coding Page 运行速度要比 GitHub Page 快很多。而且!他还能用腾讯云的 CDN 进行加速!!

不过中间也有个小波折。

就是我发现 Coding Page 只能用其 master 分支进行部署。以下为客服的回复:

工单

好家伙!这相当于得要我把 github 的 gh-pages 搞到 coding 的 master 分支,这可难倒我了!好在后来也解决了,现在 Blog 和 Awesome 都能愉快的部署在 Coding 上啦~

附上 Awesome 的 Github Action 脚本(blog 的差不多):

# This is a basic workflow to help you get started with Actions

name: deploy-gh-pages

# Controls when the workflow will run
on:
  # Triggers the workflow on push or pull request events but only for the main branch
  push:
    branches: [ main ]
  # pull_request:
    # branches: [ main ]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - uses: actions/checkout@v2

      - name: Setup Node.js environment
        uses: actions/setup-node@v2.4.0
        with:
          node-version: 12.18.2
  
      - name: Run echo environment
        run: echo `node -v`

      - name: Run package install
        run: |
          npm install
          npm run ginstall

      - name: Prepare Run module gh-pages to deploy github and coding
        run: echo `npm run gh-pages-dev -- -V`

      - name: Run deploy-github-gh-pages
        run: npm run deploy -- -r 'https://$@github.com/Ariescat/Metis-Awesome.git' -u 'github-actions-bot <$>' -m 'github-actions-bot Updates'

      - name: Run deploy-coding-master
        # 用户名密码中一定要转义 @符号 转码后变成了%40  See:https://blog.csdn.net/u012447791/article/details/118225605
        # eg. https://username:password@127.0.0.1/res/res.git
        run: npm run deploy -- -b master -r '$' -u 'github-actions-bot <$>' -m 'github-actions-bot Updates'

大致流程为监听 main 分支的 push 事件,然后 build ,把编译后的文件部署到 github 的 gh-pages 分支,并部署一份到 Coding 的 master 分支。其中 ${secrets.CODING_URL} 的格式为 https://username:password@e.coding.net/repo.git,注意用户名密码中一定要转义 @ 符号转码后变成了 %40


至此,结束!



喜迎
春节