使用Jekyll + GitHub Pages搭建个人博客

本文将介绍如何使用Jekyll搭建个人博客,并部署在GitHub Pages上。

1.简介

Jekyll是一个强大的静态网站生成器,可以将Markdown、HTML、Liquid模板等文件转换为静态网站。Jekyll支持模板引擎、主题、插件、集成GitHub Pages等特性,可以帮助用户快速搭建和发布静态网站。

官方网站:https://jekyllrb.com/

2.安装

Jekyll支持大多数操作系统,依赖如下:

  • Ruby 2.5.0+
  • RubyGems
  • GCC和Make

下面介绍在Windows系统上的安装步骤,其他操作系统见官方文档安装指引:https://jekyllrb.com/docs/installation/。

2.1 安装Ruby

在Windows上安装Ruby最简单的方式是RubyInstaller。

下载地址:https://rubyinstaller.org/downloads/,选择 Ruby+Devkit 版本,使用默认选项安装即可。

在安装向导最后一步勾选“运行ridk install”:

ridk install

在弹出的命令行窗口中选择 “MSYS2 and MINGW development tool chain”:

MSYS2 installation choice

检查是否安装成功:

ruby -v
gem -v

2.2 安装Jekyll

打开一个新的CMD窗口,执行以下命令安装Jekyll和Bundler:

gem install jekyll bundler

检查是否安装成功:

jekyll -v

3.Jekyll基础

3.1 Jekyll教程

在正式开始搭建个人博客之前,建议先按照Jekyll官方教程Step by Step Tutorial搭建一个Demo网站,了解Liquid模板(变量、标签、过滤器)、前页(front matter)、布局(layout)等基本概念,并学会使用jekyll命令。

Demo网站:https://zzy979.github.io/jekyll-tutorial/

Demo site

3.2 Jekyll目录结构

Jekyll项目的典型目录结构如下:

mysite/_data/foo.yml_includes/foo.html_layouts/default.htmlpost.html_posts/2018-08-20-bananas.md2018-08-21-apples.md_sass/main.scss_site/assets/css/images/js/_config.ymlindex.htmlGemfile

作为博客作者,主要关注以下文件/目录即可(其他目录用于存放主题样式文件):

文件/目录描述
_config.yml配置文件
_posts文章内容,文件命名格式为YYYY-MM-DD-TITLE.EXTENSION
_siteJekyll生成的网站文件
assets/images文章中的图片文件
index.html网站主页

详见官方文档Directory Structure。

3.3 主题

主题(theme)提供了网站页面的布局和样式,详见官方文档Themes。

可以在 http://jekyllthemes.org/ 选择自己喜欢的主题并在线预览。我选择的主题是Chirpy,该主题提供了分类(category)、标签(tag)、目录、语法高亮、数学公式、搜索文章、评论系统等特性,能够满足博客网站的绝大部分需求。

  • 在线Demo & 使用教程:https://chirpy.cotes.page/
  • 项目主页:https://github.com/cotes2020/jekyll-theme-chirpy/

4.搭建个人博客

下面正式开始搭建个人博客网站。参考:Chirpy - Getting Started。

4.1 创建网站

打开chirpy-starter仓库,点击按钮 “Use this template” → “Create a new repository”。

create-repository-step1

将新仓库命名为<username>.github.io,其中<username>是你的GitHub用户名,如果包含大写字母需要转换为小写。

create-repository-step2

注:如果不需要自定义主题样式,则推荐使用这种方式,因为容易升级,并且能离无关文件,使你能够专注于文章内容写作。

4.2 安装依赖

使用git clone将新创建的仓库克隆到本地,并在项目根目录下执行

bundle

4.3 配置

根据需要更新_config.yml中的变量,例如urlavatartimezonelang等。

4.4 启动本地服务器

要在本地预览网站内容,执行

bundle exec jekyll serve

在浏览器访问 http://127.0.0.1:4000/。

4.5 部署

GitHub Pages是一个通过GitHub托管和发布网页的服务,官方文档:https://docs.github.com/en/pages。本文使用GitHub Pages部署个人博客网站。

每个GitHub用户可以创建一个用户级网站,仓库名为<username>.github.io,发布地址为 https://<username>.github.io。GitHub Pages支持自定义域名,参考文档About custom domains and GitHub Pages。

在部署之前,检查_config.yml中的url是否正确配置为上述发布地址(或者自定义域名)。

注意:一般不需要配置baseurl。如果配置了,则文章中必须使用relative_url过滤器生成正确的URL,否则会导致404错误。参考Jekyll’s site.url and baseurl。

之后在GitHub上打开仓库设置,点击左侧导航栏 “Pages”,在 “Build and deployment” - “Source” 下拉列表选择 “GitHub Actions”。

github-pages-deployment-source

提交本地修改并推送至远程仓库,将会触发Actions工作流。在仓库的Actions标签页将会看到 “Build and Deploy” 工作流正在运行。构建成功后,即可通过配置的URL访问自己的博客网站。

https://zzy979.github.io

personal-blog-site

4.6 评论系统

Jekyll生成的博客网站是静态的,没有后端和数据库,因此本身无法实现评论功能。然而,可以使用disqus、utterances和giscus等评论系统来实现评论功能。

本文使用giscus,它是利用GitHub Discussions实现的评论系统,并且是开源、免费的。开启评论系统的步骤如下。

(1)安装giscus app。

(2)在仓库设置页面 “Features” 一节中勾选 “Discussions”,开启仓库的GitHub Discussions功能。

enable-github-discussions

(3)在仓库的Discussions标签页,点击 “Categories” 旁边的编辑按钮,自定义用于博客评论的类别名称(例如 “Comments”)。

edit-discussions-categories

(4)打开 https://giscus.app/,在页面上填写以下配置:

  • Repository: <username>/<username>.github.io
  • Page - Discussions Mapping:保持默认值 “Discussion title contains page pathname” 即可(URL为https://<username>.github.io/posts/<title>的文章将映射到标题为/posts/<title>的Discussion,即使用URL的pathname部分作为Discussion标题)
  • Discussion Category:选择上一步创建的类别名称(例如 “Comments”)

之后找到 “Enable giscus” 一节,将自动生成的配置填写到_config.yml中comments.giscus的对应选项。

giscus-config

comments:active: giscusgiscus:repo: ZZy979/zzy979.github.iorepo_id: R_kgDOKOkhRAcategory: Commentscategory_id: DIC_kwDOKOkhRM4CZCpNmapping: pathname

(5)重启Jekyll服务器,在文章底部将会看到评论区,使用GitHub账号登录即可发表评论。

comment-system-enabled

4.7 写文章

至此,博客网站已经搭建完成,可以开始文章写作了。

要写一篇新的文章,在_posts目录下创建一个文件,命名格式为YYYY-MM-DD-TITLE.md(例如2023-09-03-hello-world.md),TITLE部分将作为文章的URL。

详细配置和语法参考Chirpy文档:

  • Writing a New Post
  • Text and Typography

Front Matter

你需要在文章顶部填写Front Matter信息:

---
title: TITLE
date: YYYY-MM-DD HH:MM:SS +/-TTTT
categories: [TOP_CATEGORIE, SUB_CATEGORIE]
tags: [TAG]
---

其中,title将展示为文章标题(不必与文件名的TITLE部分相同),date将展示为文章创建时间(时区写+0800)。

之后是正文内容。

分类和标签

categories是文章的分类,支持至多两级分类。tags是文章的标签,可以有任意多个。例如:

---
categories: [Animal, Insect]
tags: [bee]
---

目录

默认情况下,目录将会自动生成并展示在文章右侧。如果想全局关闭,则将_config.yml中的toc变量设置为false。如果想对一篇特定的文章关闭,则在Front Matter中添加:

---
toc: false
---

注意:Chirpy生成的目录只显示二级标题(##)和三级标题(###),一级标题(#)不会显示在目录中。参考issue #491。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/68040.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于el-input和el-select宽度不一致问题解决

1. 情景一 单列布局 对于上图这种情况&#xff0c;只需要给el-select加上style"width: 100%"即可&#xff0c;如下&#xff1a; <el-select v-model"fjForm.region" placeholder"请选择阀门类型" style"width: 100%"><el-o…

OpenCV(十四):ROI区域截取

在OpenCV中&#xff0c;你可以使用Rect对象或cv::Range来截取图像的感兴趣区域&#xff08;Region of Interest&#xff0c;ROI&#xff09;。 方法一&#xff1a;使用Rect对象截取图像 Rect_(_Tp _x&#xff0c; _Tp _y&#xff0c; _Tp _width,_Tp _height) Tp:数据类型&…

LinkedList(3):并发异常

1 LinkedList并发异常 package com.example.demo;import java.util.Iterator; import java.util.LinkedList;public class TestLinkedList {public static void main(String[] args) {LinkedList linkedList new LinkedList(); //双向链表linkedList.add(11);linkedList.add(…

关于CICD流水线的前端项目运行错误,npm项目环境配置时出现报错:Not Found - GET https://registry.npm...

关于CICD流水线的前端项目运行错误&#xff0c;npm项目环境配置时出现报错&#xff1a;Not Found - GET https://registry.npm… 原因应该是某些jar包缓存中没有需要改变镜像将包拉下来 npm config set registry http://registry.npm.taobao.org npm install npm run build

IDEA中使用Git

参考文章 1. IDEA中配置Git 2 IDEA 中使用Git 2.1 拉取项目 选择File→New→Project from Version Control。 从码云&#xff0c;github中也都可以拉取&#xff0c;实际工作中可能存在于公司搭建的GitLab中。 复制此项目的git地址&#xff0c;填入URL&#xff0c;Director…

分布式事务学习笔记

MySQL事务 1、 MySQL事务隔离级别 读未提交 &#xff08;READ UNCOMMITTED&#xff09; &#xff08;存在脏读的问题&#xff09;读已提交&#xff08;READ COMMITTED&#xff09;可重复读&#xff08;REPEATABLE READ&#xff09;串行化&#xff08;SERIALIZABLE&#xff09;…

基于Matlab实现多个图像增强案例(附上源码+数据集)

图像增强是数字图像处理中的一个重要步骤&#xff0c;它通过一系列的算法和技术&#xff0c;使图像在视觉上更加清晰、明亮、对比度更强等&#xff0c;以便更好地满足人们的需求。在本文中&#xff0c;我们将介绍如何使用Matlab实现图像增强。 文章目录 部分源码源码数据集下载…

《多线程编程实战指南》总结

Java 并发和多线程编程推荐《Java 并发编程实战》和《多线程编程实战指南》&#xff0c;前者是外国非常受欢迎的书籍的翻译本&#xff0c;后者是国人写的书&#xff0c;符合国人的思维模式。 进程、线程与任务 在操作系统中会运行多个程序&#xff0c;一个运行中的程序就是一个…

计算机竞赛 基于深度学习的人脸识别系统

前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的人脸识别系统 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/…

CTFhub-SSRF-内网访问

CTFHub 环境实例 | 提示信息 http://challenge-8bf41c5c86a8c5f4.sandbox.ctfhub.com:10800/?url_ 根据提示&#xff0c;在url 后门添加 127.0.0.1/flag.php http://challenge-8bf41c5c86a8c5f4.sandbox.ctfhub.com:10800/?url127.0.0.1/flag.php ctfhub{a6bb51530c8f6be0…

基于Spring Boot的企业门户网站设计与实现(Java+spring boot+MySQL)

获取源码或者论文请私信博主 演示视频&#xff1a; 基于Spring Boot的企业门户网站设计与实现&#xff08;Javaspring bootMySQL&#xff09; 使用技术&#xff1a; 前端&#xff1a;html css javascript jQuery ajax thymeleaf 微信小程序 后端&#xff1a;Java springboot…

Linux常用命令——csplit命令

在线Linux命令查询工具 csplit 将一个大文件分割成小的碎片文件 补充说明 csplit命令用于将一个大文件分割成小的碎片&#xff0c;并且将分割后的每个碎片保存成一个文件。碎片文件的命名类似“xx00”&#xff0c;“xx01”。csplit命令是split的一个变体&#xff0c;split只…

react轮播图

这里 我用的是组件&#xff1a; 网址&#xff1a;Collapse 折叠面板 - Ant Design Mobile 1.首先 先声明一个变量 2、把需要的数据存存进去 3、组件内容复制过来&#xff08;这里用到的是map循环&#xff09; 然后图片就出来了 就是这个简单 哈哈哈哈&#xff01;&#xff01…

签到系统怎么设计

背景 相信签到系统大家都有接触过&#xff0c;更多的是使用。但是有思考过这种系统是怎么设计的吗&#xff1f;比方说我统计一下每个月中每天的签到情况&#xff0c;怎么设计呢&#xff1f;今天一篇文章告诉你。 首先&#xff0c;我们熟悉的思维是&#xff1a;我设计一个数据…

java IO流(二) 字符流 缓冲流

字符流 前面学习的字节流虽然可以读取文件中的字节数据&#xff0c;但是如果文件中有中文&#xff0c;使用字节流来读取&#xff0c;就有可能读到半个汉字的情况&#xff0c;这样会导致乱码。虽然使用读取全部字节的方法不会出现乱码&#xff0c;但是如果文件过大又不太合适。…

docker使用(二)提交到dockerhub springboot制作镜像

docker使用&#xff08;二&#xff09; dockerhub创建账号创建存储库成功&#xff01;开始推送获取image名 提交成功SpringBoot项目制作Dockerfile镜像部署打jar包 dockerhub创建账号 &#xff08;自认为可以理解为github一类的东西&#xff09; 单击创建存储库按钮。 设定存…

CNN(六):ResNeXt-50实战

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊|接辅导、项目定制 ResNeXt是有何凯明团队在2017年CVPR会议上提出来的新型图像分类网络。它是ResNet的升级版&#xff0c;在ResNet的基础上&#xff0c;引入了ca…

【mybatis-plus进阶】多租户场景中多数据源自定义来源dynamic-datasource实现

Springbootmybatis-plusdynamic-datasourceDruid 多租户场景中多数据源自定义来源dynamic-datasource实现 文章目录 Springbootmybatis-plusdynamic-datasourceDruid 多租户场景中多数据源自定义来源dynamic-datasource实现0.前言1. 作者提供了接口2. 基于此接口的抽象类实现自…

简单工厂模式概述和使用

目录 一、简单工厂模式简介1. 定义2. 使用动机 二、简单工厂模式结构1.模式结构2. 时序图 三、简单工厂的使用实例四、简单工厂模式优缺点五、简单工厂模式在Java中的应用 一、简单工厂模式简介 原文链接 1. 定义 简单工厂模式(Simple Factory Pattern)&#xff1a;又称为静…

博流RISC-V芯片JTAG debug配置与运行

文章目录 1、Windows下安装与配置2、Linux下安装与配置3、芯片默认 JTAG PIN 列表4、命令行运行JTAG5、Eclipse下使用JTAG 1、Windows下安装与配置 CKLink 驱动安装 Windows版驱动下载地址&#xff1a; https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1666331…