想来想去仍是想试试把个人博客转成Jekyll, 一方面为了git管理, 另外一方面实在是感受请求过多速度太慢, 可改造性太差. 通过迁移后, 默认主题, 速度杠杠的, 显示时间不到
500ms
哦~
本文在CentOS7环境下操做.
目前最新稳定版本是2.5.0
, CentOS自带源的版本比较老, 咱们须要第三方源rbenv
来安装最新稳定版, 安装方法以下:
安装rbenv
和Ruby
依赖的组件php
# yum install -y git-core zlib zlib-devel gcc-c++ patch readline readline-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison curl sqlite-devel
安装rbenv
和rub-build
(务必在非root用户的home下面操做)html
# cd ~ # git clone git://github.com/sstephenson/rbenv.git .rbenv # echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile # echo 'eval "$(rbenv init -)"' >> ~/.bash_profile # git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build # echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bash_profile # source ~/.bash_profile
查看当前可安装的Ruby版本node
# rbenv install -l
安装目前最新稳定版本2.5.0
python
# rbenv install -v 2.5.0 # rbenv rehash
rbenv rehash
的做用是有多个Ruby版本的时候要执行的mysql
检查安装是否成功nginx
# rbenv versions
设置为全局(不然ruby
命令没法使用?)并检测版本是否正确c++
# rbenv global 2.5.0 # ruby -v
可选/必选安装bundle
, 由于参考的安装资料包含Rails
, 因此这个是否必须安装尚不肯定, 若是同时须要Rails
, 能够查看底部的参阅文档.git
# gem install bundler
实际上整个安装过程已经把
RubyGems
安装好了?
参阅:github
其它:sql
NodeJS
这个比较简单, 直接安装就行了
# yum install nodejs
$ gem install jekyll
接下来在当前用户的目录下建立一个博客站点并开启服务
# cd ~ # jekyll new blog # cd blog # jekyll serve --host 0.0.0.0
此时打开浏览器访问[server ip]:4000
便可.(例如http://118.0.156.000:4000/
)
示例页面: http://daily.whidy.net/
参阅: http://jekyllcn.com/docs/inst...
官方有迁移文档, 支持不少种类型的博客迁移, 因此看起来也就比较简单了, 官方文档 Import your old & busted site or blog for use with Jekyll., 咱们来尝试Wordpress迁移.
先按照他的示例, 按照本身的网站进行修改, 大体以下
$ ruby -rubygems -e 'require "jekyll-import"; JekyllImport::Importers::WordPress.run({ "dbname" => "yourWordpressDatabaseName", "user" => "root", "password" => "IcannotTellYou", "host" => "localhost", "port" => "3306", "socket" => "", "table_prefix" => "wp_", "site_prefix" => "", "clean_entities" => true, "comments" => true, "categories" => true, "tags" => true, "more_excerpt" => true, "more_anchor" => true, "extension" => "html", "status" => ["publish"] })'
保证配置无误后, 回车, 执行报错!
Traceback (most recent call last): 1: from /home/whidy/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require' /home/whidy/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require': cannot load such file -- ubygems (LoadError)
蛋疼, 查了下资料说多是rubygems的bug, 参阅[Ruby [SOLVED]: After ruby update to 2.5.0, require 'bundler/setup' raise exception](http://www.cloudypoint.com/Tu... 而后看了下, 貌似真的是的, 立马升级
$ gem update --system
我说gem安装很是坑爹, 毫无提示, 都不知道是否是正在处理执行的命令, 其实已经在执行了, 根据网络状况多等待一下. 接着唰唰唰的出来一大段, 一直到出现RubyGems system software updated
, 就更新完了, 咱们再尝试迁移命令... 又报错!!!
Traceback (most recent call last): 2: from -e:1:in `<main>' 1: from /home/whidy/.rbenv/versions/2.5.0/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require' /home/whidy/.rbenv/versions/2.5.0/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require': cannot load such file -- jekyll-import (LoadError)
蛋疼, 上次不是装了吗, 仍是我记错了. 好吧再装一遍
$ gem install jekyll-import
而后再执行, 反复报错... 因而反复执行各类依赖包... 总结以下
$ gem install sequel $ gem install unidecode $ gem install mysql2
这里说要mysql2
, 而后执行上面的命令报错, 又说要mysql-devel
, 服了- -, 那只能一步步试试看了.
$ yum install mysql-devel
接着试
$ gem install mysql2
再跑迁移命令, 继续报错... 信息以下
1: from /home/whidy/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gem /home/whidy/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/mysql2-0.5.0/li 111) (Sequel::DatabaseConnectionError)
查到说是要填写刚才迁移命令里面的socket, 这个填啥呢, 我查了半天有各类各样的, 好比/var/run/mysqld/mysqld.sock
, /tmp/mysql.sock
等等, 多是他们都是mysql
, 而我是MariaDB, 为了从根本问题上下手, 仍是看看个人MariaDB的配置文件里面怎么写的吧.
这里须要说明的是, 个人Wordpress数据库和要迁移到的Jekyll都在同一服务器上, 所以host
这里填写的是localhost
$ sudo vi /etc/my.cnf
查到socket=/var/lib/mysql/mysql.sock
, 那么修改迁移配置以下:
$ ruby -rubygems -e 'require "jekyll-import"; JekyllImport::Importers::WordPress.run({ "dbname" => "yourWordpressDatabaseName", "user" => "root", "password" => "IcannotTellYou", "host" => "localhost", "port" => "3306", "socket" => "/var/lib/mysql/mysql.sock", "table_prefix" => "wp_", "site_prefix" => "", "clean_entities" => true, "comments" => true, "categories" => true, "tags" => true, "more_excerpt" => true, "more_anchor" => true, "extension" => "html", "status" => ["publish"] })'
慢慢的, 从前面十几条错误, 减小到了最后一条
Could not require 'htmlentities', so the :clean_entities option is now disabled.
看来仍是比较成功的... 那就装一个试试看吧
$ gem install htmlentities
安装后, 再次执行迁移命令, 搞得心都要碎了... 复制粘贴回车...
额, 没. 有. 任. 何. 反. 应. 的. 结. 束. 了... 难道成功了?
在安装Jekyll的目录下编译一下看看...
[whidy@VM_0_3_centos blog]$ jekyll b
又报错...
Configuration file: /home/whidy/blog/_config.yml Source: /home/whidy/blog Destination: /home/whidy/blog/_site Incremental build: disabled. Enable with --incremental Generating... ...此处省略字数 哈哈哈... Build Warning: Layout 'nav_menu_item' requested in _posts/2012-11-27-1132.html does not exist. Liquid Exception: Liquid syntax error (line 40): Variable '{{$r['catid']}}' was not properly terminated with regexp: /\}\}/ in /home/whidy/blog/_posts/2012-11-29-phpcms-page-solution.html jekyll 3.7.3 | Error: Liquid syntax error (line 40): Variable '{{$r['catid']}}' was not properly terminated with regexp: /\}\}/
查了下大概是说Liquid
的正则规则, 面对{{
这种玩意就挂了. 把它改为{ {
, 参阅: Liquid Exception: Variable '{{ {0}' was not properly terminated with regexp: /}}/ in #466, 而后我就去_posts
目录把这篇文章手动改了... 再jekyll b
一下.
[whidy@VM_0_3_centos blog]$ jekyll b Configuration file: /home/whidy/blog/_config.yml Source: /home/whidy/blog Destination: /home/whidy/blog/_site Incremental build: disabled. Enable with --incremental Generating... ... 几十条这样的信息开始... Build Warning: Layout 'nav_menu_item' requested in _posts/2012-11-27-1107.html does not exist. ... 几十条这样的信息结束... Build Warning: Layout 'bnfw_notification' requested in _posts/2018-01-16-%e8%af%84%e8%ae%ba.html does not exist. Build Warning: Layout 'nav_menu_item' requested in _posts/2018-02-26-3119.html does not exist. done in 9.708 seconds. Auto-regeneration: disabled. Use --watch to enable.
这样就算完成了? 刷新一下我才配置的Nginx二级域名页面, 方法大体如原文, 我靠, 昨天不是搞好了403
错误吗? 咋又来, 不过不怕, 已经知道是权限问题了, 咱们在分析下哪里出问题. (而后一阵胡乱修改权限后就行了- -,), 我认为估计有效的命令是这一条
# chmod 755 -R /home/whidy/blog/
而后刷新页面, 就行了. 固然我这是裸奔的Jekyll, 没有主题, 因此看起来很朴素. 不过仍是有些问题的.
好比, 以前加密的单页面被放在导航上了. 文章列表中有一些带数字的文章, 还有评论, 这些本不应存在- -, 因此迁移后的优化也是少不了的, 不过至此关于Wordpress迁移到Jekyll的工做已经完成.
迁移完成后, 也有一些问题是须要解决的, 大体想到的以下
若是你也想把wordpress站点内容迁移至Jekyll, 阅读该文中发现错误, 或者经过该文示例过程当中的尝试发生了一些没法解决的问题, 欢迎留言~