记折腾博客(二)
继续上篇。
在所有的东西都配置好之后,运行 hugo
命令即可在 public 目录下构建出网站内容。静态站点需要将 public 目录作为网站的根目录进行部署。我的想法是,一份部署在国外 GitHub 上,一份部署在国内 gitee 上,这样一来除了可以做备份之外,还可以将 gitee 上的站点作为镜像,这样如果主域名访问较慢的情况下,可以切换到速度较快的国内站点进行访问。
在将博客仓库推到 GitHub 之后,发现 GitHub 貌似没有提供自定义部署文件夹的功能,只有指定的 /root
或者 /doc
两个选择。那么解决方法有两个,要么将打包后的目标文件夹从 public 改为 doc,要么想办法把 public 文件夹作为一个仓库进行部署。
在网上查阅发现,git 可以将指定的文件夹拷贝到另一个新分支,也就是使用 git subtree
命令。因此我打算将 public 的内容作为新分支 deploy 进行部署,使用以下命令:
git subtree push --prefix public origin deploy
执行完命令后,本地和远程仓库都有了 deploy 分支,并且分支内容和 public 完全一致。
更新:之前使用的
git subtree
方法由于 push 时经常 conflict 因此废弃掉,换做部署/docs
文件夹的方式,具体操作步骤可以查看这篇文章。
之后进行域名绑定,在阿里云上添加了 A 记录和 CNAME 记录,然后将 IP 地址和域名分别指向 GitHub 的 IP 和 GitHub 为我的博客仓库分配的预览地址。
可以使用
ping github.com
命令来获取 GitHub 的 IP 地址
还有一个问题,如何使本地仓库同步到两个远程仓库呢?在我网上查阅发现,只需要在本地仓库下的 .git/config 下添加第二个远程仓库的 url 即可,我打开 git config 发现内容如下:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[user]
name = CaptainOfPhB
email = xxxxxxxx@gmail.com
[remote "origin"]
url = git@github.com:CaptainOfPhB/captainofphb.github.io.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "deploy"]
remote = origin
那么只需要在 remote.origin.url
下面再添加一条远程仓库的 url 即可,这样就可以把本地仓库同步到两个远程仓库:
[remote "origin"]
url = git@github.com:CaptainOfPhB/captainofphb.github.io.git
url = git@gitee.com:<user_acount>/<repository_name>.git
fetch = +refs/heads/*:refs/remotes/origin/*
添加完之后,使用 git remote -v
进行查看,打印出:
origin git@github.com:CaptainOfPhB/captainofphb.github.io.git (fetch)
origin git@github.com:CaptainOfPhB/captainofphb.github.io.git (push)
origin git@gitee.com:<user_acount>/<repository_name>.git (push)
这表示第一个 url 地址 git 用来做 fetch 或 pull,第二第三用来做 push 同步。
然后运行 git push
之后,发现仓库会同步到 gitee 了。然后在 gitee page 上进行配置,选择 deploy 分支直接 docs
子目录进行部署即可,与 GitHub 类似。
你可以点击 daijiangtao.name 或 daijiangtao.gitee.io 访问我的博客。
完。