GitHub Page 多项目
Table of Contents
简介
目前博客已经搭建好了,下一步是要搭一个教程的站点。但是一个 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
就可以。
这样就可以做到项目间的分离了。如果你问根目录下的 math
和 math
项目同时启动会怎么样。请别这样做,爱你 :)
子域名
子域名的话使用起来其实更简单,不过各个项目之前是子域名的关系,因此没办法在当前子域名内通过简单的相对路径来跳转,只能写全 url ,带来的问题就是不好维护,后续要改的话不简单。
不过不重要,毕竟现在是跟 Emacs 联动的,后续直接写个函数就好。
- 首先要有一个域名,如果没有可以参考我写的域名配置。
- 到域名管理平台去添加记录。比如我想把前面的
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
- 到
math
仓库配置 GitHub Page 的子域名为math.fingerknight.icu
,应该就能解析到了。 DNS 从配置到生效可能需要一段时间。
子域名中 Hugo 配置文件里的路径
配置文件里面的 baseURL
改成对应的 url , https://math.fingerknight.icu/
。其余的则都是以根目录开始。
子域名下静态资源的路径
所有静态资源都以根目录出发,因为已经是不同的域名、不同的地址了。