Jekyll 是一个简单的免费的 Blog 生成工具,类似 WordPress,但是不同的是,Jekyll 只是一个生成静态网页的工具,不需要数据库支持,不支持评论功能,只关注 Blog 本身的内容。
不过,可以配合第三方评论服务,例如 Disqus;最关键的是 Jekyll 可以免费部署在 Github 上,而且可以绑定自己的域名。
接下来,我们看看如何搭建一个 Blog 。
一步步安装
可以通过如下方式一步步的安装测试。
1. 安装Jekyll
安装 Jekyll 环境。
在 CentOS 上,安装 Nodejs 时,需要安装 EPEL 源,否则会出错 Could not find a JavaScript runtime 。
2. 创建默认目录结构
Jekyll 会动态创建 Blog ,并将结果保存在 _site 中,因此访问时直接访问静态文件。
3. 运行
安装完成后可以在源码目录下执行如下命令,
在浏览器中输入 http://localhost:4000,其中 -w 与 --watch 相同,修改文件时会自动刷新;--incremental 参数表示只编译更新的文件。
4. 上传到 github
Jekyll 是 GitHub Pages 的后台博客引擎,也就是说 Github 可以支持 Jekyll 部署的。
首先,必须在 github 上搭建一个名称为 username.github.io 的代码仓库,其中 username 就是每个 github 用户的用户 ID,只有这样名称的库才能被 github 用于链接到个人博客。
需要注意的是,username 不区分大小写。
可以通过如下方式将更改提交到 github,可以添加 .gitignore 文件,文件内容为。也就是在提交到 github 时,忽略动态生成的网页,忽略备份,忽略尚未完成的文章(未完成的文章使用 _init.md 作为后缀)。
常用操作如下。
5. MarkDown 语法
如下是一些常见的 Markdown 语法,以及转换后的 tag 。
配置优化
配置文件
也就是 _config.yml ,详细可以参考 官方配置文件讲解,如下是我的一个简单配置文件。
注意:现在不再支持 auto: true ,应该在启动时使用 --watch/-w 参数。从 2016.5.1 之后,Markdown 引擎只支持 kramdown,其它的 rdiscount、redcarpet 将不再支持。
添加分类
对于 blog 可以在头部通过如下方式设置 。
为文章设置好分类之后,就可以读取分类列表了,所有的分类都在 site.categories 变量中,所以只遍历它,就可以把分类读取出来, 其中: category | fist 为分类名称, category | last | size 为该分类下文章数量。
如果 Category 为中文,显示将会出错,可以通过如下方式修改。
头部信息
字体
有些字体可以从网站上下载,不过对于中文来说,如果要覆盖所有的中文字体就会导致下载比较大的字体包,所以除非固定使用的字,建议还是使用系统自带的。
可以从 www.dafont.com 下载相应的字体。
添加 TOC
网上有介绍使用 Bootstrap 的 Affix & Scrollspy 组件的,不过配置调试起来有些麻烦,不太符合需求,所以就用 javascript 实现了一个简单的 Table Of Contents 。
详细可以直接查看 main.js 源码,会自动区分是否是 post 页面,且文章的内容最高 head 是 h2 。
关于 ScrollSpy 内容,可以参考 为Jekyll博客添加目录与ScrollSpy效果,或者 本地文档 。
添加搜索
其中功能比较完善的是 jekyll-lunr-js-search,利用 lunr.js 实现的全文搜索,不过同样配置也有些麻烦,暂时就先不考虑了。
在此,简单实现了搜索,在根目录下保存了一个 json 格式文件,包括了需要搜索的内容,页面加载时同样会请求该文件,在前端进行搜索。
高亮显示
需要安装 Python、easy_install、Pygments 工具,对于一些平台,如果 easy_install 没有安装,可以通过如下命令安装。
设置 _config.xml,注意 pygments: true 选项已经取消,目前采用的是 highlighter 。
Pygments 提供了多种样式,比如’native’、’emacs’、’vs’ 等等,可以从 Pygments demo 中选择某种语言的例子,支持的语法高亮可以查看 Available lexers,也可以参考如下 网站 自定义高亮格式。
通过下面的命令可以查看当前支持的样式:
选择一种样式,应用在 Jekyll 中执行如下命令,其中 “native” 是样式名,”html” 是 formatter 。
优化
去除 a 标签虚线
在 CSS 中添加如下内容即可。
响应式
实际上利用的是 BootStrap 的栅格系统,sidebar 的标签内容如下。
也就是只有在 lg 大小的屏幕时,才会显示侧边栏。
SEO 技巧
Search Engine Optimization, SEO 也就是搜索引擎优化,指遵循搜索引擎的搜索原理,对网站结构、网页文字语言和站点间互动外交略等进行合理规划部署,以改善网站在搜索引擎的搜索表现,进而增加客户发现并访问网站的可能性。
在 Github 中,有一个 jekyll-seo-tag 插件可以参考,不过暂时没有采用,防止 Github 不兼容。
1. 标签优化
title 通常是标题名+网站名称;另外增加适当的 keywords、description、robots 等标签。
2. 站长工具
通常有 Google、Baidu 等搜索引擎的站长工具,通常需要在网站的 <head> </head>
头部添加类似如下的特定元标记,用于标记确实是你网站,也就是用于认证。
这样就有利于搜索引擎的收录。
参考
可以参考中文官方网站 Jekyll 将纯文本转化为静态网站和博客 或者参考英文网站 Jekyll Transform your plain text into static websites and blogs ;其中可以参考 各种 blog 模版 。
关于搭建 Blog 可以查看 Jekyll和Github搭建个人静态博客 中的介绍;还有两篇之前保存的 用Jekyll构建静态网站、教你一步一步搭建Jekyll博客,也可以参考本地保存的 blog1、blog2、blog3。
Markdown 语法的目标是:成为一种适用于网络的书写语言,详细可以参考 Markdown 语法说明 (简体中文版),或者 本地保存文档 。