Github Pages 是 Github 提供的静态博客托管服务,它可以方便地搭建个人站点,支持绑定域名。
Jekyll 是一个静态站点生成器,除了它,还有 Hexo、Hugo 等解决方案,不过这里只讨论 Jekyll 在 Windows 下的情况。

基本步骤是:创建 Github Pages 仓库,安装配置 Git、Jekyll,然后通过 git 命令同步仓库。
参考文章不同的是,在配置 Jekyll 的过程中遇到了并没有被提到的 Ruby 的一些问题。

开始——创建 Github Pages 仓库

登录 Github 账户,点此创建一个新仓库,如图命名为 <id>.github.io,然后直接点击创建。

1_创建仓库.png

在【设置】下找到【GitHub Pages】,点击【Choose a theme】。
选择主题后会要求提交一个 index.md,直接提交,这样仓库就基本配置好了,这个时候访问 <id>.github.io 会发现展示出了 index.md 里的内容。

2_设置.png 3_github_pages.png 4_主题.png

如果要求不高,只需要一个单页,就可以到此为止了,修改 index.md 就直接改变网页的内容。

本地化写作环境-配置 Git

因为 Github Pages 默认就是使用 Jekyll 生成站点的,所以可以直接在线写作。
这是最简单的方案,但因为在线编辑不算方便,而且速度较慢,所以需要搭建一个本地化的写作环境以获得更好的体验。

于是从官网下载安装 Git,打开 Git Bash,进入仓库根目录,把仓库载下来:

cd ~/Path
git clone https://github.com/username/username.github.io

6_clone.png

试着编辑一下 index.md

cd username.gitHub.io
echo "测试文章" > index.md

提交更改:

git add --all
git commit -m "First Push"
git push -u origin master

7_push.png

可能会需要登录:

8_登录.jpg

按提示输入:

git config user.email "你的邮箱"
git config user.name "你的用户名"

现在就可以在站点看到修改后的内容了,之后的编写也直接 push 上去就完成上传。
另外也可安装 Github 桌面客户端,同步仓库到本地就可以了。

本地化写作环境-配置 Jekyll

Jekyll 基于 Ruby,所以首先安装 RubyRubyGems
国内下载可能很慢,需要科学上网,最好一直到安装 jekyll 的时候都要开,不然就会遇到我后面的问题,不得不说这太繁琐了。

然后安装 Jekyll:

gem install jekyll bundler
jekyll new . --force
bundle exec jekyll serve

按理说这三行代码分别安装、生成文件、启动服务是很顺畅的事,但实际上在这里卡了大半天。

问题1:默认的 gem 源被墙了

在安装 jekyll 的过程中,出现 ruby Makefile:267: *** 多个目标匹配。 停止。ruby make failed, exit code 2 之类的报错。
搜了一下是换行符问题?不明所以,索性重装了,勾选了 UTF-8 编码,也不安装到带空格的文件夹里去,但也可能是权限问题。

然而重装后命令打下去直接没反应了,大概还是墙的原因,换了 Ruby China 镜像源,ok了。

$ gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
$ gem sources -l
https://gems.ruby-china.com

问题2:bundler 没有成功运行

Could not find gem 'tzinfo (~> 1.2) x64-mingw32' in any of the gem sources listed in your Gemfile. (Bundler::GemNotFound)

试着安装一下 gem install tzinfo 成功但无效,想起来在安装 jekyll 的时候还有一个报错被无视了:

ERROR:  Error installing bundler:
        "bundle" from bundler conflicts with C:/Ruby26-x64/bin/bundle

然后就找到这个帖子,提示要:

gem install bundler
bundle install

然而前面实际上就是 gem install bundler 提示的冲突,bundle install 没响应。
于是。。去那个目录下把 bundle 文件删了,于是两行代码依次都执行成功。

但实际上也可能也有墙的原因,成功的时候又挂上了代理,因为看到它显示出了:

Fetching gem metadata from https://rubygems.org/............

9_bundler.png

似乎如那个帖子说的,bundler 用的也应该是 gem 设置的源,但可能超时自动切换了。

最后建立服务自然顺畅了,访问 localhost:4000 得到本地预览。

其他一些配置

可以通过编辑 _config.yml 文件改变一些配置,比如:

permalink: /:year/:month/:day/:title #固定链接格式

可以在官方文档找到更多信息。
另外的,可以创建 [文字](链接){:target="_blank"} 这样的链接以在新标签打开。

最后

静态博客的发布很简单,但安装就有各种各样的问题,很奇怪大多数教程在这些步骤都很顺利。
似乎有 Windows 的原因,但这样程度的排错可能更直接让很多人远离了。。

也想过把 Github 当图床,这理论上是可以的,单仓库限制容量 1GB,流量10GB/月。
但依然不建议这样做,一是因为滥用,二是 Github 在国内的速度堪忧。