2018-12-03 · Blog

Jekyll 博客系统搭建

Jekyll 究竟是什么?

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

jekyll-logo

系统环境

搭建之前看下系统环境

cat /etc/centos-release

输出:

CentOS Linux release 7.4.1708 (Core)

安装 ruby

使用 rvm 管理 ruby 的版本, rvm 的安装请参考 官网

ruby-logo

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB curl -sSL https://get.rvm.io | bash -s stable

输出如下安装信息

Creating group 'rvm'

Installing RVM to /usr/local/rvm/
Installation of RVM in /usr/local/rvm/ is almost complete:

  * First you need to add all users that will be using rvm to 'rvm' group,
    and logout - login again, anyone using rvm will be operating with `umask u=rwx,g=rwx,o=rx`.

  * To start using RVM you need to run `source /etc/profile.d/rvm.sh`
    in all your open shell windows, in rare cases you need to reopen all shell windows.

然后根据提示信息操作

source /etc/profile.d/rvm.sh

安装 ruby 并验证

rvm install 2.1

ruby -v

gem -v

安装 jekyll

gem install jekyll

报错如下

...
Fetching: ruby_dep-1.5.0.gem (100%)
ERROR:  Error installing jekyll:
        ruby_dep requires Ruby version >= 2.2.5, ~> 2.2.

根据报错提示需要升级 ruby 版本

rvm install 2.3

继续 gem install jekyll 安装 jekyll 。

jekyll 的基本使用

创建一个名叫 jekyll-blog 的博客

jekyll new jekyll-blog 

cd jekyll-blog 

jekyll serve --host=0.0.0.0  # 运行博客

更多的使用方式,参考 官方文档

jekyll build 
# => 当前文件夹中的内容将会生成到 ./site 文件夹中。

jekyll build --destination <destination> 
# => 当前文件夹中的内容将会生成到目标文件夹<destination>中。

jekyll build --source <source> --destination <destination>
# => 指定源文件夹<source>中的内容将会生成到目标文件夹<destination>中。

jekyll build --watch
# => 当前文件夹中的内容将会生成到 ./site 文件夹中,
#    查看改变,并且自动再生成。

jekyll serve
# => 一个开发服务器将会运行在 http://localhost:4000/

jekyll serve --detach
# => 功能和`jekyll serve`命令相同,但是会脱离终端在后台运行。
#    如果你想关闭服务器,可以使用`kill -9 1234`命令,"1234" 是进程号(PID)。
#    如果你找不到进程号,那么就用`ps aux | grep jekyll`命令来查看,然后关闭服务器。[更多](http://unixhelp.ed.ac.uk/shell/jobz5.html).

jekyll serve --watch
# => 和`jekyll serve`相同,但是会查看变更并且自动再生成。

jekyll build 过程中,遇到的异常:

/usr/local/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- bundler (LoadError)
        from /usr/local/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/local/rvm/gems/ruby-2.3.4/gems/jekyll-3.8.1/lib/jekyll/plugin_manager.rb:48:in `require_from_bundler'
        from /usr/local/rvm/gems/ruby-2.3.4/gems/jekyll-3.8.1/exe/jekyll:11:in `<top (required)>'
        from /usr/local/rvm/gems/ruby-2.3.4/bin/jekyll:23:in `load'
        from /usr/local/rvm/gems/ruby-2.3.4/bin/jekyll:23:in `<main>'
        from /usr/local/rvm/gems/ruby-2.3.4/bin/ruby_executable_hooks:15:in `eval'
        from /usr/local/rvm/gems/ruby-2.3.4/bin/ruby_executable_hooks:15:in `<main>'

由于缺少 bundle ,解决当然是安装了:

gem install bundle

继续报错

/usr/local/rvm/gems/ruby-2.3.4/gems/bundler-1.16.2/lib/bundler/resolver.rb:289:in `block in verify_gemfile_dependencies_are_found!': Could not find gem 'minima (~> 2.0)' in any of the gem sources listed in your Gemfile. (Bundler::GemNotFound)
        from /usr/local/rvm/gems/ruby-2.3.4/gems/bundler-1.16.2/lib/bundler/resolver.rb:257:in `each'

继续安装依赖

gem install minima