Jekyll配置记录
本文旨在记录Jekyll配置的全过程
环境配置
要求环境
- NodeJS
- Ruby (2.4.0或者更高)
- RubyGems
安装过程
安装NodeJS
首先安装 NodeJS ,由于NodeJS版本较多,考虑到版本切换和配置复杂,这里先安装NodeJS版本管理器NVM。
下载并运行脚本:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
添加环境:
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm重新载入环境
source ~/.bashrc
验证安装
command -v nvm
然后再安装NodeJS
安裝最新版的 Node.js
nvm install node
或者安装指定版本的 Node.js
nvm install 6.14.4 # 安装Node 6.14.4版本
测试 Node.js
node -v
安装Ruby
安装 Ruby (RubyGem集成在Ruby内)
sudo apt-get install ruby-full build-essential zlib1g-dev
配置 RubyGem 安装路径(避免以root用户安装)
echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME="$HOME/gems"' >> ~/.bashrc
echo 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.bashrc重新载入环境
source ~/.bashrc
至此 Jekyll 依赖的环境配置完毕。
安装Jekyll
安装 Jekyll 和 bundler gems.
gem install jekyll bundler
测试 Jekyll
jekyll help
至此 Jekyll 安装完成。
新建一个Jekyll网页
建立一个新的 Jekyll 网页,并且保存在目录
./myblog
下jekyll new myblog
进入目录
./myblog
cd myblog
编译网页并且创建一个本地网页服务器用于测试
bundle exec jekyll serve
在浏览器中输入
http://服务器IP:4000
就可以预览页面
进阶
目录结构
首先要了解 Jekyll 网站的目录结构,具体的的配置信息请参考https://www.jekyll.com.cn/docs/structure/
. |
如果你像我一样懒,不太想去研究HTML、CSS、JS之类的,我们大可直接下载个模版来修改,只要注明引用出处就好了。这里我借用了黄玄大佬的模版https://github.com/Huxpro/huxpro.github.io/ 。
我们把他的模版Clone下来,然后去修改_config.yml
内的各种参数就可以使用了。附上我自己的_config.yml
供参考。
Site settings |
安装插件
如果是直接套用大佬们的模版,那常用的插件一般都会集成了。但是如果想要安装额外的插件,如我想安装jekyll-sitemap
来方便Google来抓取我的网页:(安装的方法有很多种,这里介绍一种)
在
Gemfile
里添加gem 'jekyll-sitemap'
编辑
_config.yml
文件,在plugins:
项目里添加插件:_config.yml
plugins:
- jekyll-paginate
- jekyll-sitemap #新添加的插件然后执行
bundle install
即可完成安装。
编写博文
上文可知_posts
目录下面是存放发布的文章的,Jekyll对格式有两个要求:
文章的文件名需要按照
YEAR-MONTH-DAY-title.md
进行命名。文字开头必须包含
YAML
信息块。在YAML
信息块要包含layout,标题,副标题,日期等信息。部分插件也需要在这里进行设置,如一些公式插件。---
layout: post # 使用的布局(不需要改)
title: 懒人升级!自动判断上下班+导航+放歌 # 标题
subtitle: 捷径(快捷指令)简易教程 # 副标题
date: 2020-12-20 # 时间
author: Road # 作者
header-img: img/iOSOneButtonNavigation&play-05.JPG # 这篇文章标题背景图片
catalog: true # 是否归档
tags: # 标签
- 捷径
- 快捷指令
- 一键导航
- CarPlay
---
运行网站
其实Jekyll最佳的归宿就应该是部署到Github Pages,因为Jekyll最初的开发者就是Github的创始人,而且很多Jekyll的开发者也是GitHub的员工,所以我们能看到Jekyll宛如GitHub的亲儿子般的存在。Jekyll部署到Github Pages支持自动生成页面,也就是可以把整个源码推送上去让Github来生成,可以说是又便宜又好用了。
但是因为各种原因(墙、HTTPS、百度爬不到等)我并不想放在GitHub上,而是希望放在自己的小服务器上。然而不少的教程会告诉你用官方的server
指令,然后绑定一下端口域名就好了,也就是:
jekyll serve |
或者是简写:
jekyll s |
甚至还有教你添加更多选项的,如端口-p --port
、后台运行-B --detach
、检测到代码变动自动编译网页-w --watch
, 如:
jekyll s -p 80 --detach --watch |
更多的配置选项可以参考Configuration Options | Jekyll • Simple, blog-aware, static sites
当然事实上 --watch
不能与--detach
共用,会提示:
Auto-regeneration: disabled when running server detached. |
也会有大佬给出解决方案,可以参考https://helloworldkb.com/6623314/jekyll服务%22-watch”不能与%22-detach”结合使用
可是我认为直接用官方的内置的web服务器来当正式上线的服务器是不妥的,毕竟这个内置的web服务器只是用来本地测试的(虽然我讲不出哪里不妥)。所以我认为更好的做法应该是把编译出来的文件交给专业的web服务器托管(如Apache、 Nginx 、IIS)。
记录一些指令
初期用自带的测试web服务器发布网页时用的网页,不推荐使用!
可以使用命令将网站生成到目标文件夹:
jekyll build --destination <destination>
=> 当前文件夹中的内容将会生成到目标文件夹<destination>中。启动服务器:
bundle exec jekyll serve --host 0.0.0.0 --port 80 --detach
后台启动测试服务器,端口设置为80setsid jekyll serve --host 0 --watch --force_polling &>/dev/null </dev/null &
后台启动测试服务器,并且发现变动时自动更新(不稳定,服务很容易)停止服务器
sudo pkill -f jekyll