当前位置: 首页 > Linux

Wordpress博客迁移到Jekyll的过程总结

时间:2023-04-07 00:00:32 Linux

想来想去,还是想试试把博客转成Jekyll。一方面是为了git管理。另一方面,真心觉得请求太多,速度太慢,可转化性太差。迁移后,默认主题为fast,显示时间小于500ms~安装Jekyll本文在CentOS7环境下运行。环境需要RubyRubyGemsNodeJSPython2.7(whidy偷懒,好像是CentOS7自带的?什么时候安装的?不懂的自己搜索==。)安装Ruby2。5.0和RubyGems的最新稳定版本是2.5.0。CentOS自带源的版本比较老。我们需要第三方源rbenv来安装最新的稳定版。安装方法如下:安装rbenv和Ruby依赖的组件#yuminstall-ygit-corezlibzlib-develgcc-c++patchreadlinereadline-devellibyaml-devellibffi-developenssl-develmakebzip2autoconfautomakelibtoolbisoncurlsqlite-develinstallrbenvandrub-build(一定要在非root用户的home下操作)#cd~#gitclonegit://github.com/sstephenson/rbenv.git.rbenv#echo'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bash_profile#echo'eval"$(rbenvinit-)"'>>~/.bash_profile#gitclonegit://github.com/sstephenson/ruby-build.git~/.rbenv/plugins/ruby-build#echo'exportPATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"'>>~/.bash_profile#source~/.bash_profile查看当前可安装的Ruby版本#rbenvinstall-l安装最新稳定版2.5.0#rbenvinstall-v2.5.0#rbenvrehashrbenvrehash的作用是在有多个Ruby版本时检查是否安装成功。#rbenvversions设置为全局(不然不能使用ruby命令?),检查版本是否正确。#rbenvglobal2.5.0#ruby??-v是安装bundle的可选/必选,因为参考的安装资料中有Rails,所以不确定是否一定要安装,如果同时需要Rails可以查看最下面的参考文档。#geminstallbundler其实就是整个安装过程中HasRubyGemsbeeninstalled?参见:InstallRubyonRailswithRbenvonCentOS7其他:InstallingRuby-OfficialDocuments安装NodeJS比较简单,直接安装即可#yuminstallnodejsInstallJekyllwithRubyGems$geminstalljekyll创建Jekyll站点接下来创建博客站点在当前用户目录下启动服务#cd~#jekyllnewblog#cdblog#jekyllserve--host0.0.0.0此时打开浏览器访问[serverip]:4000即可。(例如http://118.0.156.000:4000/)示例页面:http://daily.whidy.net/参考:http://jekyllcn.com/docs/inst...wordpress站点迁移到Jekyll还有是官方的全程迁移文档,支持多种类型的博客迁移,所以看起来比较简单。官方文档导入您的旧网站或博客以与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,"扩展"=>"html","status"=>["publish"]})'确保配置无误后回车,会报错!追溯(最近一次通话最后一次):1:来自/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':cannotloadsuchfile--ubygems(LoadError)是一个痛苦的屁股,查了资料说可能是rubygems的bug,看[Ruby[SOLVED]:Afterruby??updateto2.5.0,require'bundler/setup'raiseexception](http://www.cloudypoint.com/Tu...然后阅读,好像是真的,立马升级$gemupdate--system我说gem安装很坑爹,没有任何提示,也不知道命令是否正在处理执行,但是已经在执行了,所以根据网络情况稍等。然后嗖嗖嗖嗖嗖嗖嗖嗖出长一段,直到出现RubyGemssystemsoftwareupdated,更新完成,我们再试试migration命令...又报错了!!!traceback(mostrecentcalllast):2:from-e:1:在`

'1:来自/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':cannotloadsuchfile--jekyll-import(LoadError),我上次不是安装了,还是记错了。嗯,重新安装$geminstalljekyll-import再次执行,反复报错...于是反复执行各种依赖包...总结如下$geminstallsequel$geminstallunidecode$geminstallmysql2这里说说需要mysql2,然后执行上面的命令报错,然后说需要mysql-devel,心服口服--,那就只能一步步试了。$yuminstallmysql-devel然后试试$geminstallmysql2然后运行迁移命令,继续报错...信息如下1:来自/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/li111)(Sequel::DatabaseConnectionError)发现刚才迁移命令中需要填写socket。我应该填写什么?查了半天,有各种各样的,比如/var/run/mysqld/mysqld。/mysql.sock之类的,可能都是mysql,我是MariaDB。为了从根本问题入手,让我们看一下我的MariaDB配置文件中写了什么。这里需要说明的是,我的Wordpress数据库和要迁移的Jekyll都在同一台服务器上,所以这里的host填localhost$sudovi/etc/my.cnffindssocket=/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"]})'慢慢地,从前十几个错误减少到最后一个Couldnotrequire'htmlentities',所以:clean_entities选项现在被禁用了。貌似比较成功嗯。。。安装一个试试看$geminstallhtmlentities安装好后,再次执行迁移命令,心都碎了。。。复制粘贴回车。。。呃,没有.是的。任何。任何。回复。结尾。结尾。成功了吗?在安装Jekyll的目录下编译...[whidy@VM_0_3_centosblog]$jekyllb报错...配置文件:/home/whidy/blog/_config.yml来源:/home/whidy/blogDestination:/home/whidy/blog/_site增量构建:禁用。Enablewith--incrementalGenerating......字数这里省略了哈哈哈。..生成警告:_posts/2012-11-27-1132.html中请求的布局“nav_menu_item”不存在。Liquid异常:Liquid语法错误(第40行):变量“{{$r['catid']}}”未使用正则表达式正确终止:/\}\}/in/home/whidy/blog/_posts/2012-11-29-phpcms-page-solution.htmljekyll3.7.3|错误:Liquid语法错误(第40行):变量'{{$r['catid']}}'未正确终止机智hregexp:/\}\}/查了一下,大概是指Liquid的正则规则。面对{{,会挂掉。将其更改为{{,请参阅:LiquidException:Variable'{{{0}'wasnotproperlyterminatedwithregexp:/}}/in#466,然后我去了_posts目录并手动更改了这篇文章...然后jekyllb.[whidy@VM_0_3_centosblog]$jekyllb配置文件:/home/whidy/blog/_config.yml来源:/home/whidy/blog目的地:/home/whidy/blog/_site增量构建:禁用。启用--incremental生成......数十种此类信息开始...生成警告:_posts/2012-11-27-1107.html中请求的布局“nav_menu_item”不存在。...数十条此类消息结束...构建警告:_posts/2018-01-16-%e8%af%84%e8%ae%ba.html中请求的布局“bnfw_notification”不存在。生成警告:_posts/2018-02-26-3119.html中请求的布局“nav_menu_item”不存在。在9.708秒内完成。自动再生:禁用。使用--watch启用。所以完成了吗?刷新我刚刚配置的Nginx二级域名页面,方法和原文大致相同,我靠,我昨天不是修复了403错误吗?怎么又来了,不过别怕,我已经知道是权限问题下面我们来分析一下问题出在哪里。(然后修改一会权限就可以了--,),我觉得估计有效的命令是这个#chmod755-R/home/whidy/blog/然后刷新页面,就可以了.当然我是裸奔的Jekyll,没有主题,看起来很简单。但仍然存在一些问题。比如之前加密的单页放在导航上。文章列表里有一些带编号的文章,也有评论,这些应该是不存在的--,所以迁移后的优化也是必不可少的,不过至此wordpress迁移到jekyll的工作已经完成了。迁移后的思考迁移完成后,还有一些问题需要解决。大致设想如下修正现有不正确内容(资源文件管理、文章中图片链接等)主题及相关功能开发评论系统植入,考虑使用disqusseo,url规则匹配旧wordpress(考虑Nginx导向或其他方案)其他暂时还没有想到...如果你也想将wordpress站点的内容迁移到Jekyll,而你在阅读本文时发现错误,或者在尝试本文示例的过程中出现了一些无法解决的问题,请留言~