提早声明:Jekyll并不简单,必需要正确的看待它。把它和PHP,JSP和Django等放在一块儿讨论会减小不少失落感。它的学习曲线几乎至关于Wordpress,工做流程和结构也几乎同样。
Jekyll与Wordpress最大不一样的就是,没有数据库。可是体验上来讲也算不上什么大差异。
完全摒弃数据库,这算是一种Jekyll式的新思路。
由于你须要的只是按期更新一些Markdown格式的文章,而后让它显示成网页,并放在一块儿成为网站而已。不必大动干戈的设计数据库什么的。node
简单的说,Jekyll是一个基于Ruby语言的静态博客网站制做工具,它能够把Markdown转换成HTML网页。git
不过对于一个HTML网页来讲,它得有标题、样式、日期什么的,甚至一些根据文章的不一样而动态改变的内容等。这些就不只是把Markdown转换成HTML而已了。不少内容须要你在Markdown文件里面就写明指定。github
另注:Jekyll虽然和Github Pages搭配免费,但实际上是彻底独立的产品。能够在任何地方使用,像Wordpress同样。
安装Jekyll须要用Ruby的包管理器gem下载,像Python的pip同样:数据库
$ gem install jekyll
可是若是本机的gem版本不够新,是装不了jekyll的,因此就依照官网从ruby从头开始安装:浏览器
sudo apt-get install ruby ruby-dev build-essential echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc echo 'export GEM_HOME=$HOME/gems' >> ~/.bashrc echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.bashrc source ~/.bashrc gem install jekyll bundler
用Jekyll建立一个网站(自动生成名为test_blog的文件夹和一个完整的Demo网站):ruby
$ jekyll new test_blog
目录里面内容以下:
这里面是完整的一个网站,能够直接运行浏览。
而后你就能够根据本身的主页、其它网页什么的,在这个基础上修改了。bash
Bundler: ruby: No such file or directory
个人Mac机上历来没作过任何Ruby项目,也不懂gem使用方法。所有原始配置后,使用gem install jekyll
没问题,可是在jekyll new ..
时,就发送这个错误:服务器
Bundler: ruby: No such file or directory -- /usr/local/lib/ruby/gems/2.5.0/gems/bundler-1.16.1/exe/bundle (LoadError)
发生错误后,项目文件夹是生成了,可是不完整,也不能执行。markdown
问题在于本机的gem和bundler都不是很新,须要更新一下。
参考:https://github.com/rubygems/r...ide
更新以下:
# Install latest version of Rubygems gem update --system # Install latest version of bundler system-wide gem install bundler
更新时间会很长,等所有安装好后,就能够正常的使用jekyll了。
渲染网站
$ cd test_blog $ jekyll serve
或实时渲染网站:
$ jekyll server --watch
若是加上了--watch
参数,jekyll就会实时监控你的文件,只要那个文件有变更了,好比新增了markdown文件,或修改了layout模板,它都会即时渲染生成网站,总保持更新。
运行渲染的命令后,jekyll就会把你的Markdown根据指定的模板渲染为静态网站,
同时还会把网站映射到本机的一个端口,你能够打开命令行里提示的url连接察看网站效果。
若是jekyll部署在了公网上的服务器上,那么很轻松就能够公开给全部人访问了。
语法以下:
$ jekyll serve --detach --host 0.0.0.0 # 或 $ jekyll serve --force_polling -H 0.0.0.0 -P 4000
而后就会显示以下:
也就是说公网运行jekyll的话,程序就转到后台了,须要退出的话须要手动关闭进程。
而后根据网站设计时候指定的端口,相应的在服务器防火墙上开放这个端口,好比4000。
而后用http://服务器IP:4000
这样的就能访问了。
若是要不带端口号访问,就在_config.yml
中把端口号设计为80。(可是常常有冲突,须要解决)
使用Jekyll,主要难就在一开始,须要设计网页样式,设置全站的规则等等。
可是一旦这些基本设置都完成了,之后更新就只须要专一的写Markdown文件便可。
Jekyll new
命令新建一个网站结构后,文件夹里面有不少文件。这些文件结构都是什么做用,是咱们必需要学习的。
Jekyll文件夹结构
_config.yml
文件:这是你第一个须要修改的东西。全网站的通用设置都保存在这里,好比网站主题,名称,介绍,域名,Github用户名等。.yml
是像.ini
同样的配置文件类型。_site
文件夹:这个存放你的完整静态网站的文件夹,可是这是不须要你去碰的文件夹,它是Jekyll根据你的设置和模板之类的内容,自动生成的静态网站。_layout
文件夹:是存放各类网页模板的地方,主页什么样子,列表页什么样子,博客内容页面什么样子,这些分别的页面模板都是放在这里的。_includes
文件夹:存放全部重复使用的、比较固定的页面模块。好比每一个网页都同样的页头、页脚,导航栏,侧边栏等等。这里面的HTML文件,都不是完整的HTML网页,都只是模块,可能只是一个<div>
标签。_posts
文件夹:存放全部的Markdown格式文件。你全部的Markdown博客内容,都放在这里。文件命名也是有规定的,好比必须是data-filename.markdown
这种。注意:
_site
文件夹须要你在.gitignore
中加入屏蔽,由于这个动态生成的东西,彻底不须要在git里面进行追踪。并且放在Github Pages上的话,Github引擎也不会在你的目录里面生成这个文件夹,而是在后台直接给你生成页面。之因此会有它,主要是本地设计时候用。Front-Matter 文件头信息
文件头信息在这里被叫作front-matter
,或yml-header
,它是写在每一个Markdown文件头部的设置信息。主要是指明这篇文章标题、日期、使用的模板、样式、标签、分类等,这样Jekyll就能够根据这些设置把markdown文件转换成你想要的最终HTML网页了。
头信息的经常使用参数以下:
layout
: 指明模板名称,即指定使用_layout
文件夹中哪一个HTML网页作为模板。title
: 这篇文章的标题。data
: 这篇文章的日期。categories
: 这篇文章的分类。Jekyll的最终目标和整个存在乎义都是生成静态网站。
可是,
默认状况下,所谓生成出来的静态HTML页面,你也不能直接打开看到效果!必需要运行jekyll serve
才行,或者把它放到Github的Repo里。
那还叫什么静态网站?!
真正的静态网站不是生成HTML就好了,而是让你双击打开HTML就能在浏览器看到效果。
避开这个有点矛盾的逻辑不说了,咱们有比较方便的外部工具来作到这点。
那就是最经常使用的wget
下载命令。wget
能够把网页或整个网站下载下来,而且能自动转换各类文件里的路径。
命令以下:
$ wget -r --convert-links <URL>
因此当你运行Jekyll serve
成功编译生成_site
目录后,就能够用wget下载本地的这个网站了。
目前体验极其糟糕: