在本地运行jekyll网站

作者: | 更新日期:

使用github来当作自己的记录集后,每次有改动时都要提交了才能看到结果,于是尝试在本地搭建一个jekyll环境.

本文首发于公众号:天空的代码世界,微信号:tiankonguse

前言

最近一年多, 一直使用github 来当作自己的 记录集,俗称博客.
使用github当作记录集有一个问题就是:网站有任何改动, 只有提交了才能看到效果.
如果发现有问题了, 需要修改后再次提交.
这也是为什么我的提交次数很高的缘故. 1.

实际上刚开始搭建 自己的 记录集时, 我在我的电脑上搭建了一个本地的jekyll环境, 然是后来换电脑了, 就再也没搭建了.
现在重新搭建一下, 顺便记录一下.

环境准备

由于我使用的是 ubuntu 系统, 所以安装很简单, 一条命令即可.

sudo apt-get install jekyll

当然, 你也可以去下载源码编译安装,这里就不做介绍了.

网站准备

之前我有三篇很水的记录, 大家可以简单的看一下.

运行网站

网站搭建好了, 环境准备好了, 我们就需要生成页面了.

关于执行命令时遇到的一些问题, 可以参考下面的常见问题.

生成网页命令:

tiankonguse:tiankonguse.github.io $ sudo jekyll serve --watch --config _config.yml,_config_dev.yml
Configuration file: _config.yml
Configuration file: _config_dev.yml
            Source: .
       Destination: ./_site
      Generating... 
                    done.
 Auto-regeneration: enabled for '.'
Configuration file: _config.yml
Configuration file: _config_dev.yml
    Server address: http://127.0.0.1:80//
  Server running... press ctrl-c to stop.

常见问题

本地与正式环境的配置不一样

比如我的配置中, 有个 url 字段, 在正式环境中配置的是 github.tiankonguse.com/ , 但是在本地, 应该配置成 http://127.0.0.1 .
有时候本地测试完了, 就直接提交github了, 结果正式环境悲剧了, 很多文件404了.

现在找到一个解决方案: 测试版本的配置文件

sudo jekyll serve --watch --config _config.yml,_config_dev.yml

文档如下

tiankonguse:tiankonguse.github.io $ jekyll serve --help
jekyll serve -- Serve your site locally

Usage:

  jekyll serve [options]

Options:
            --config CONFIG_FILE[,CONFIG_FILE2,...]  Custom configuration file
            --future       Publishes posts with a future date
            --limit_posts MAX_POSTS  Limits the number of posts to parse and publish
        -w, --[no-]watch   Watch for changes and rebuild
            --force_polling  Force watch to use polling
            --lsi          Use LSI for improved related posts
        -D, --drafts       Render posts in the _drafts folder
            --unpublished  Render posts that were marked as unpublished
        -q, --quiet        Silence output.
        -V, --verbose      Print verbose output.
        -B, --detach       Run the server in the background (detach)
        -P, --port [PORT]  Port to listen on
        -H, --host [HOST]  Host to bind to
        -b, --baseurl [URL]  Base URL
            --skip-initial-build  Skips the initial site build which occurs before the server is started.
        -h, --help         Show this message
        -v, --version      Print the name and version
        -t, --trace        Show the full backtrace when an error occurs

测试版本的配置文件放在后面, 后面的值覆盖前面的值.

Layout nil 不存在

有时会遇到这样一个警告:

Build Warning: Layout 'nil' requested in atom.xml does not exist.

原因是我们使用旧版的语法, 新版本使用 null 代替了 2.
所以我们把 nil 换成 null 即可.

Auto-regeneration 不再支持

这个也是新版本不支持的缘故.注释auto配置即可#auto: true

Deprecation: Auto-regeneration can no longer be set from your configuration file(s). Use the --[no-]watch/-w command-line option instead.

pygments 被命名为 highlighter

这个还是新版本的缘故.

注释掉 pygments: true, 增加 highlighter: pygments即可.

Deprecation: The 'pygments' configuration option has been renamed to 'highlighter'. Please update your config file accordingly. The allowed values are 'rouge', 'pygments' or null.

Name or service not known

这个是由于我们配置的域名或者host错了,改成host: 127.0.0.1.

jekyll 2.5.3 | Error:  getaddrinfo: Name or service not known

Permission denied

这是由于我们缺少权限, 使用sudo即可.

jekyll 2.5.3 | Error:  Permission denied - bind(2)

本文首发于公众号:天空的代码世界,微信号:tiankonguse
如果你想留言,可以在微信里面关注公众号进行留言。

关注公众号,接收最新消息

tiankonguse +
穿越