文章

jekyll-chirpy-theme-github搭建个人博客

jekyll-chirpy-theme-github搭建个人博客

本地写了不少markdown笔记,一直想自己建一个网站。最初的想法是完完全全自己写一个个人网站,全部自定义,不仅可以有技术笔记栏目还可以有其它记录感想,发表观点,发布工具的栏目。然而时间并不总是能自定义,总有些更优先的事项排在前面,加之自己技术水平还没成长到这个程度,于是退而求其次,选择已有框架搭建一个个人博客,先用之,毕竟都要毕业了,连个像样的博客都没有,实在说不过去。我并未放弃建站的想法,说不定以后就有了。

安装博客生成器

由于kali环境齐全,所以直接在kali下安装本地博客

1
2
3
4
5
6
7
8
9
# 安装jekyll
sudo gem install jekyll

# 安装chirpy主题
git clone git@github.com:cotes2020/jekyll-theme-chirpy.git

# 在jekyll-theme-chirpy目录下安装依赖
# 不需要sudo,命令会在需要时自动调用sudo
bundle install

jekyll-theme-chirpy文件夹就是一个博客生成器,接下来生成本地初始博客。

生成初始博客

生成博客

1
2
3
4
5
# 在jekyll-theme-chirpy目录下生成博客,站点取名为lcatmiao.github.io,这里我取的名与后面要创建的
# 远程库的名字一致,其实也可以不一致。
# jekyll serve命令自动生成名为_site的站点。-d指定生成路径,同时可以重命名站点文件夹名字。
sudo jekyll serve -d lcatmiao.github.io
# 然后Ctrl + C关闭服务

image-20220203225633326

可以看到已经生成了初始博客lcatmiao.github.io

1
2
3
4
5
6
7
# 再次执行jekyll serve命令,这次我们看一下初始博客的样子再关闭服务。
# 下面的命令会再一次生成lcatmiao.github.io文件夹,覆盖现有的,反正我们没做什么更改,覆盖
# 就覆盖,无妨。
# 默认情况下,只有本机才能访问jekyll服务,同一局域网下的其它主机访问不了。
# 加上--host 0.0.0.0后同一局域网下的其它主机就可以访问服务了。这里我的kali是虚拟机,
# 与本机之间是NAT模式。执行下面的命令后,可以在本机的浏览器中访问kali的网页。
sudo jekyll serve -d lcatmiao.github.io --host 0.0.0.0

本机浏览器中输入虚拟机IP,端口号4000,可以浏览到初始博客的样子。

image-20220204120732804

关闭服务。

创建远程库

关于github不多赘述。

登录github,创建空仓库,为公开库,名字必须为username.github.io,username为github的用户名。

推送初始博客

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 进入本地lcatmiao.github.io目录

# 初始化本地库
sudo git init

# 添加暂存区
sudo git add .

# 提交本地库
sudo git commit -m "Initialize the blog" .

# 添加远程库
sudo git remote add lcatmiao.github.io 库链接

# 详细查看远程库
sudo git remote -v

# 推送远程库
sudo git push lcatmiao.github.io master

刷新远程库,可以看见初始博客已经被推送上来,访问username.github.io就能访问到自己的初始博客页面。

修改配置

改_config.yml

在jekyll-theme-chirpy目录下修改_config.yml。

该文件中的注释描述很清楚,自己看着改。配合 jekyll serve 命令在本地查看修改后页面的效果。

改favicon

favicon路径:jekyll-theme-chirpy/assets/img/favicons/

准备好图片,然后在https://realfavicongenerator.net/生成,下载后解压,在解压后的文件夹中删除browserconfig.xml和site.webmanifest,然后将剩下的东西复制到jekyll-theme-chirpy/assets/img/favicons/

删除最近更新栏

(2026.08.28)

不用删了,这个玩意是基于git提交来工作的,所以放入 _posts 的文章必须在博客生成器这个项目中提交。如果修改了某个文件后再次提交,它就会被最近更新栏识别。




最近更新栏似乎没有正常工作,查了很多资料也测试了很久,不知道问题出哪了,我决定删除它。

在jekyll-theme-chirpy/_layouts/page.html中

1
2
3
4
5
6
7
8
9
10
11
12
13
  <!-- pannel -->
  <div id="panel-wrapper" class="col-xl-3 pl-2 text-muted">

    <div class="access">
      {% include update-list.html %}
      {% include trending-tags.html %}
    </div>

    {% for _include in layout.pannel_includes %}
      {% assign _include_path = _include | append: '.html' %}
      {% include {{ _include_path }} %}
    {% endfor %}
  </div>

删除{% include update-list.html %}

推送远程库

1
2
3
4
# 在lcatmiao.github.io目录下
sudo git add .
sudo git commit -m "Personalize some configs" .
sudo git push lcatmiao.github.io master

访问username.github.io查看页面。

放上内容

放入自己的文章

jekyll-theme-chirpy/_posts就是我们放置md文件的位置。

该目录下已有一些文章,这些是博客主题自带的教程,我们不删除,将它们重命名,在每一个文件名前加一个 # ,这样既可以保留这些文件,又可以避免在博客中呈现它们。

image-20220204154244681

下面就可以把我们自己的md文件放进去,md文件可以加上一个 yaml 头,以启用更多功能。关于 yaml 头,直接打开这几个主题自带的md文件看看怎么写就行。

放入自己的md后,按照主题自带md文件的命名格式命名。

1
2
3
# 重新生成博客站点,打开服务
# 在jekyll-theme-chirpy下
sudo jekyll serve -d lcatmiao.github.io --host 0.0.0.0

本地浏览新生成的页面。

推送远程库

1
2
3
# 在lcatmiao.github.io下
sudo git add .
sudo git commit .
1
2
3
4
5
# commit msg
Add git如何合并分支.md

Rename the theme's own md files so that I can keep them and avoid presenting them in
the blog. Besides, add my own md file, git如何合并分支.md.
1
2
# 推送远程库
sudo git push lcatmiao.github.io master

windows备份

因为博客生成器和博客站点都放在虚拟机kali中,而虚拟机经常要回滚,所以我将整个jekyll-theme-chirpy目录在本机windows中备份一份。

附jekyll命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 打开服务,只有本机能够访问网站
# 会生成_site目录
# 自动监测变化
jekyll serve

# 指定生成路径和目录名
jekyll serve -d ~/myblog

# 局域网内其它主机可访问网站
jekyll serve --host 0.0.0.0

# 指定端口
jekyll serve --port 4001

# 后台运行
# 不能监测变化
jekyll serve --detach

更新博客(2026.08.28)

1> 附上Linux临时代理设置方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 临时设置代理
~ 仅当前shell生效

~ 设置代理
export http_proxy="http://192.168.10.128:7897"
export https_proxy="http://192.168.10.128:7897"
export ftp_proxy="http://192.168.10.128:7897"
export no_proxy="localhost,127.0.0.1,::1,192.168.10.0/24"

~ 测试是否生效
curl -I https://www.google.com

~ 若使用sudo,需这样执行:
sudo -E apt update

2> 下载博客生成器。

1
git clone git@github.com:cotes2020/jekyll-theme-chirpy.git

3> 建一个 jekyll-blog-patch 目录,用于接下来存储一些必要的文件。

4>_posts 中的示例md放到 jekyll-blog-patch 中,因为后续执行的脚本将会删除它们。

5> 安装 ruby, gem, bundle

这波安装后,原有的bundle的完整性似乎损坏了,不知道为啥。

1
2
sudo apt install ruby-full build-essential
sudo apt install ruby-dev

gem包一般进行用户级安装,从而不污染系统核心的包。然 bundle 随着ruby的下载已被同时下载了,它本来就是个核心的包,既如此,我们直接使用系统核心bundle。另附用户级安装方法:

1
2
3
4
5
6
7
# 用户级安装bundler
~ 安装至~/.local/share/gem/
gem3.3 install --user-install bundler

# (zsh)在.zprofile中配置环境变量
# set environment variable
export PATH="$HOME/.local/share/gem/ruby/3.3.0/bin:$PATH"

6> Rubygems改源。

1
2
3
4
5
# Rubygems改源
~ https://mirrors.ustc.edu.cn/help/rubygems.html
gem3.3 sources ~ 列出默认源
gem3.3 sources --remove https://rubygems.org/ ~ 移除默认源
gem3.3 sources -a https://mirrors.ustc.edu.cn/rubygems/ ~ 添加科大源

7> 去官网下载nodejs,这次下载的是nvm+npm+nodejs。然后对npm改源。

腾讯源:https://mirrors.cloud.tencent.com/

8> 进入项目目录,跑脚本。

1
2
3
4
5
---
里面好像会执行git和npm操作,虽然改了npm源,但
git操作可能仍需设置代理,否则会很慢。
---
bash tools/init.sh

9> 进入项目目录,下载项目的gem依赖。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 项目级gem改源
~ https://mirrors.ustc.edu.cn/help/rubygems.html
bundle3.3 config mirror.https://rubygems.org https://mirrors.ustc.edu.cn/rubygems/

# 设置gem包应被下载到何处
bundle3.3 config set path gem

# 安装项目依赖的gem包
---
在这一步,会有一个叫sass-embedded-1.103.1-x86_64-linux.gem的包下载失败,
进而导致包括jekyll在内的其它包也不被下载。先不管,这里先执行命令,后面将解决
这个问题。
---
bundle3.3 install

10> 解决 sass-embedded-1.103.1-x86_64-linux.gem 下载失败的问题:

看起来可能是包的名字错了,总之,直接去官方https://rubygems.org/下载离线的包,这里下载的是 sass-embedded-1.103.1-x86_64-linux-gnu.gem,先将其放入 jekyll-blog-patch 中存一下,然后将其置于 /jekyll-theme-chirpy/gem/ruby/3.3.0/cache/ 中,重命名为 sass-embedded-1.103.1-x86_64-linux.gem,然后重新执行 bundle3.3 install

之后,sass-embedded 和包括 jekyll 在内的其它包都将被成功下载。

11> 改博客生成器的配置。

参考上面的内容修改配置,另有一些新的修改,记录如下:

  1. .gitignore 中添加 /gem/, /lcatmiao.github.io/
  2. _config.ymlexclude 中添加 .git, .github, .vscode, node_modules, .bundle, gem
  3. _data/authors.yml 中添加作者 lcatmiao,如此,md文件front matter中的 author 字段才能正常工作。

配置修改完成后,将 .gitignore, _config.yml, _data/authors.yml, favicon.zip 放入 jekyll-blog-patch 保存。

12> 写“关于”。

写一下 _tabs/about.md,然后将其置于 jekyll-blog-patch 保存。

13> 可以放入自己的文章到 _posts 了。这里把博客生成器自带的示例文章也放入之,重命名,开头加个 #,这样它们就不会被解析。

14> 生成博客:

1
bundle3.3 exec jekyll serve -d lcatmiao.github.io --host 0.0.0.0
本文由作者按照 CC BY 4.0 进行授权

热门标签