GitHub Pages 免费无限容量的站点数据托管工具(国内访问速度较慢),内置Jekyll服务,能将特定名称的代码仓库动态编译为静态网页

Jekyll 基于Ruby的静态网页生成系统,采用模板将Markdown(或Textile)文件转换为统一的网页

统计 统计工具主要是为了方便查看站点的访问情况,目前支持百度统计Google Analytics(可同时使用)

评论 评论工具可以为静态页面增加评论和分享功能,目前支持国内的多说和国外的Disqus

本文将重点介绍标注     的必选项目,未标注的可选项目请按照给定地址自行注册即可

建立GitHub Pages站点

  1. 在GitHub上建立一个以 .github.io 为后缀的和你帐号名一样的代码仓库,如我的帐号是:xkloveme,则建立的仓库名为:xkloveme.github.io, 同时在底部Add .gitigore选择Jekyll模板,这样Jekyll产生的临时文件,例如_site目录就不会添加到源代码管理中,当然你也可以以后手动配置:

  2. 将该代码仓库克隆到地:

    1. $ git clone https://github.com/xkloveme/xkloveme.github.io
  3. 创建一个测试页面并推送:

    1. $ cd xkloveme.github.io
    2. $ echo "Hello World" > index.html
    3. $ git add --all
    4. $ git commit -m "Initial commit"
    5. $ git push -u origin master
  4. 浏览器中输入xkloveme.github.io,如果一切正常,你应该能看到一个显示Hello World的页面.

请将以上的 xkloveme 替换为你申请的帐号名

安装配置Jekyll

  1. 安装Jekyll:

    1. $ gem install jekyll
  2. 创建或使用模板, 创建模板使用 jekyll new name 命令,但创建出来的测试模板极其简陋,在这里我主要介绍使用第三方主题,在 这里 你可以找到各种主题,当然你也可以直接使用我的博客模板:点击下载,下载后解压到本地代码仓库目录,并运行 bundle install 命令安装项目依赖包.

  3. 运行 jekyll serve 启动本地测试服务器,Jekyll默认使用4000端口,如果被占用,可以使用 jekyll serve -P $PORT 指定其他端口,如果本机从没配置过Jekyll,可能会给出 cannot load such file – bundler 的错误,运行 gem install bundler 即可解决,如果还是出现包缺失的错误,可以从以下两点排查:

    • Gemfile文件未添加指定包
    • 运行环境冲突,可以运行 bundle exe jekyll serve 执行,或者运行 sudo bundle clean –force(该命令会对全局环境造成影响,小心使用) 强制清理无关包后重新运行
  4. 在浏览器中输入 127.0.0.1:4000 进行本地预览

Ruby包管理工具介绍

  • gem 全局包管理工具,类似于Python的pip, Node.js的npm -g

    • gem install 安装组件
    • gem install -v 安装特定版本
    • gem list 列出已经安装组件
    • gem sources -a 添加源
    • gem sources –remove 删除源
  • bundle 项目包管理工具,可以理解为一个独立的运行环境
    • bundle update 更新项目依赖包
    • bundle install 安装项目依赖包
    • sudo bundle clean –force 强制删除不相关的包
    • bundle exe 在指定环境中运行

使用我的博客模板

  1. 按照注释说明修改 _config.yml 配置文件
  2. 删除文章目录 _post/ 和文章图片目录 images/posts/ 下面的所有内容
  3. Enjoy!

我的模板在 leopardpan 基础上进行了修改,主要改进了以下内容:

  • 统一风格,给关于,标签页面添加了标题栏
  • 添加分割改进文章列表的多标签显示
  • 修正了一些翻译不全的文字
  • 代码颜色高亮支持,综合了Pygments monokai方案和Rouge monokai.sublime方案,点此查看
  • 底部统计和版权排版对齐
  • 更新Jekyll及其依赖包到最新版本
  • 修正jekyll-sitemap加载失败的问题
  • 支持GFM形式的Markdown Codeblock解析

如果喜欢请Star!,谢谢!

编写文章

推荐

  1. 国内在线md编辑工具mdeditor一款国内的在线markdown编辑器
  2. 国外在线md编辑工具stackedit国外的在线markdown编辑器,功能强大,同步云盘国内用户不推荐速度稍慢 文章为Markdown格式,请使用.md作为后缀名,有以下两个文章目录:
  • _posts 文件名格式为:YEAR-MONTH-DAY-title.md
  • _drafts 草稿目录,文件名格式为:title.md,即不加日期前缀,如果需要预览草稿,使用 --drafts 选项运行 jekyll serve 或 jekyll build

* 尽量避免使用中文文件名, 具体目录结构请参考: 官方文档

每篇文章都必须以参数:

  1. ---
  2. layout: post
  3. title: 使用GitHub+Jekyll搭建个人博客
  4. date: 2016-11-21 11:29:08 +0800
  5. tags: [Jekyll, GitHub, 教程]
  6. ---

作为头部信息,layout为布局格式;title为显示的文章名;date为显示的发布日期;tags为文章分类标签

文章正文采用Markdown编写,如果不熟悉可以查看: Markdown 快速入门;强烈建议遵循Markdown Lint,规范有一些对书写文章不友好的地方,我做了调整,以下是我的Visual Studio Code的配置文件:

  1. "markdownlint.config": {
  2. "MD002": false, // 禁用文章开头必须为H1标题栏
  3. "MD001": false, // 禁用严格的标题层级关系(H1->H2->H3...)
  4. "MD003": { "style": "setext_with_atx_closed"}, // 允许#和===形式的标题风格混用
  5. "MD009": { "br_spaces": 2 }, // 允许末尾两个空格为<BR/>自动换行模式
  6. "MD013": false, // 禁用单行长度限制
  7. "MD014": false, // 禁用sh命令以 $ 作为开始
  8. "MD038": false, // 禁用代码不以空格作为开始或结束
  9. "MD041": false, // 禁用代码段必须有标题栏
  10. "MD029": { "style": "ordered" } // 有序列表格式为顺序方式
  11. }

Jekyll的Markdown解释器从3.0开始,默认从 redcarpet+Pygments 换为 kramdown+Rouge, 现在已知的问题为:列表下不支持GFM形式的代码块(神奇的是Github下的README.md文件支持),折中的办法是使用区块引用(Blockquote),在其下再使用代码块(我的博客模板已针对这种情况在呈现上做了优化)

使用GitHub Pages+Jekyll搭建个人博客的更多相关文章

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

    使用Jekyll + GitHub Pages免费搭建个人博客 My Blog:无名の辈 | VectorX (vectorxxxx.github.io) Download Ruby:Download ...

  2. 利用Octopress在github pages上搭建个人博客

    利用Octopress在github pages上搭建个人博客 SEP 29TH, 2013 在GitHub Pages上用Octopress搭建博客,需要安装ruby环境.git环境等.本人在Fed ...

  3. GitHub Pages + Hexo搭建个人博客网站-github风格-采坑记录

    目录 1.本机安装nodejs 2.github上创建仓库 3.安装hexo 4.hexo主题 5.配置主题 6.添加文章 7.使用分类和标签 8.增加文章目录 9.推送github 使用github ...

  4. 使用jekyll在GitHub Pages上搭建个人博客【转】

    网上有不少资源,但大多是“授人以鱼”,文中一步一步的告诉你怎么做,却没有解释为什么,以及他是如何知道的.他们默认着你知道种种专业名词的含义,默认着你掌握着特定技能.你折腾半天,查资料,看教程,一步步下 ...

  5. 使用github与jekyll搭建个人博客(一)

    虽然使用博客园还没有多久,但是最近看到一些大神的博客觉得很是炫酷.于是突发奇想,想要搭建自己的博客站点儿.编程菜鸟一枚,还是想要记录下最近的搭建博客经历. 使用github搭建个人博客的方式有很多,百 ...

  6. 使用Hexo和Github Pages快速搭建个人博客

    在编程路上,每天都在网上查看别人的博客,大牛的文章写得通俗易懂,同时博客网站也非常华丽.作为出入编程的一枚小白也想拥有这样一个自己的网站.那就立马去买一个域名了,在网上找教程来搭建. 搭建的过程还算比 ...

  7. Github Pages+Gridea搭建个人博客

    1 概述 Github Pages可以用来托管个人网站,静态的,便于用来实现博客,可以在一个仓库的settings中开启: Gridea是一个静态博客写作客户端,所有文件都在本地,没有数据库,实现简单 ...

  8. 使用 github + jekyll 搭建个人博客

    github + jekyll 本地写markdown,然后push到github,就成了博客 其实我一早就知道这两者可以搭建个人博客,因为本人有个很好的习惯——每天都会去看看一些热门文章,了解行业最 ...

  9. 让搭建在 Github Pages 上的 Hexo 博客可以被 Google 搜索到

    title: 让搭建在Github Pages上的Hexo博客可以被Google搜索到 date: 2019-05-30 23:35:44 tags: 配置 --- 准备工作 搭建好的博客 npm & ...

随机推荐

  1. centos7架设vsftpd服务

    网络控制相关命令: systemctl status network 网络状态 systemctl restart network 网络重启 查看网络状态: nmcli connection show ...

  2. 微信小程序+OLAMI(欧拉蜜)自然语言API接口制作智能查询工具--快递、聊天、日历等

    微信小程序最近比较热门,再加上自然语义理解也越来越被人关注,于是我想赶赶潮流,做一个小程序试试.想来想去快递查询应该是一种比较普遍的需求. 如果你也在通过自然语言接口做点什么,希望我的这篇博客能帮到你 ...

  3. 移动端布局最佳实践(viewport+rem)

    通过前几天写的两篇博客(浅谈移动端三大viewport和移动端em和rem区别),我们现在来总结一下如何实现一个最佳方案. 之前在第二篇博客中提到过我们可以使用媒体查询来针对不同设备及做适配,如下图 ...

  4. for循环问题

    印象中的for语句是这样的,语法:  for (语句 1; 语句 2; 语句 3) { 被执行的代码块 }  语句 1 (代码块)开始前执行 starts. 语句 2 定义运行循环(代码块)的条件 语 ...

  5. 走进json

    纯做笔记,请多指教... 1,json格式: 非数组: {"key" : "value"} 数组:[{"key" : "value ...

  6. Java 9 揭秘(17. Reactive Streams)

    Tips 做一个终身学习的人. 在本章中,主要介绍以下内容: 什么是流(stream) 响应式流(Reactive Streams)的倡议是什么,以及规范和Java API 响应式流在JDK 中的AP ...

  7. IntelliJ idea学习资源

    工作需要, 最近得从Eclipse转战到Idea, 找了些不错的学习资料: 1, 从eclipse上迁移过来的用户说明: https://www.jetbrains.com/help/idea/201 ...

  8. 40. leetcode 202. Happy Number

    Write an algorithm to determine if a number is "happy". A happy number is a number defined ...

  9. 奇怪的道路[JXOI2012]

    题目描述 小宇从历史书上了解到一个古老的文明.这个文明在各个方面高度发达,交通方面也不例外.考古学家已经知道,这个文明在全盛时期有n座城市,编号为1..n.m条道路连接在这些城市之间,每条道路将两个城 ...

  10. for’ loop initial declarations are only allowed in C99 mode

    今天做南邮编程在线的编程题,编程首先计算Fibonacci数列1,1,2,3,5,8,13,21,......的前n项(n不超过40)存入一维整型数组f中,再按%12d的格式输出每项的值,每6项换一行 ...