GitHub Page 多项目

简介

目前博客已经搭建好了,下一步是要搭一个教程的站点。但是一个 GitHub 帐号只能有一个 Page 站点,而博客用到站点模板和教程用的模板是不一样的。博客是文集,因此文章的目录是随机杂乱的,即使是同一个标签,文章之间也不一定会有关联;教程是一系列文章的集合,顺序是固定的,前后具有很强的因果关系,不能打乱。

不过之前在哪里瞟到过可以把不同的项目放到不同的 GitHub 仓库,然后 Page 访问就对应不同的子目录即可。经过多方考证和动手操作,如今已经弄好了,这里记录流程思路。

多项目

以我为例,我的 GitHub 账户名是 fingerknight ,且我已经建了一个 GitHub Page (如果不会建,可以参考我写的《基于 Hugo + Org Mode + Github Page 的静态站点搭建》),仓库名是 fingerknight.github.io

新建一个仓库,假设名为 math 。到 GitHub Page 的设置,一样正常打开,目录分支选好,然后部署[1]。等一会就可以看到,它自动将站点设到 fingerknight.github.io/math ,这个就是 math 项目的主页。这样就实现了项目分离了,很简单。

Hugo 配置

首先就是把配置文件里面的 baseURL 改成对应的 url ,比如前面说的 https://fingerknight.github.io/math要注意的点来了

配置文件里的路径

这个要具体实测,跟主题的制作有关。比如我用的 LoveIt 主题,在设置站点顶部目录的时候:

menus:
  main:
    - name: 主页
      url: /
    - name: 标签
      url: /tags/

这里可以直接使用 //tags ,生成的 HTML 会定位到 https://fingerknight.github.io/math/https://fingerknight.github.io/math/tags 。而主页的头像 logo 就不行,

profile:
  enable: true
  avatarURL: /math/img/Logo.jpg

必须要加 math 才找得到。

静态资源的路径

这个一定要加。原本所有静态资源都放在 static 目录下即可,现在多了一个子目录,因此要把静态资源移动到 static/math 目录下才正常能找到。而 assets 目录下又不用,里面的东西还是放到 assets 就可以。

这样就可以做到项目间的分离了。如果你问根目录下的 mathmath 项目同时启动会怎么样。请别这样做,爱你 :)

子域名

子域名的话使用起来其实更简单,不过各个项目之前是子域名的关系,因此没办法在当前子域名内通过简单的相对路径来跳转,只能写全 url ,带来的问题就是不好维护,后续要改的话不简单。

不过不重要,毕竟现在是跟 Emacs 联动的,后续直接写个函数就好。

  1. 首先要有一个域名,如果没有可以参考我写的域名配置
  2. 到域名管理平台去添加记录。比如我想把前面的 math 放到子域名,变成 math.fingerknight.icu 。假设之前的记录是
# A 记录
A    @(www)    1.1.1.1(GitHub IP)
# or CNAME
CNAME    @(www)    fingerknight.github.io

那么新增一条 CNAME 记录,把他们指向 GitHub Page:

CNAME    math    fingerknight.github.io
  1. math 仓库配置 GitHub Page 的子域名为 math.fingerknight.icu ,应该就能解析到了。 DNS 从配置到生效可能需要一段时间。

子域名中 Hugo 配置文件里的路径

配置文件里面的 baseURL 改成对应的 url , https://math.fingerknight.icu/ 。其余的则都是以根目录开始

子域名下静态资源的路径

所有静态资源都以根目录出发,因为已经是不同的域名、不同的地址了。

Powered by Org Mode.