原理
使用Jekyll将Markdown编写的博客生成HTML文件,也就是静态的网页,部署到GitHub上,使用GitHub提供的GitHub Pages功能来运行展示自己的博客,无需自己的数据库和服务器。
安装Ruby环境
需要在Ruby环境下才可以运行Jekyll,所有首先要安装Ruby环境。
根据自己的操作系统下载Ruby的安装包 https://rubyinstaller.org/downloads/,选择WITH DEVKIT这一栏的安装包,后面编译需要用到DevKit,免去了自己下载安装DevKit的步骤。我这里下载的是 Ruby+Devkit 2.7.2-1 (x64) 。
双击安装包进行安装。安装完成后打开cmd窗口,输入ruby -v
查看是否安装成功。如下出现Ruby的版本号则表示安装成功。
还需要安装RubyGems,RubyGems是Ruby的一个包管理器,RubyGems在功能上与apt-get、portage、yum和npm非常相似。Ruby1.9.1 以后版本已经自带了,所以无需额外下载。打开cmd窗口,输入gem -v
查看是否安装RubyGems,如下出现RubyGems的版本号则表示安装成功。
切换RubyGems源
由于网络原因,导致rubygems.org存放在Amazon S3上面的资源文件间歇性连接失败。所以首先要切换Ruby的gem源,有两个比较好的镜像源可供选择,一个是淘宝,另一个是ruby-china,网上大部分的教程都是用淘宝的,但是我在使用淘宝镜像源https://ruby.taobao.org/
的时候发现老是会出现认证错误:
1
Error fetching https://ruby.taobao.org/:SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://rubygems-china.oss-cn-hangzhou.aliyuncs.com/specs.4.8.gz)
原因是淘宝的这个镜像源已经不再维护,所以改用https://gems.ruby-china.org/
的镜像源,但是也报错了:
1
Error fetching https://gems.ruby-china.org/: bad response Not Found 404 (https://gems.ruby-china.org/specs.4.8.gz)
原因是服务域名更换了,打开报错地址:https://gems.ruby-china.org/ 会有如下图提示,将org后缀改为com即可。
使用以下命令来切换镜像源
1
2
3
4
5
6
7
8
9
10
11
gem sources # 查看当前使用的源地址
gem sources -r url # 删除默认的源地址,注:默认的url地址后必须有”/”,否则删不掉
gem sources -a url #添加新的镜像源地址
gem sources -u # 更新源的缓存
# 以切换ruby-china为例
gem sources
gem sources -r https://rubygems.org/
gem sources -a https://gems.ruby-china.com/
gem sources -u
gem sources # 查看一下是否切换成功
安装Jekyll
输入以下命令等待Jekyll安装完成
1
2
gem install jekyll
gem install jekyll -v '指定版本号' # 安装指定版本
输入jekyll -v
查看是否安装成功,如下出现Jekyll的版本号则表示安装成功。
下载Jekyll主题
从Jekyll的主题官网 http://jekyllthemes.org/ 下载自己喜欢的主题,并解压到本地。
运行Jekyll
进入到解压好的主题根目录下,输入以下命令启动Jekyll
1
jekyll serve
可能会出现以下的错误
1
2
3
4
5
6
7
jekyll serve
C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/bundler-1.13.6/lib/bundler/resolver.rb:366:in `block in verify_gemfile_
dependencies_are_found!': Could not find gem 'github-pages x64-mingw32' in any of the gem sources listed in yo
ur Gemfile or available on this machine. (Bundler::GemNotFound)
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/bundler-1.13.6/lib/bundler/resolver.rb:341:in `each'
from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/bundler-1.13.6/lib/bundler/resolver.rb:341:in `verify_gemf
ile_dependencies_are_found!'
下载对应的依赖即可
1
2
gem install github-pages
gem install github-pages -v 版本号 # 安装指定版本依赖
显示以下内容则表示启动成功
在浏览器中输入http://localhost:4000/
访问,enjoy it。
Jekyll的目录结构
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
.
├──_config.yml
├── _drafts
| ├── begin-with-the-crazy-ideas.textile
| └── on-simplicity-in-technology.markdown
├── _includes
| ├── footer.html
| └── header.html
├── _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
├── .jekyll-metadata
└── index.html
每个目录的作用
目录 | 描述 |
---|---|
_config.yml | 保存配置数据 |
_drafts | drafts(草稿)是未发布的文章 |
_includes | 你可以加载这些包含部分到你的布局或者文章中以方便重用 |
_layouts | layouts(布局)是包裹在文章外部的模板 |
_posts | 这里放的就是文章了 |
_data | 格式化好的网站数据。Jekyll的引擎会自动加载在该目录下所有的yaml文件(后缀是.yml, .yaml, .json或者.csv )。这些文件可以经由site.data访问。如果有一个members.yml文件在该目录下,你就可以通过site.data.members获取该文件的内容。 |
_site | 一旦Jekyll完成转换,就会将生成的页面放在这里 |
将博客发布到GitHub
首先需要有一个GitHub帐号,其次拥有一个存储库,存储库名称必须是<username>.github.io
,<username>
就是你的GitHub用户名。然后需要打开GitHub Pages功能
在本地使用jekyll serve
命令将md文件编译成HTML文件,然后将_site目录下的内容上传到刚才新建的存储库中,在浏览器打开https://xxx.github.io
,就可以看到博客页面了。
附几款博客主题
- Typecho的主题:未命名 DEFAULT小改模板,预览:未命名
- Wordpress的主题:smarty_hankin,预览:hankin