Home 使用Jekyll部署自己的博客
Post
Cancel

使用Jekyll部署自己的博客

原理

使用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,就可以看到博客页面了。


附几款博客主题

This post is licensed under CC BY 4.0 by the author.