之前安装Jekyll是在Windows上,但是这样每次启动都很麻烦,并且软件装多了之后不好管理,后面就迁移到了CentOS7上,但是用了不到两个月就因为版本冲突导致不能使用了,找了好几次原因,问题都没有解决,所以近期也没更新博客。核心问题还是对于原理不了解,所以这次就准备重新安装部署,并且换一个主题,顺便通过部署和查阅文档的过程去学习ruby的一些原理。
首先Ruby是一种面向对象的脚本语言,与Python与Perl类似,而Gem则是使用Ruby开发的包,由于Gem之间可能存在相互依赖的关系,这种情况下调用多个Gem,可能会引发版本冲突,这个时候我们使用Bundle来进行Gem的版本管理,对依赖之间进行约束。Bundle也是一个Gem,会在应用根目录下创建一个Gemfile文件,里面就声明了一些依赖。
我的理解是这样的,如果Ruby等于Java的话,Gem就是开发好的Jar包,可以随调随用,而Bundle就等于Marven,针对于不通的项目,声明了jar包的依赖。
而Jekyll就是一个Gem,所以在准备环境时,需要先安装jekyll和Bundle。
gem install jekyll bundler
下面的指令用于创建一个可启动的空站点
Jekyll new xxx
bundle install
bundle exec jekyll serve
jekyll new可以在指定路径创建一个空的博客项目的框架,包含了Gemfile等基本文件,而bundle install会读取当前路径下的Gemfile,从而安装指定的Gem依赖。
有的时候需要添加gem,使用bundle update可以自动下载更新Gemfile里面的依赖。
最后使用bundle exec jekyll serve可以运行这个博客项目,需要注意的是,直接使用jekyll serve也是可行的,但是可能会出现版本冲突,因为直接运行jekyll不会使用bundle来管理依赖。
之前我使用的主题是3-jekyll(https://github.com/P233/3-Jekyll) ),但是由于作者好久没更新了,我也没有折腾,准备直接换一个。选定的主题是startbootstrap-clean-blog-jekyll(https://github.com/BlackrockDigital/startbootstrap-clean-blog-jekyll)。
按照startbootstrap-clean-blog-jekyll的建议,启动jekyll后,还需要做的事情就是修改配置文件_config.yml,里面涉及到初始化和关联连接的内容。
由于Jekyll生成的都是静态文件,因此一些动态的内容以及附加功能需要由插件来模拟完成。
分页功能,使用了自带的jekyll-paginate插件,在_config.yml里面配置了全局变量后paginate:5后,插件在生成site的时候,会将posts下的markdown或html分成多个pageX路径,并在该路径下产生一个index.html,里面写死了每页有5篇文章,从而模拟分页效果。
sitemap是一个在网站指定路径下的文件,最简单的形式就是XML,用于通知爬虫软件或搜索引擎,该网站下有哪些可以抓取的网页,xml Sitemaps是一个标准的协议,只要遵循该协议,搜索引擎就会快速的建立该网站的索引。jekyll-sitemap插件的作用就是在生成_site文件夹的时候,在根路径下生成一个sitemap.xml
博客是内容生成源,有的用户习惯于使用RSS来订阅内容,同jekyll-sitemap一样,其他的
由于迁移之后还需要花时间改,先挖个坑吧,记录一下需要优化的地方: About页面:需要添加一个介绍 Contact:需要添加一个联系方式 字体:博客字体当前使用的是’Open Sans’, ‘Helvetica Neue’, Helvetica, Arial, sans-serif族,后续优化一下
虚拟机部署好之后使用jekyll serve启动的服务,在主机无法访问,其原因是jekyll服务绑定访问源地址为127.0.0.1,局域网默认打不开,因此需要设置–host=0.0.0.0,才能取消该限制。如果还不行的话,查看一下防火墙。
bundle exec jekyll s w --trace --host=0.0.0.0 --draft --detach --source=/opt/share/wuziqingwzq.github.io