一直都有搭建blog的想法,最近研究了静态博客系统。主要想法是依赖于github,其中有两个github pages和github issues思路。
那问题了来了,什么是github pages? github pages是github提供一个在线服务,可以将github仓库里面的静态资源(html、markdwon)渲染成也页面,帮你生成一个二级域名,甚至可以绑定自己域名。所以使用pages的人最多。为什么有些框架可以使用github的issues能构建出漂亮的静态站点,甚至动态的呢?框架拉取你的issues信息,并转化成html保存到github上,然后在使用pages服务,具体如何使用,这里有介绍https://www.v2ex.com/amp/t/566714。更有一些激进的人直接issues系统,只做一些记录。我最终的选择直接pages服务来搭建,
大方向选定以后,开始选中框架,我喜欢一些从简,所以我选择hugo,编写工具使用Typora,图床使用阿里的oss,毕竟国内访问的多。 下面就开始我的搭建之路。
具体安装过程,参考https://www.gohugo.org,下面我只说我才过的一些坑,和我的系统构架。
git仓库构建
仓库目录结构
drwxr-xr-x 15 hexin staff 480B 7 25 14:13 .
drwxr-xr-x 18 hexin staff 576B 7 25 13:21 ..
drwxr-xr-x 14 hexin staff 448B 7 25 16:28 .git
-rw-r--r-- 1 hexin staff 100B 7 25 13:43 .gitmodules
-rw-r--r-- 1 hexin staff 0B 7 25 14:13 .nojekyll
drwxr-xr-x 3 hexin staff 96B 7 25 14:02 archetypes
-rw-r--r-- 1 hexin staff 615B 7 25 14:01 config.toml
drwxr-xr-x 3 hexin staff 96B 7 25 14:05 content
drwxr-xr-x 2 hexin staff 64B 7 25 13:21 data
-rwxr-xr-x 1 hexin staff 436B 7 25 14:13 deploy.sh
drwxr-xr-x 19 hexin staff 608B 7 25 13:21 docs
drwxr-xr-x 2 hexin staff 64B 7 25 13:21 layouts
drwxr-xr-x 3 hexin staff 96B 7 25 13:49 resources
drwxr-xr-x 2 hexin staff 64B 7 25 13:21 static
drwxr-xr-x 3 hexin staff 96B 7 25 13:43 themes
为了简单,我直接将真个仓库全部push到github,这样我本地文件和github完全一致,hugo官方正式将生成好的放到github,这样github缺少好多文件。pages服务是支持使用master分支的docs目录,只要我将最后生成html页面保存到docs里面,理论上是可行的。
config.toml 文件增加
publishDir = “docs”
发布&部署
部署需要经历2步,先生成html,然后push到github。有些人借助github提供的ci服务,有些小题大做。我们只用一个脚本搞定。
deploy.sh 脚本
#!/bin/sh
# If a command fails then the deploy stops
set -e
printf "\033[0;32mDeploying updates to GitHub...\033[0m\n"
# Build the project.
hugo # if using a theme, replace with `hugo -t <YOURTHEME>`
# Add changes to git.
git add .
# Commit changes.
msg="rebuilding site $(date)"
if [ -n "$*" ]; then
msg="$*"
fi
git commit -m "$msg"
# Push source and build repos.
git push origin master
遇见一些错误
Page build failure
The page build failed for the
master
branch with the following error:Unable to build page. Please try again later.
For information on troubleshooting Jekyll see:
https://help.github.com/articles/troubleshooting-jekyll-builds
因为我没有使用Jekyll服务,使用的hugo。我们只用仓库根目录下面创建“.nojekyll”空文件即可。