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关闭服务
可以看到已经生成了初始博客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,可以浏览到初始博客的样子。
关闭服务。
创建远程库
关于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文件的位置。
该目录下已有一些文章,这些是博客主题自带的教程,我们不删除,将它们重命名,在每一个文件名前加一个 # ,这样既可以保留这些文件,又可以避免在博客中呈现它们。
下面就可以把我们自己的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> 改博客生成器的配置。
参考上面的内容修改配置,另有一些新的修改,记录如下:
- 在
.gitignore中添加/gem/, /lcatmiao.github.io/。 - 在
_config.yml的exclude中添加.git, .github, .vscode, node_modules, .bundle, gem。 - 在
_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


