使用jekyll搭建blog有感

"Hello World, Hello Blog"

Posted by yanbo on June 5, 2020

Intro

Jekyll 是一个简单的博客形态的静态站点生产机器。它有一个模版目录,其中包含原始文本格式的文档,通过一个转换器(如 Markdown)和其的 Liquid渲染器转化成一个完整的可发布的静态网站,你可以发布在任何你喜爱的服务器上。Jekyll 也可以运行在 GitHub Page 上,也就是说,你可以使用 GitHub 的服务来搭建你的项目页面、博客或者网站,而且是完全免费的。

安装环境以Linux环境为例。我这里使用腾讯云来进行安装。

事先准备

安装 Jekyll 相当简单,但是你得先做好一些准备工作。开始前你需要确保你在系统里已经有如下配置。

  • Ruby(including development headers, Jekyll 2 需要 v1.9.3 及以上版本,Jekyll 3 需要 v2 及以上版本)
  • RubyGems
  • Linux, Unix, or Mac OS X
  • NodeJS, 或其他 JavaScript 运行环境(Jekyll 2 或更早版本需要 CoffeeScript 支持)。
  • Python 2.7(Jekyll 2 或更早版本)

下面对于这些环境项配置安装。记录我的个人安装过程。

Ruby的安装

使用RVM进行安装。安装细节见github主页。

安装software-properties-common库。

1
$ sudo apt-get install software-properties-common

添加PPA和功能包。

1
2
3
$ sudo apt-add-repository -y ppa:rael-gc/rvm
$ sudo apt-get update
$ sudo apt-get install rvm

写入窗口配置~/.bashrc。如果使用zsh需要改成~/.zshrc。

1
2
3
$ echo 'source "/etc/profile.d/rvm.sh"' >> ~/.bashrc
$ source ~/.zshrc
$ rvm install ruby

但是这个安装遇到了问题,安装完成之后找不到命令,所以选择源码安装。下载源码压缩包ruby-2.7.1.tar.gz然后

1
2
3
4
5
$ tar -xvzf ruby-2.7.1.tar.gz
$ cd ruby-2.7.1
$ ./configure
$ make
$ sudo make install		

安装后输入ruby -v检查版本为ruby 2.7.1。安装结束。

RubyGems的安装

官方地址

使用源码包安装。下载,然后解压,进入目录,运行ruby setup.rb,需要root权限。

NodeJS的安装

1
2
sudo apt-get install nodejs
sudo apt-get install npm

检查版本:

1
2
3
4
➜  ubuntu nodejs -v
v8.10.0
➜  ubuntu npm -v
3.5.2

版本太老了,需要更新:

1
2
3
4
5
6
7
8
//更新npm为指定版本
$ npm i -g npm@6.14.4  
//安装node版本管理工具n
$ npm i -g n
//安装node最新版本
$ n latest
//查看安装的版本
$ n
1
2
3
4
➜  ubuntu nodejs -v
v14.4.0
➜  ubuntu npm -v
6.14.5

Python2.7的安装

检测python版本满足要求即可。

1
2
$ python -V
Python 2.7.15+

用 RubyGems 安装 Jekyll

安装 Jekyll 的最好方式就是使用RubyGems. 打开终端输入:

1
$ gem install jekyll -V

会出现安装速度很慢的情况,使用清华的源

使用以下命令替换 gems 默认源

1
2
3
4
5
# 添加 TUNA 源并移除默认源
$ gem sources --add https://mirrors.tuna.tsinghua.edu.cn/rubygems/ --remove https://rubygems.org/
# 列出已有源
$ gem sources -l
# 应该只有 TUNA 一个

在使用Jekyll开发之前,检查一下Jekyll是不是最新版本,执行下面命令之一:

1
2
$ jekyll --version
$ gem list jekyll

官方推荐安装bundler。

1
$ gem install bundler

更换默认源:使用以下命令替换 bundler 默认源

1
$ bundle config mirror.https://rubygems.org https://mirrors.tuna.tsinghua.edu.cn/rubygems

配置vscode与远程腾讯云

参考文章:https://zhuanlan.zhihu.com/p/64849549

项目编译与预览

项目编译使用安装的bundle进行,命令为

1
$ bundle exec jekyll serve

预览编译没有问题访问网页即可查看。而且网页支持动态编译,修改内容会进行regenerating,可以实时预览。

问题解决

如果出现Address already in use - bind(2)的问题,一直本地的服务启动不起来,是端口被占用了,应该是我之前启动的jekyll 服务没有关闭,导致新服务启动不了。最终的解决方案如下。

1 查看占用端口的进程

1
sudo lsof -wni tcp:4000

结果如下:

1
2
COMMAND   PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
bundle  9390 root    9u  IPv4 94354902      0t0  TCP 127.0.0.1:4000 (LISTEN)

2,杀掉占用端口的进程(sudo kill -9 PID)

1
sudo kill -9 9390

3,再次启动 jekyll 服务正常。