用 Github + Jekyll 写博客

Posted 只缘心高嫌地窄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用 Github + Jekyll 写博客相关的知识,希望对你有一定的参考价值。

只需要三步,就可以在 Github 搭建起一个博客:

  • 在 Github 上建一个名为 xxx.github.io 的库;
  • 把看中了的 Jekyll 模板 clone 到本地;
  • 把这个模板 push 到自己的库;

在 Github 创建名为 hyaojia.github.io 的库

  • 按照 Github Pages 上的说明,首先要创建一个新的库,把它命名为 hyaojia.github.io。.io 是英属印度洋领地的顶级域名,博客搭建成功后,这就是该博客的访问网址。库名的第一部分需要与用户名一致才能生效。所以如果你的用户名是 the10thdoctor,库的名字就要 the10thdoctor.github.io。另外,不需要勾选「Initialize this repository with a README」。
  • 创建成功后,会跳转到一个页面(如果你勾选了「Initialize this repository with a README」,则看不到这个页面),提示把已经创建的库 clone 到本地,或者输入以下命令:
    echo "# hyaojia.github.io" >> README.md
    git init
    git add README.md
    git commit -m "first commit"
    git remote add origin https://github.com/hyaojia/hyaojia.github.io.git
    git push -u origin master
  • 我们不按这些来做。为了理解这些指令,这里我们先一条一条地看看这些指令到底是什么意思。在前一篇,我们解释过第二、三和四步的意思。这里再简单地说一次,目的是弄明白每一个命令到底是什么:
  • 首先,我们在本地创建一个同名文件夹 hyaojia.github.io (之所以这样做,是为了与在网站上的库保持一致。如果我们直接把 Github 上创建的库 clone 到本地,就是一个同名的文件夹;但我们选择不直接 clone,而是自己创建一个,目的只是学习这些指令):
    $ mkdir hyaojia.github.io
    $ cd hyaojia.github.io
  • 第一行 echo “# hyaojia.github.io” >> README.md。命令 echo 起「display a line of text」的作用,>> 则起「输出到文件」的作用。所以整行翻译成中文,就是把 echo 的输出(也就是引号里的「# hyaojia.github.io」),输入到 README.md 这个文件里。输入这行后,在当前文件夹就会出现一个名为 README 的 markdown 文件,里面有一行 ‘# hyaojia.github.io’;
  • 第二行 git init,把当前文件夹 Git 初始化;
  • 第三行,git add README.md,把 README.md 加到 Staged Area;
  • 第四行,git commit -m “first commit”, 把 README.md 的信息写到 .git 里,相当于给这个文件在当前的时刻截了图,这要找到这次 commit 的哈希码,就总能返回这个时刻的状态;
  • 第五行,我们没遇到过。先不执行这行,我们输入 git remote -v,会发现什么都没有,也就是说,我们的 Git 文件夹还没有绑定任何的远程库(remote repository)。现在输入第五行
    $ git remote add origin https://github.com/hyaojia/hyaojia.github.io.git
    再输入 git remote -v,则会出现
    origin  https://github.com/hyaojia/hyaojia.github.io.git (fetch)
    origin  https://github.com/hyaojia/hyaojia.github.io.git (push)
  • 所以,这一行的意思是,给我们本地的 Git 文件夹登记一个远程库,然后在第六行的时候,它就知道该把文件夹里的内容推送到哪里去了。更详细一点:命令 git remote 等于是告诉 Git 我们要关于远程库(remote)做点什么;add 表明要登记一些信息;origin 是我们给那个远程库的名字,没有必要一定要叫 origin,只是习惯如此,可以叫任何名字,比如 tardis;最后就是要告诉 Git 那个远程库的具体地址是什么。
  • 如果我又创建另一个叫做 Tardis 的库,它的地址是 https://github.com/hyaojia/tardis.git,我也可以把这个地址登记到我们本地的 hyaojia.github.io 文件夹里。输入
    $ git remote add tardis https://github.com/hyaojia/tardis.git
    再输入 git remote -v,则会出现
    origin  https://github.com/hyaojia/hyaojia.github.io.git (fetch)
    origin  https://github.com/hyaojia/hyaojia.github.io.git (push)
    tardis  https://github.com/hyaojia/tardis.git (fetch)
    tardis  https://github.com/hyaojia/tardis.git (push)
  • 第六行,git push -u origin master,意思就是把我们本地目录 master 分支(branch)里的文件,推送到(push)名为 origin 实际上代表作 https://github.com/hyaojia/hyaojia.github.io.git 这个地址的库。我们本地在哪个分支,就会推送到远程库的哪个分支。再直白一点,命令 git push 是告诉 Git,我要推送当前文件夹里的东西到某个地方了,origin 指向我们要把内容推向的那个远程库,后面的 master 则是想要推向远程库的、本地的分支。假设,我们想要把本地一个名为 timeVortex 的分支里的文件,推送到一个名为 tardis 的远程库(无论我们当前到底是处在哪个分支),那么我们就输入 git push tardis timeVortex,那样子,timeVortex 分支里的文件就会被推送到 tardis 库的一个同样叫做 timeVortex 的分支上。那么,如果希望把本地 master 分支上的文件推送到远程库里的 doctor 分支上,又该怎样做呢?可以输入 git push origin master:doctor。冒号前面是本地的分支,冒号后面是远程的分支。
  • 以上只是讲解,没有必要跟着做。但我还是希望你跟着做了,这样也许会更明白每一步到底发生了什么作用。现在,我们可以把 xxx.github.io 文件夹删掉,再进行下一步。

选择模板

  • 再次重新从零出发。这一次从选模板开始。
  • 现在 Jekyll 有很多好看的模板,可以到 jekyllthemes.org 上寻找自己喜欢的。我这里用的模板是小改自 Skinny Bones,其他比较喜欢的有 Scribble 和 Long Haul,Incorporated 则比较适合用来做公司网站。
  • 本文余下部分用 Scribble 为例。
  • 把博客托管到 Github Pages
  • 首先,我们把 Scribble 这个库 clone 到本地:
    $ git clone https://github.com/hyaojia/scribble.git
  • 把名为 scribble 的文件夹改名为 hyaojia.github.io (不必要,理由跟之前一样,只是为了比较好找),只需要下面这行命令(mv 是移动文件夹的命令,可是也能用来重命名文件。我明白,一开始这很难理解):
    $ mv scribble hyaojia.github.io
  • 然后我们可以进入现在叫 hyaojia.github.io 的文件夹里:
    $ cd hyaojia.github.io
  • 一般而言,克隆了别人的模板,第一件事要做的就是修改 _config.yml 里的个人信息。在 scribble 这个模板中,修改的地方不多,只需要把导航栏相关的连接修改成自己的就可以了,比如 Blog 的 url 改成 http://hyaojia.github.io,邮件和 Github 帐号改成自己的帐号。
  • 只要修改过文件,我们就需要重复 git add 和 git commit 这两步:
    $ git add .
    $ git commit -m 'modified _config.yml'
  • git add . 里的一点,指把当前目录所有修改过的文件都加到 Staged Area 去。
  • 前面我们说过 git remote -v。因为我们直接 clone 了别人的库,所以 clone 下来的文件夹里,已经登记了模板作者的远程库信息:
    $ git remote -v
    origin  https://github.com/muan/scribble.git (fetch)
    origin  https://github.com/muan/scribble.git (push)
  • 我们要把 origin 的地址改成我们之前创建的 hyaojia.github.io 库的地址:
    $ git remote set-url origin https://github.com/hyaojia/hyaojia.github.io.git
    $ git remote -v
    origin  https://github.com/hyaojia/hyaojia.github.io.git (fetch)
    origin  https://github.com/hyaojia/hyaojia.github.io.git (push)
  • 现在已经变成我们自己的了。

把模板 push 到自己的库

  • 最后输入
    $ git push -u origin master
  • 如果没有绑定 SSH key,一般会要求输入用户名和密码。输入后则会出现
    Counting objects: 268, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (187/187), done.
    Writing objects: 100% (268/268), 224.02 KiB | 0 bytes/s, done.
    Total 268 (delta 76), reused 268 (delta 76)
    To https://github.com/hyaojia/hyaojia.github.io.git
    * [new branch]      master -> master
  • 代表成功推送。现在在浏览器输入网址 http://hyaojia.github.io,则可以看到博客的样子了。
  • 如果没有修改模板的需求,利用 Git + Github + Jekyll 搭建博客大概就是这样子。写文章,只需要在 _post/ 文件加中,加入带有 YAML 头信息(YAML front matter)的 markdown 文件,然后 push 到 Github,就会被自动渲染成 html。比如,增加一篇名为 My First Post 的博客,在本地创建一个文件名带有日期的 markdown 文件 2015-04-20-my-first-post.md(里面要写好头信息):
    ---
    layout: post
    title: My First Post
    ---
    这是我的第一篇博客
  • 最后按上述方法(git add / git commit / git push)推送到 Github,就大功告成了。

fork时注意的

  • fork库到自己的github
  • 修改名字为:username.github.io
  • clone库到本地,参考_posts中的目录结构自己创建适合自己的文章目录结构
  • 修改CNAME,或者删掉这个文件,使用默认域名,这个文件是重新指定域名的
  • 修改_config.yml配置项

使用Github Pages建独立博客 详细步骤

  • Github很好的将代码和社区联系在了一起,于是发生了很多有趣的事情,世界也因为他美好了一点点。Github作为现在最流行的代码仓库,已经得到很多大公司和项目的青睐,比如jQuery、Twitter等。为使项目更方便的被人理解,介绍页面少不了,甚至会需要完整的文档站,Github替你想到了这一点,他提供了Github Pages的服务,不仅可以方便的为项目建立介绍站点,也可以用来建立个人博客。
  • Github Pages有以下几个优点:


  • 轻量级的博客系统,没有麻烦的配置

  • 使用标记语言,比如Markdown
  • 无需自己搭建服务器
  • 根据Github的限制,对应的每个站有300MB空间
  • 可以绑定自己的域名


  • 当然他也有缺点:


  • 使用Jekyll模板系统,相当于静态页发布,适合博客,文档介绍等。

  • 动态程序的部分相当局限,比如没有评论,不过还好我们有解决方案。
  • 基于Git,很多东西需要动手,不像Wordpress有强大的后台


  • 大致介绍到此,作为个人博客来说,简洁清爽的表达自己的工作、心得,就已达目标,所以Github Pages是我认为此需求最完美的解决方案了。

购买、绑定独立域名

  • 虽说Godaddy曾支持过SOPA,并且首页放着极其不专业的大胸美女,但是作为域名服务商他做的还不赖,选择它最重要的原因是他支持支付宝,没有信用卡有时真的很难过。
  • 域名的购买不用多讲,注册、选域名、支付,有网购经验的都毫无压力,优惠码也遍地皆是。域名的配置需要提醒一下,因为伟大英明的GFW的存在,我们必须多做些事情
  • 流传Godaddy的域名解析服务器被墙掉,导致域名无法访问,后来这个事情在BeiYuu也发生了,不得已需要把域名解析服务迁移到国内比较稳定的服务商处,这个迁移对于域名来说没有什么风险,最终的控制权还是在Godaddy那里,你随时都可以改回去。
  • 我们选择DNSPod的服务,他们的产品做得不错,易用、免费,收费版有更高端的功能,暂不需要。注册登录之后,按照DNSPod的说法,只需三步(我们插入一步):


  • 首先添加域名记录,可参考DNSPod的帮助文档:https://www.dnspod.cn/Support

  • 在DNSPod自己的域名下添加一条A记录,地址就是Github Pages的服务IP地址:207.97.227.245
  • 在域名注册商处修改DNS服务:去Godaddy修改Nameservers为这两个地址:f1g1ns1.dnspod.net、f1g1ns2.dnspod.net。如果你不明白在哪里修改,可以参考这里:Godaddy注册的域名如何使用DNSPod
  • 等待域名解析生效

配置和使用Github

  • Git是版本管理的未来,他的优点我不再赘述,相关资料很多。推荐这本Git中文教程。
  • 要使用Git,需要安装它的客户端,推荐在Linux下使用Git,会比较方便。Windows版的下载地址在这里:http://code.google.com/p/msysgit/downloads/list。其他系统的安装也可以参考官方的安装教程。
  • 下载安装客户端之后,各个系统的配置就类似了,我们使用windows作为例子,Linux和Mac与此类似。
  • 在Windows下,打开Git Bash,其他系统下面则打开终端(Terminal): Git Bash

检查SSH keys的设置

  • 首先我们需要检查你电脑上现有的ssh key:
    $ cd ~/.ssh
  • 如果显示“No such file or directory”,跳到第三步,否则继续。

备份和移除原来的ssh key设置:

  • 因为已经存在key文件,所以需要备份旧的数据并删除:
    $ ls
    config  id_rsa  id_rsa.pub  known_hosts
    $ mkdir key_backup
    $ cp id_rsa* key_backup
    $ rm id_rsa*

生成新的SSH Key:

  • 输入下面的代码,就可以生成新的key文件,我们只需要默认设置就好,所以当需要输入文件名的时候,回车就好。
    $ ssh-keygen -t rsa -C "邮件地址@youremail.com"
    Generating public/private rsa key pair.
    Enter file in which to save the key (/Users/your_user_directory/.ssh/id_rsa):<回车就好>
  • 然后系统会要你输入加密串(Passphrase):
    Enter passphrase (empty for no passphrase):<输入加密串>
    Enter same passphrase again:<再次输入加密串>
  • 最后看到这样的界面,就成功设置ssh key了
  • The keys randomart image is: 一个看不懂的图案

添加SSH Key到GitHub:

  • 在本机设置SSH Key之后,需要添加到GitHub上,以完成SSH链接的设置。
  • 用文本编辑工具打开id_rsa.pub文件,如果看不到这个文件,你需要设置显示隐藏文件。准确的复制这个文件的内容,才能保证设置的成功。
  • 在GitHub的主页上点击设置按钮: github account setting
  • 选择SSH Keys项,把复制的内容粘贴进去,然后点击Add Key按钮即可
  • PS:如果需要配置多个GitHub账号,可以参看这个多个github帐号的SSH key切换,不过需要提醒一下的是,如果你只是通过这篇文章中所述配置了Host,那么你多个账号下面的提交用户会是一个人,所以需要通过命令git config –global –unset user.email删除用户账户设置,在每一个repo下面使用git config –local user.email ‘你的github邮箱@mail.com’ 命令单独设置用户账户信息

测试一下

  • 可以输入下面的命令,看看设置是否成功,git@github.com的部分不要修改:
    $ ssh -T git@github.com
  • 如果是下面的反应:
    The authenticity of host 'github.com (207.97.227.239)' can't be established.
    RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
    Are you sure you want to continue connecting (yes/no)?
  • 不要紧张,输入yes就好,然后会看到:
    Hi <em>username</em>! You've successfully authenticated, but GitHub does not provide shell access.

设置你的账号信息

  • 现在你已经可以通过SSH链接到GitHub了,还有一些个人信息需要完善的。
  • Git会根据用户的名字和邮箱来记录提交。GitHub也是用这些信息来做权限的处理,输入下面的代码进行个人信息的设置,把名称和邮箱替换成你自己的,名字必须是你的真名,而不是GitHub的昵称。
    $ git config --global user.name "你的名字"
    $ git config --global user.email "your_email@youremail.com"

使用GitHub Pages建立博客

  • 与GitHub建立好链接之后,就可以方便的使用它提供的Pages服务,GitHub Pages分两种,一种是你的GitHub用户名建立的username.github.io这样的用户&组织页(站),另一种是依附项目的pages。

User & Organization Pages

  • 想建立个人博客是用的第一种,形如beiyuu.github.io这样的可访问的站,每个用户名下面只能建立一个,创建之后点击Admin进入项目管理,可以看到是这样的:
  • 而普通的项目是这样的,即使你也是用的othername.github.io:
  • 创建好username.github.io项目之后,提交一个index.html文件,然后push到GitHub的master分支(也就是普通意义上的主干)。第一次页面生效需要一些时间,大概10分钟左右。
  • 生效之后,访问username.github.io就可以看到你上传的页面了,beiyuu.github.io就是一个例子。
  • 关于第二种项目pages,简单提一下,他和用户pages使用的后台程序是同一套,只不过它的目的是项目的帮助文档等跟项目绑定的内容,所以需要在项目的gh-pages分支上去提交相应的文件,GitHub会自动帮你生成项目pages。具体的使用帮助可以参考Github Pages的官方文档:

绑定域名


    • 我们在第一部分就提到了在DNS部分的设置,再来看在GitHub的配置,要想让username.github.io能通过你自己的域名来访问,需要在项目的根目录下新建一个名为CNAME的文件,文件内容形如:
    beiyuu.com
  • 你也可以绑定在二级域名上:
    blog.beiyuu.com
  • 需要提醒的一点是,如果你使用形如beiyuu.com这样的一级域名的话,需要在DNS处设置A记录到207.97.227.245(这个地址会有变动,这里查看),而不是在DNS处设置为CNAME的形式,否则可能会对其他服务(比如email)造成影响。
  • 设置成功后,根据DNS的情况,最长可能需要一天才能生效,耐心等待吧。

Jekyll模板系统

  • GitHub Pages为了提供对HTML内容的支持,选择了Jekyll作为模板系统,Jekyll是一个强大的静态模板系统,作为个人博客使用,基本上可以满足要求,也能保持管理的方便,你可以查看Jekyll官方文档。
  • 你可以直接fork我的项目,然后改名,就有了你自己的满足Jekyll要求的文档了,当然你也可以按照下面的介绍自己创建。

Jekyll基本结构

  • Jekyll的核心其实就是一个文本的转换引擎,用你最喜欢的标记语言写文档,可以是Markdown、Textile或者HTML等等,再通过layout将文档拼装起来,根据你设置的URL规则来展现,这些都是通过严格的配置文件来定义,最终的产出就是web页面。
  • 基本的Jekyll结构如下:
    |-- _config.yml
    |-- _includes
    |-- _layouts
    |   |-- default.html
    |   `-- post.html
    |-- _posts
    |   |-- 2007-10-29-why-every-programmer-should-play-nethack.textile
    |   `-- 2009-04-26-barcamp-boston-4-roundup.textile
    |-- _site
`-- index.html

简单介绍一下他们的作用:

_config.yml
  • 配置文件,用来定义你想要的效果,设置之后就不用关心了。
_includes
  • 可以用来存放一些小的可复用的模块,方便通过 % include file.ext %(去掉前两个中或者与%中的空格,下同)灵活的调用。这条命令会调用_includes/file.ext文件。
_layouts
  • 这是模板文件存放的位置。模板需要通过YAML front matter来定义,后面会讲到, content 标记用来将数据插入到这些模板中来。
_posts
  • 你的动态内容,一般来说就是你的博客正文存放的文件夹。他的命名有严格的规定,必须是2012-02-22-artical-title.md这样的形式,MARKUP是你所使用标记语言的文件后缀名,根据_config.yml中设定的链接规则,可以根据你的文件名灵活调整,文章的日期和标记语言后缀与文章的标题的独立的。
_site
  • 这个是Jekyll生成的最终的文档,不用去关心。最好把他放在你的.gitignore文件中忽略它。
其他文件夹

你可以创建任何的文件夹,在根目录下面也可以创建任何文件,假设你创建了project文件夹,下面有一个github-pages.md的文件,那么你就可以通过yoursite.com/project/github-pages访问的到,如果你是使用一级域名的话。文件后缀可以是.html或者markdown或者textile。这里还有很多的例子:https://github.com/mojombo/jekyll/wiki/Sites

Jekyll的配置

  • Jekyll的配置写在_config.yml文件中,可配置项有很多,我们不去一一追究了,很多配置虽有用但是一般不需要去关心,官方配置文档有很详细的说明,确实需要了可以去这里查,我们主要说两个比较重要的东西,一个是Permalink,还有就是自定义项。
  • Permalink项用来定义你最终的文章链接是什么形式,他有下面几个变量:
> * year 文件名中的年份
> * month 文件名中的月份
> * day 文件名中的日期
> * title 文件名中的文章标题
> * categories 文章的分类,如果文章没有分类,会忽略
> * i-month 文件名中的除去前缀0的月份
> * i-day 文件名中的除去前缀0的日期
  • 看看最终的配置效果:
> * permalink: pretty /2009/04/29/slap-chop/index.html
> * permalink: /:month-:day-:year/:title.html /04-29-2009/slap-chop.html
> * permalink: /blog/:year/:month/:day/:title /blog/2009/04/29/slap-chop/index.html
  • 我使用的是:
> * permalink: /:title /github-pages
  • 自定义项的内容,例如我们定义了title:BeiYuu的博客这样一项,那么你就可以在文章中使用 site.title 来引用这个变量了,非常方便定义些全局变量。

YAML Front Matter和模板变量

  • 对于使用YAML定义格式的文章,Jekyll会特别对待,他的格式要求比较严格,必须是这样的形式:
    ---
    layout: post
    title: Blogging Like a Hacker
    ---
  • 前后的—不能省略,在这之间,你可以定一些你需要的变量,layout就是调用_layouts下面的某一个模板,他还有一些其他的变量可以使用:
> * permalink 你可以对某一篇文章使用通用设置之外的永久链接
> * published 可以单独设置某一篇文章是否需要发布
> * category 设置文章的分类
> * tags 设置文章的tag
  • 上面的title就是自定义的内容,你也可以设置其他的内容,在文章中可以通过 page.title 这样的形式调用。
  • 模板变量,我们之前也涉及了不少了,还有其他需要的变量,可以参考官方的文档:https://github.com/mojombo/jekyll/wiki/template-data

使用Disqus管理评论

  • 模板部分到此就算是配置完毕了,但是Jekyll只是个静态页面的发布系统,想做到关爽场倒是很容易,如果想要评论呢?也很简单。
  • 现在专做评论模块的产品有很多,比如Disqus,还有国产的多说,Disqus对现在各种系统的支持都比较全面,到写博客为止,多说现在仅是WordPress的一个插件,所以我这里暂时也使用不了,多说与国内的社交网络紧密结合,还是有很多亮点的,值得期待一下。我先选择了Disqus。
  • 注册账号什么的就不提了,Disqus支持很多的博客平台
  • 我们选择最下面的Universal Code就好,然后会看到一个介绍页面,把下面这段代码复制到你的模板里面,可以只复制到显示文章的模板中:
    <div id="disqus_thread"></div>
    <script type="text/javascript">
        /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
        var disqus_shortname = 'example'; // required: replace example with your forum shortname 这个地方需要改成你配置的网站名
        /* * * DON'T EDIT BELOW THIS LINE * * */
        (function() 
            var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
            dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
            (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
        )();
    </script>
    <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
    <a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a>
  • 配置完之后,你也可以做一些异步加载的处理,提高性能,比如我就在最开始页面打开的时候不显示评论,当你想看评论的时候,点击“显示评论”再加载Disqus的模块。代码很简单,你可以参考我的写法。
    $('#disqus_container .comment').on('click',function()
            $(this).html('加载中...');
            var disqus_shortname = 'beiyuu';
            var that = this;
            BYB.includeScript('http://' + disqus_shortname + '.disqus.com/embed.js',function()$(that).remove()); //这是一个加载js的函数
    );
  • 如果你不喜欢Disqus的样式,你也可以根据他生成的HTML结构,自己改写样式覆盖它的,Disqus现在也提供每个页面的评论数接口,帮助文档在这里可以看到。

代码高亮插件

  • 如果写技术博客,代码高亮少不了,有两个可选插件DlHightLight代码高亮组件和Google Code Prettify。DLHightLight支持的语言相对较少一些,有js、css、xml和html,Google的高亮插件基本上任何语言都支持,也可以自定义语言,也支持自动识别,也有行号的特别支持。
  • Google的高亮插件使用也比较方便,只需要在
    的标签上加入prettyprint即可。所以我选择了Google Code Prettify。

搭建本地jekyll环境

  • 这里主要介绍一下在Mac OS X下面的安装过程,其他操作系统可以参考官方的jekyll安装
  • 作为生活在水深火热的墙内人民,有必要进行下面一步修改gem的源,方便我们更快的下载所需组建:
    sudo gem sources --remove http://rubygems.org/
    sudo gem sources -a http://ruby.taobao.org/
  • 然后用Gem安装jekyll
    $ gem install jekyll
  • 不过一般如果有出错提示,你可能需要这样安装:
    $ sudo gem install jekyll
  • 我到了这一步的时候总是提示错误Failed to build gem native extension,很可能的一个原因是没有安装rvm,rvm的安装可以参考这里,或者敲入下面的命令:
    $ curl -L https://get.rvm.io | bash -s stable --ruby
  • 然后还需要安装Markdown的解释器,这个需要在你的_config.yml里面设置markdown:rdiscount:
    $ gem install jekyll rdiscount
  • 好了,如果一切顺利的话,本地环境就基本搭建完成了,进入之前我们建立的博客目录,运行下面的命令:
    $ jekyll serve --watch
  • 这个时候,你就可以通过localhost:4000来访问了。还有关于jekyll bootstrap的资料,需要自己修改调试的,可以研究一下。
  • 我在这个过程中还遇到两个诡异的没有解决的问题,一个是我放在根目录下面的blog.md等文件,在GitHub的pages服务上一切正常,可以通过beiyuu.com/blog访问的到,但是在本地环境下,总是not found,很是让人郁闷,看生成的_site目录下面的文件,也是正常的blog.html,但就是找不到,只有当我把URL改为localhost:4000/blog.html的时候,才能访问的到,环境不同真糟糕。
  • 还有一个是关于category的问题,根据YAML的语法,我们在文章头部可以定义文章所属的类别,也可以定义为category:[blog,rss]这样子的多类别,我在本地试一切正常,但是push到GitHub之后,就无法读取了,真让人着急,没有办法,只能采用别的办法满足我的需求了。这里还有一篇Jekyll 本地调试之若干问题,安装中如果有其他问题,也可以对照参考一下。

结语

  • 如果你跟着这篇不那么详尽的教程,成功搭建了自己的博客,恭喜你!剩下的就是保持热情的去写自己的文章吧。

以上是关于用 Github + Jekyll 写博客的主要内容,如果未能解决你的问题,请参考以下文章

Github+Jekyll ——个人博客创建之简单解析

Github+Jekyll ——个人博客创建之简单解析

Jekyll/Github 站点没有在 Github 上显示正确的示例博客文章

使用Jekyll搭建博客

使用Jekyll + GitHub Pages免费搭建个人博客

jekyll 上的 Github 博客页面总是返回 404?