搭建一个免费的,无限流量的Blog----github Pages和Jekyll入门
喜欢写Blog的人,会经历三个阶段。
第一阶段,刚接触Blog,觉得很新鲜,试着选择一个免费空间来写。
第二阶段,发现免费空间限制太多,就自己购买域名和空间,搭建独立博客。
第三阶段,觉得独立博客的管理太麻烦,最好在保留控制权的前提下,让别人来管,自己只负责写文章。
大多数Blog作者,都停留在第一和第二阶段,因为第三阶段不太容易到达:你很难找到俯首听命、愿意为你管理服务器的人。
但是两年前,情况出现变化,一些程序员开始在github网站上搭建blog。他们既拥有绝对管理权,又享受github带来的便利----不管何时何地,只要向主机提交commit,就能发布新文章。更妙的是,这一切还是免费的,github提供无限流量,世界各地都有理想的访问速度。
今天,我就来示范如何在github上搭建Blog,你可以从中掌握github的Pages功能,以及Jekyll软件的基本用法。更重要的是,你会体会到一种建立网站的全新思路。
一、Github Pages 是什么?
如果你对编程有所了解,就一定听说过github。它号称程序员的Facebook,有着极高的人气,许多重要的项目都托管在上面。
简单说,它是一个具有版本管理功能的代码仓库,每个项目都有一个主页,列出项目的源文件。
但是对于一个新手来说,看到一大堆源码,只会让人头晕脑涨,不知何处入手。他希望看到的是,一个简明易懂的网页,说明每一步应该怎么做。因此,github就设计了Pages功能,允许用户自定义项目首页,用来替代默认的源码列表。所以,github Pages可以被认为是用户编写的、托管在github上的静态网页。
github提供模板,允许站内生成网页,但也允许用户自己编写网页,然后上传。有意思的是,这种上传并不是单纯的上传,而是会经过Jekyll程序的再处理。
二、Jekyll是什么?
Jekyll(发音/'dʒiːk əl/,"杰克尔")是一个静态站点生成器,它会根据网页源码生成静态文件。它提供了模板、变量、插件等功能,所以实际上可以用来编写整个网站。
整个思路到这里就很明显了。你先在本地编写符合Jekyll规范的网站源码,然后上传到github,由github生成并托管整个网站。
这种做法的好处是:
* 免费,无限流量。
* 享受git的版本管理功能,不用担心文章遗失。
* 你只要用自己喜欢的编辑器写文章就可以了,其他事情一概不用操心,都由github处理。
它的缺点是:
* 有一定技术门槛,你必须要懂一点git和网页开发。
* 它生成的是静态网页,添加动态功能必须使用外部服务,比如评论功能就只能用disqus。
* 它不适合大型网站,因为没有用到数据库,每运行一次都必须遍历全部的文本文件,网站越大,生成时间越长。
但是,综合来看,它不失为搭建中小型Blog或项目主页的最佳选项之一。
三、一个实例
下面,我举一个实例,演示如何在github上搭建blog,你可以跟着一步步做。为了便于理解,这个blog只有最基本的功能。
在搭建之前,你必须已经安装了git,并且有github账户。
第一步,创建项目。
在你的电脑上,建立一个目录,作为项目的主目录。我们假定,它的名称为jekyll_demo。
$ mkdir jekyll_demo
对该目录进行git初始化。
$ cd jekyll_demo
$ git init
然后,创建一个没有父节点的分支gh-pages。因为github规定,只有该分支中的页面,才会生成网页文件。
$ git checkout --orphan gh-pages
以下所有动作,都在该分支下完成。
第二步,创建设置文件。
在项目根目录下,建立一个名为_config.yml的文本文件。它是jekyll的设置文件,我们在里面填入如下内容,其他设置都可以用默认选项,具体解释参见官方网页。
baseurl: /jekyll_demo
目录结构变成:
/jekyll_demo
|-- _config.yml
第三步,创建模板文件。
在项目根目录下,创建一个_layouts目录,用于存放模板文件。
$ mkdir _layouts
进入该目录,创建一个default.html文件,作为Blog的默认模板。并在该文件中填入以下内容。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>{{ page.title }}</title>
</head>
<body>
{{ content }}
</body>
</html>
Jekyll使用Liquid模板语言,{{ page.title }}表示文章标题,{{ content }}表示文章内容,更多模板变量请参考官方文档。
目录结构变成:
/jekyll_demo
|-- _config.yml
|-- _layouts
| |-- default.html
第四步,创建文章。
回到项目根目录,创建一个_posts目录,用于存放blog文章。
$ mkdir _posts
进入该目录,创建第一篇文章。文章就是普通的文本文件,文件名假定为2012-08-25-hello-world.html。(注意,文件名必须为"年-月-日-文章标题.后缀名"的格式。如果网页代码采用html格式,后缀名为html;如果采用markdown格式,后缀名为md。)
在该文件中,填入以下内容:(注意,行首不能有空格)
---
layout: default
title: 你好,世界
---<h2>{{ page.title }}</h2>
<p>我的第一篇文章</p>
<p>{{ page.date | date_to_string }}</p>
每篇文章的头部,必须有一个yaml文件头,用来设置一些元数据。它用三根短划线"---",标记开始和结束,里面每一行设置一种元数据。"layout:default",表示该文章的模板使用_layouts目录下的default.html文件;"title: 你好,世界",表示该文章的标题是"你好,世界",如果不设置这个值,默认使用嵌入文件名的标题,即"hello world"。
在yaml文件头后面,就是文章的正式内容,里面可以使用模板变量。{{ page.title }}就是文件头中设置的"你好,世界",{{ page.date }}则是嵌入文件名的日期(也可以在文件头重新定义date变量),"| date_to_string"表示将page.date变量转化成人类可读的格式。
目录结构变成:
/jekyll_demo
|-- _config.yml
|-- _layouts
| |-- default.html
|-- _posts
| |-- 2012-08-25-hello-world.html
第五步,创建首页。
有了文章以后,还需要有一个首页。
回到根目录,创建一个index.html文件,填入以下内容。
---
layout: default
title: 我的Blog
---<h2>{{ page.title }}</h2>
<p>最新文章</p>
<ul>
{% for post in site.posts %}
<li>{{ post.date | date_to_string }} <a href="{{ site.baseurl }}{{ post.url }}">{{ post.title }}</a></li>
{% endfor %}
</ul>
它的Yaml文件头表示,首页使用default模板,标题为"我的Blog"。然后,首页使用了{% for post in site.posts %},表示对所有帖子进行一个遍历。这里要注意的是,Liquid模板语言规定,输出内容使用两层大括号,单纯的命令使用一层大括号。至于{{site.baseurl}}就是_config.yml中设置的baseurl变量。
目录结构变成:
/jekyll_demo
|-- _config.yml
|-- _layouts
| |-- default.html
|-- _posts
| |-- 2012-08-25-hello-world.html
|-- index.html
第六步,发布内容。
现在,这个简单的Blog就可以发布了。先把所有内容加入本地git库。
$ git add .
$ git commit -m "first post"
然后,前往github的网站,在网站上创建一个名为jekyll_demo的库。接着,再将本地内容推送到github上你刚创建的库。注意,下面命令中的username,要替换成你的username。
$ git remote add origin https://github.com/username/jekyll_demo.git
$ git push origin gh-pages
上传成功之后,等10分钟左右,访问http://username.github.com/jekyll_demo/就可以看到Blog已经生成了(将username换成你的用户名)。
首页:
文章页面:
第七步,绑定域名。
如果你不想用http://username.github.com/jekyll_demo/这个域名,可以换成自己的域名。
具体方法是在repo的根目录下面,新建一个名为CNAME的文本文件,里面写入你要绑定的域名,比如example.com或者xxx.example.com。
如果绑定的是顶级域名,则DNS要新建一条A记录,指向204.232.175.78。如果绑定的是二级域名,则DNS要新建一条CNAME记录,指向username.github.com(请将username换成你的用户名)。此外,别忘了将_config.yml文件中的baseurl改成根目录"/"。
至此,最简单的Blog就算搭建完成了。进一步的完善,请参考Jekyll创始人的示例库,以及其他用Jekyll搭建的blog。
(完)http://www.ruanyifeng.com/blog/2012/08/blogging_with_jekyll.html
GitHub是一个代码托管网站,现在很多开源项目都放在GitHub上。 利用GitHub,可以让全球各地的程序员们一起协作开发。GitHub 提供了一种功能,叫 GitHub Pages, 利用这个功能,我 们可以为项目建立网站,当然,这也意味着我们可以通过 GitHub Pages 建立自己的网站。
Jekyll是一个简单的,针对博客设计的静态网站生成器。使用 GitHub 和 Jekyll,我们可以打造自己的独立博客,你可以自由地定制网站的风格,并且这 一切都是免费的。
这是我在GitHub上自己建立的博客 及源代码 (两个分支),在下文的讲解中,你可以随时查看博客的源代码,以便有直观的认识。
网站截图:
入门指引
GitHub Pages 的 主页 提供了一个简单的入门指引,阅读并 操作一下,会有一个直观简单的认识。
阮一峰的文章《搭建一个免费的,无限流量的Blog----github Pages和Jekyll入门》是使用 GitHub 和 Jekyll 搭建独立博客非常好的入门文章,强烈建议先阅读并操作一遍。
建立自己的博客
在学习完阮一峰同学的文章后,你就已经有能力搭建自己的独立博客了,但是这个博客 只有最基本的功能,并且也不好看。这时候,你面临几个选择:
- 完全自己定制博客
- 找一份框架,修改后使用
- 从GitHub上fork别人的博客代码,在其中添加自己的文章
如果选择 2, 那么 jekyll-bootstrap是一个选择。
如果选择 3, 那么自己Google一下 github.io 博客
能找到不少博客,去fork,然后修改一下就好。 最近有一个jekyll-now,在 GitHub 上已经获取了 1000+ 的fork,可以关注一下。这个项目的特点是,所有操作都是通过网站进行的,不需要懂命令行。另外, 我自己也有一个非常简洁的项目,也不需要懂命令行,直接通过网页操作,就可以有一个自己的博客了。如果只需要这一个简单的博客,可以直接看最后一节:一个极简风格的博客。
如果选择 1, 那么可以好好看看后文的内容。
GitHub + Jekyll 工作机制
- 机制一
- 简单地说,你在 GitHub 上有一个账号,名为
username
(任意), 有一个项目,名为username.github.io
(固定格式,username与账号名一致), 项目分支名为master
(固定),这个分支有着类似下面的 目录结构:
.
├── index.html
├── _config.yml
├── assets
│ ├── blog-images
│ ├── css
│ ├── fonts
│ ├── images
│ └── javascripts
├── _includes
├── _layouts
├── _plugins
├── _posts
└── _site
这样,当你访问 http://username.github.io/
时,GitHub 会使用 Jekyll 解析 用户 username
名下的username.github.io
项目中,分支为master
的源代码,为你构建一个静态网站,并将生成的 index.html
展示给你。
关于这个目录更多的内容,我们还不需要关心,如果你好奇心比较重,可以先看 后文源代码
一节。
看完上面的解释,你可能会有一些疑问,因为按照上面的说法,一个用户只能有一个 网站,那我有很多项目,每个项目都需要一个项目网站,该怎么办呢?另外,在阮一峰 同学的文章中,特别提到,分支名应该为 gh-pages
,这又是怎么回事呢?
原来,GitHub认为,一个GitHub账号对应一个用户或者一个组织,GitHub会 给这个用户分配一个域名:username.github.io
,当用户访问这个域名时, GitHub会去解析username
用户下,username.github.io
项目的master
分支, 这与我们之前的描述一致。
另外,GitHub还为每个项目提供了域名,例如,你有一个项目名为blog
, GitHub为这个项目提供的域名为username.github.io/blog
, 当你访问这个域名时,GitHub会去解析username
用户下,blog
项目的gh-pages
分支。
所以,要搭建自己的博客,你可以选择建立名为 username.github.io
的项目, 在master
分支下存放网站源代码,也可以选择建立名为 blog
的项目,在 gh-pages
分支下存放网站源代码。
GitHub 的 Help 文档中的 User, Organization and Project Pages对此有 详细的描述。
- 机制二
Jekyll 提供了插件功能,在网站源代码目录下,有一个名为 _plugins
的目录, 你可以将一些插件放进去,这样,Jekyll在解析网站源代码时,就会运行你的插件, 这样插件是 Ruby 写成的。可以为Jekyll添加功能,例如,Jekyll默认是不提供分类 页面的,你可以写一个插件,根据文章内容生成分类页面。如果没有插件,你只能每 次写文章,添加分类时,为每个分类手动写 HTML 页面。
在本地运行 Jekyll 时,这些插件会自动被调用,但是GitHub在解析网站源代码时, 出于安全考虑,会开启安全模式,禁用这些插件。我们既想用这些插件,又想用 GitHub,怎么办呢怎么办呢?
GitHub还为我们提供了更一种解析网站的方式,那就是直接上传最终的静态网页, 这样,我们可以在本地使用 Jeklly 把网站解析出来,然后再上传到 GitHub上, 这就使得我们既使用了插件,又使用了 GitHub。在上文的目录结构中,有一个 名为 _site
的目录,这个就是Jeklly在本地解析时最终生成的静态网站,我们 把其中的内容上传到 GitHub 的项目中就可以了。例如,我在GitHub上的网站, 既解析后的 _site
目录,大概是这样的:
.
├── index.html
├── 2013
├── 2014
├── assets
├── categories
├── page2
├── page3
├── page4
├── 工具
├── 思想
├── 技术
└── 源代码阅读
其中的 categories
,2013
, 2014
目录就是分类插件和归档插件帮助我生成的, 我只要把这个目录下的内容上传到 GitHub 相应的项目分支中就可以了。这样,你 访问 username.github.io
时,GitHub就不解析了,直接把index.html
返回给你了。
工作流
关于 git 和 jekyll 的安装与基本使用,这里就不多说了。
- 工作流一
如果你不使用插件,那么只需要维护一个分支就好:
- username/username.github.io 的 master 分支
- username/blog 的 gh-pages 分支
其中 username
是你的 GitHub 帐号。
你需要在本地维护一份网站源代码,添加新文章后,使用 jekyll 在本地测试一下, 没有问题后,commit 到 GitHub 上的相应分支中就可以了。
- 工作流二
如果你需要使用插件,那么需要维护两个分支,一个是网站的源代码分支 ,另一个 是 由Jeklly 解析源代码后生成的静态网站。
例如,如果项目名为 username.github.io,的源代码分支名为 source
,静态网站分支名为master。平时写博客时, 首先在 source 分支下,添加新文章,然后本地使用 jekyll build 将添加文章后的网站 解析一次,这时 _site
目录下就有新网站的静态代码了。然后把这个目录下的所有内容 复制到 master 分支下。这个过程,可以写一个 Makefile,每次添加文章后 make 一下, 就自动将文章发布到 GitHub 上。
Makefile 内容如下:
deploy:
git checkout source
jekyll build
git add -A
git commit -m "update source"
cp -r _site/ /tmp/
git checkout master
rm -r ./*
cp -r /tmp/_site/* ./
git add -A
git commit -m "deploy blog"
git push origin master
git checkout source
echo "deploy succeed"
git push origin source
echo "push source"
下面的内容涉及源代码,如果需要进一步学习,或者有问题,可以在 Jeklly 官网上找到更详细的解释,或者在评论中留言。
源代码
再来看一下这个目录结构:
.
├── _config.yml
├── index.html
├── assets
│ ├── blog-images
│ ├── css
│ ├── fonts
│ ├── images
│ └── javascripts
├── _includes
├── _layouts
├── _plugins
├── _posts
└── _site
- _config.yml
这是针对 Jekyll 的配置文件, 决定了 Jekyll 如何解析网站的源代码,下面是一个示例:
baseurl: /StrayBirds
markdown: redcarpet
safe: false
pygments: true
excerpt_separator: "\n\n\n"
paginate: 5
我的网站建立在 StrayBirds
项目中,所以 baseurl
设置成 StrayBirds
, 我的文章采用 Markdown 格式写成,可以指定 Markdown 的解析器 redcarpet
。 另外,安全模式需要关闭,以便 Jekyll 解析时会运行插件。 pygments
可以使得Jekyll解析文章中源代码时加入特殊标记,例如指定代码类型, 这可以被很多 javascript 代码高度库使用。 excerpt_separator
指定了一个摘要分割符号,这样 Jekyll 可以在解析文章时, 将文章的提要提取出来。 paginate 指定了一页有几篇文章,页数太多时,我们可以将文章列表分页,我们在 后文还会提到。
- _layouts
这个目录存放着一些网页模板文件,为网站所有网页提供一个基本模板,这样 每个网页只需要关心自己的内容就好,其它的都由模板决定。例如,这个目录下的 default.html 文件:
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>{{ page.title }}</title>
</head>
<body>
<header>
</header> <aside>
</aside> <article>
{{ content }}
</article> <footer>
</footer>
</body>
</html>
可以看出,这个文件就是所有页面共有的东西,每个页面的具体内容会被填充在 {{ content }}
中,注意这个 content 两边的标记,这是一种叫 liquid 的标记语言。 另外,还有那个 {{ page.title }}
,其中 page
表示引用 default.html
的 那个页面,这个页面的 title
值会在 page
相应页面中被设置,例如 下面的 index.html
文件,开头部分就设置了 title
值。
- index.html
这是网站的首页,访问 http://username.github.io
时,会指向 http://username.github.io/index.html
,我们看一下基本内容:
---
layout: default
title: 首页
--- <ul class="post-list">
{% for post in site.posts %}
<a href="{{site.baseurl}}{{post.url}}"> {{ post.title }} </a> <br>
{{ post.date | date: "%F" }} <br>
{{ post.category }} <br>
{{ post.excerpt }}
{% endfor %}
</ul>
注意,文件开头的描述,我们称之为 front-matter, 是对当前文件的一种描述,这里 设置的变量可以在解析时被引用,例如这里的 layout
就会告诉 Jekyll, 生成 index.html
文件时,去 _layouts
目录下找 default.html
文件,然后把当前文件解析后,添加到 default.html
的 content
部分,组成最终的 index.html
文件。还有title
设置好的 值,会在 default.html
中通过 page.title
被引用。
文件的主体部分遍历了站点的所有文章,并将他们显示出来,这些语法都是 liquid
语法, 其中的变量,例如 site
, 由 Jekyll 设置我们只需要引用就可以了。而 post
中的变量, 如 post.title
, post.category
是由 post
文件中的 front-matter 决定,后面马上就会看到。
- _posts
这个目录存放我们的所有博客文章,他们的名字有统一的格式:
YEAR-MONTH-DAY-title.MARKUP
例如,2014-02-15-github-jeklly.md,这个文件名会被解析,前面的 index.html
中, post.date
的值就由这里文件名中的日期而来。下面,我们看看一篇文章的内容示例:
---
layout: default
title: 使用 Markdown
category: 工具
comments: true
---
# 为什么使用 Markdown
* 看上去不错
* 既然看上去不错,为什么不试试呢
# 如何使用 Markdown
可以看出,文章的 front-matter 部分设置了多项值,以后可以通过类似 post.title
, post.category
的方式引用这些些,另外,layout
部分的值和之前解释的一样, 文件的内容会被填充到 _layouts/default.html
文件的 content
变量中。
另外,文章中 为什么不试试呢
之后的有三个不可见的 \n
,它决定了这三个 \n
之前的内容会被放在 post.excerpt
变量中,供其它文件使用。
- _includes
这个文件中,存放着一些模块文件,例如 categories.ext
,其它文件可以通过
{% raw %}
{% include categories.ext %}
{% endraw %}
来引用这个文件的内容,方便代码模块化和重用。我的博客 主页上的 分类,归档,这些模块的代码都是通过这种方式引用的。
- _plugins
这个文件中存放一些Ruby插件, 例如 gen_categories.rb
,这些文件会在 Jekyll 解析网站源代码时被执行。下一节讲述的就是插件。
- _site
Jekyll 解析整个网站源代码后,会将最终的静态网站源代码放在这里
插件
插件使用 Ruby 写成,放在 _plugins 目录下,有些 Jekyll 没有的功能,又不能 手动添加,因为页面的内容会随着文章日期类别的不同而不同,例如分类功能和归档功能, 这时,就需要使用插件自动生成一些页面和目录。
- 分类 我的分类插件使用的是 jekyll-category-archive-plugin, 它会根据网站文章的分类信息,为每个类别生成一个页面。
使用方法是,把 plugins/categoryarchive_plugin.rb 放在 plugins 目录下, 把 _layouts/categoryarchive.html 放在 layouts 目录下, 这样,这个插件会在Jekyll解析网站时,生成相应categories目录,目录下是各个分类, 每个分类下都有一个 index.html
文件,这个文件是根据模板文件 categoryarchive.html 生成的,例如:
_site/categories/
├── 工具
│ └── index.html
├── 思想
│ └── index.html
├── 技术
│ └── index.html
└── 源代码阅读
└── index.html
然后,你就可以通过 http://username.github.io/blog/categories/工具/
访问 工具
类下的 index.html
文件。
- 归档 我的归档插件使用的是 jekyll-monthly-archive-plugin,它会根据网站 _posts目录下的文章日期,为每个月生成一个页面。
使用方法同上。注意,这个插件在 jekyll-1.4.2 中可能会出错,在 jekyll-1.2.0 中没有错误。
组件
- 分页
当文章很多时,就需要使用分页功能,在 Jekyll 官网上提供了一种 实现,把相应代码放在 主页上,然后在 _config.yml
中设置 paginate
值就行了。
- 评论
评论功能需要使用外挂,我使用的是 DISQUS, 注册 之后,将评论区的一段代码放在你需要使用评论功能的页面上, 然后,通过在页面的 front-matter 部分使用
comments: true
启用评论。此外,如果你 fork 了我的项目,需要修改 `_inclusds/comments.ext`,把里面的 `disqus_shortname ` 修改成你的博客短名,这个在注册的时候会设置。
评论区截图:
基本的内容就介绍到这里,任何问题,欢迎留言。
另外,如果这篇文章对你有用的话,在GitHub上帮我点个 star 吧,即是对我的肯定,也可以帮助更多的人。
另外,注意如果你要 fork 我的模板,注意里面有些链接是与我的 GitHub 名 minixalpha 相关的,在使用前最好批量地将这个字符串替换为你的账号名。
一个极简风格的博客
从上面的工作流程可以看出,虽然每次我在本地添加文件后,都只要 make 一下就能发布文章,但我还是觉得麻烦,希望能直接通过浏览器在 GitHub 的网站上添加文章,所以,我又建立了一个非常简洁的博客,没有分类,没有评论,就是一个主页,上面有所有文章链接,添加文章时候,只要在 _post 目录下添加一个 markdown 文件就可以了。
这个博客项目为: StrayBirds , 是通过 GitHub 的 Automatic page generator生成。完全通过浏览器操作就能建成,不用 git啊,make啊。这个项目目前已经有了 158 个 fork,但是只有 35 个 star 呀,拜托点下 star,这也太不平衡了……
博客首页:飞鸟集。
要使用这个项目,你需要做的是:
1. 注册 GitHub,例如你的用户名为 minixbeta
2. 到 StrayBirds 点右上角的 fork
3. 到你 fork 后的项目中,将 _config.yml 中的 username 修改成你的用户名 minixbeta
4. 得到你自己的博客 http://minixbeta.github.io/StrayBirds/
需要注意的是,第一次使用 GitHub Pages 时,可能会有较长时间的缓冲时间,过15min左右,才能正常访问博客,请耐心等待。可以尝试修改项目名称来加快这一进程,如何修改后面有介绍。
另外,我又添加了评论系统,让这个简洁的博客更为完整,你需要到 Disqus 上注册,然后添加一个站点,然后将 _confg.yml 中的 disqusname 修改成你的博客短名,这个在Disqus 的 Add Disqus To Site 的时候会设置,注意这里的对应关系。注意这个名字不是你的 Disqus 用户名,是你的站点名。
如果你的文章想启用评论,在写文章的风格定义部分,加上 `comments: true` 即可。像示例文章中那样就行,如果你不想加评论,就不要加这句。
另外,由于这个项目目前已经有 200 个 fork,因此我又将 GitHub Pages 官方的所有主题及掌心做的 Jekyll 主题整合到其中,你可以通过修改 _config.yml 中的 theme 字段,轻松切换主题,不过每次切换都需要等待一段时间才能生效。所以,最好在修改主题之后修改项目名称,可能会回快这一进程。修改方法后面会介绍。
主题包括:
- hack
- leap-day
- merlot
- midnight
- minimal
- modernist
- slate
- time-machine
kunka
如果你想把项目的名字改了,例如,将 StrayBirds 修改为 blog
那么,你需要做的是:
1. 在项目的 Setting 中将 Repository name 从 StrayBirds 修改为 blog
2. 将 _config.yml 中的 baseurl 修改为 /blog
3. 通过 http://minixbeta.github.io/blog/ 来访问你的新博客。
感谢
Thanks to authors of the themes:
- hack, Licence: None
- leap-day, Licence: Creative Commons Attribution
- merlot, Licence: None
- midnight, Licence: None
- minimal, Licence: Creative Commons Attribution-ShareAlike 3.0 Unported License
- modernist, Licence: Creative Commons Attribution-ShareAlike 3.0 Unported License
- slate, Licence: MIT
- time-machine, Licence: None
- kunka, Licence: MIT, author: zhanxin.info
All the themes are intergrated in the blog template, with some modifies.
如果你不太明白,可以看这个StrayBirds 项目在 GitHub 上的 READEME,里面有如何fork项目,修改项目名,添加文章的 GIF 演示。
如果遇到有bug, 麻烦在GitHub 上提交Issues,最好不要在 GitHub 上的博客中评论。
另外, 这篇文章从 2014 年 2 月到现在 (2015年4月) 一直在不断更新,如果对大家有用,希望去 GitHub 上点个 star 支持一下。
搭建一个免费的,无限流量的Blog----github Pages和Jekyll入门的更多相关文章
- 如何在github上搭建一个免费的 无限流量的静态网页博客Github pages
前言: 看到很多相关的教程,但是在实际操作的时候还是遇见了不少问题,这里记录分享一下我的操作流程.免费空间用过很多,博客也用过一些,听说了github后就想试着玩一下这个静态库,感觉挺不错的,操作也比 ...
- 搭建一个免费的,无限流量的Blog----github Pages和Jekyll入门[zz]
喜欢写Blog的人,会经历三个阶段. 第一阶段,刚接触Blog,觉得很新鲜,试着选择一个免费空间来写. 第二阶段,发现免费空间限制太多,就自己购买域名和空间,搭建独立博客. 第三阶段,觉得独立博客的管 ...
- 搭建一个免费的,无限流量的Blog----github Pages和Jekyll入门(转)
转自:http://www.ruanyifeng.com/blog/2012/08/blogging_with_jekyll.html 喜欢写Blog的人,会经历三个阶段. 第一阶段,刚接触Blog, ...
- 【ghost初级教程】 怎么搭建一个免费的ghost博客
ghost博客系统无疑是这个月最火热的话题之一,这个号称”只为博客“的系统,早在项目开始之初就受到了众人的关注.它使用了当前最火热node.js技术,10月14日发布了V0.3.3版本.江湖传言它将是 ...
- 利用github Pages和Jekyll搭建blog实践1
你必须要懂一点git和网页开发.安装了git,并且有github账户. github设计了Pages功能,允许用户自定义项目首页 github提供模板,允许站内生成网页,但也允许用户自己编写网页,然后 ...
- Hexo搭建博客教程(3) - 远程部署到GitHub Pages
本章讲的是如何将本地的个人项目远程部署到 GitHub Pages,涉及到GitHub的项目仓库.Git的使用,以及Hexo的远程部署等. 1. 安装 hexo-deployer-git 插件 想要将 ...
- 用Jekyll在github上写博客——《搭建一个免费的,无限流量的Blog》的注脚
本来打算买域名,买空间,用wordpress写博客的.后来问了一个师兄,他说他是用github的空间,用Jekyll写博客,说很多人都这么做.于是我就研究了一下. 比较有价值的文章有这么几篇: htt ...
- 如何搭建一个独立博客——简明Github Pages与Hexo教程
摘要:这是一篇很详尽的独立博客搭建教程,里面介绍了域名注册.DNS设置.github和Hexo设置等过程,这是我写得最长的一篇教程.我想将我搭建独立博客的过程在一篇文章中尽可能详细地写出来,希望能给后 ...
- 技术人如何利用 github+Jekyll ,搭建一个独立免费的技术博客
上次有人留言说,技术博客是程序员的标配,但据我所知绝大部分技术同学到现在仍然没有自己的技术博客.原因有很多,有的是懒的写,有的是怕写不好,还有的是一直想憋个大招,幻想做到完美再发出来,结果一直胎死腹中 ...
随机推荐
- S1:变量
接触JS一段时间了,但总感觉不得要领,技术得不到提升,翻来覆去,决定对基础知识做一次系统的整理,要坚持每一天都有新的收获 ! 变量,即通过一个名字将一个值关联起来,以后通过变量就可以引用到该值,比如: ...
- CF 103E Buying Sets 最大权闭合子图,匹配 难度:4
http://codeforces.com/problemset/problem/103/E 这道题首先一看就很像是最大权闭合子图,但是我们可以认为现在有两种点,数字和集合点,我们需要消除数字点的影响 ...
- hdu 4612 Warm up
http://acm.hdu.edu.cn/showproblem.php?pid=4612 将原图进行缩点 变成一个树 树上每条边都是一个桥 然后加一条边要加在树的直径两端才最优 代码: #incl ...
- select2去除搜索框
$("#type_select").select2({ minimumResultsForSearch: -1 });
- CodeIgniterCodeigniter+PHPExcel导出数据到Excel文件
解压压缩包里的Classes文件夹中的内容到application\libraries\目录下,目录结构如下:--application\libraries\PHPExcel.php--applica ...
- hashmap and hashtable
①继承不同. public class Hashtable extends Dictionary implements Map public class HashMap extends Abstrac ...
- iOS应用崩溃日志分析
转自raywenderlich 作为一名应用开发者,你是否有过如下经历? 为确保你的应用正确无误,在将其提交到应用商店之前,你必定进行了大量的测试工作.它在你的设备上也运行得很好,但是,上了应 ...
- WIN中SharePoint Server 2010 入门安装部署详解
目前流行的原始安装文件基本都是这样的:Windows Server 2008 R2+SQL Server 2008R2+SharePoint Server 2010 这个初始环境原本也无可厚非 ...
- Note_Master-Detail Application(iOS template)_01_YJYAppDelegate.h
//YJYAppDelegate.h #import <UIKit/UIKit.h> @interface YJYAppDelegate : UIResponder <UIAppli ...
- 【LeetCode OJ】Pascal's Triangle
Prolbem Link: http://oj.leetcode.com/problems/pascals-triangle/ Just a nest-for-loop... class Soluti ...