摘要:想來想去還是想試試把我的博客轉成一方面為了管理另一方面實在是感覺請求過多速度太慢可改造性太差經過遷移后默認主題速度杠杠的顯示時間不到哦安裝本文在環境下操作環境需要比較懶貌似自帶還是啥時候裝了不會的自己搜一下安裝和目前最新穩定版本是自帶源的版
想來想去還是想試試把我的博客轉成Jekyll, 一方面為了git管理, 另一方面實在是感覺請求過多速度太慢, 可改造性太差. 經過遷移后, 默認主題, 速度杠杠的, 顯示時間不到500ms哦~安裝Jekyll
本文在CentOS7環境下操作.環境需要
Ruby
RubyGems
NodeJS
Python 2.7(Whidy比較懶, 貌似CentOS7自帶? 還是啥時候裝了, 不會的自己搜一下= =.)
安裝Ruby2.5.0和RubyGems目前最新穩定版本是2.5.0, CentOS自帶源的版本比較老, 我們需要第三方源rbenv來安裝最新穩定版, 安裝方法如下:
安裝rbenv和Ruby依賴的組件
# 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下面操作)
# 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版本
# rbenv install -l
安裝目前最新穩定版本2.5.0
# rbenv install -v 2.5.0 # rbenv rehash
rbenv rehash的作用是有多個Ruby版本的時候要執行的
檢查安裝是否成功
# rbenv versions
設置為全局(否則ruby命令無法使用?)并檢測版本是否正確
# rbenv global 2.5.0 # ruby -v
可選/必選安裝bundle, 因為參考的安裝資料包含Rails, 所以這個是否必須安裝尚不確定, 如果同時需要Rails, 可以查看底部的參閱文檔.
# gem install bundler
實際上整個安裝過程已經把RubyGems安裝好了?
參閱:
Install Ruby on Rails with Rbenv on CentOS 7
其它:
安裝Ruby-官方文檔
安裝NodeJS這個比較簡單, 直接安裝就好了
# yum install nodejs用 RubyGems 安裝 Jekyll
$ gem install jekyll創建一個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...
Wordpress站點遷移至Jekyll全過程官方有遷移文檔, 支持很多種類型的博客遷移, 所以看起來也就比較簡單了, 官方文檔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 `" 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的工作已經完成.
遷移后的思考遷移完成后, 也有一些問題是需要解決的, 大致想到的如下
現有的不正確內容的修正(資源文件管理, 文章內圖片的鏈接等)
主題及相關功能開發
評論系統的植入, 考慮使用disqus
seo方面, url規則匹配舊的wordpress(考慮Nginx定向或其他方案)
其他暫未想到...
如果你也想把wordpress站點內容遷移至Jekyll, 閱讀該文中發現錯誤, 或者通過該文示例過程中的嘗試發生了一些無法解決的問題, 歡迎留言~
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39853.html
摘要:自建主要花費在購買云服務器上和靜態資源托管上,剩余工作一力承擔。 寫這系列文章的初衷是:對自己知識面廣度和深度的確定,并以此調整后續的發展和學習方向。希望能達到溫故而知新的效果。 選擇從建站入手,是因為這個是最常見的要求。對于公司而言,網站是展示公司主旨、業務、溝通方式、宣傳營銷的必選方案,一個符合公司形象的高質量官網,必然能讓客戶留下良好的第一印象。,對個人而言,博客是表達其特有的思...
摘要:百度統計先注冊個百度統計的賬號站長賬號,適合個人博客,注冊成功后按照提示,把代碼復制到中的的標簽里這里特指我的博客文件好了,這樣你的博客就差不多了,是不是感覺很酷今天就到這兒,下篇文章見。 我為什么要寫博客?其實我最初打算寫博客,原因很簡單,我就是想把工作中、學習中遇到 的問題及解決方案記錄下來,它能幫你梳理下整個過程的要注意的地方,寫寫你在工作中遇到的問題,用來記錄和回顧。Tips:...
摘要:重構系統是一項非常具有挑戰性的事情。架構與說起來,我一直是一個黨。如下圖是采用的架構這與我們在項目上的系統架構目前相似。而這是大部分所不支持的。允許內容通過內容服務更新使用于是,有了一個名為的框架用于管理內容,并存儲為。 重構系統是一項非常具有挑戰性的事情。通常來說,在我們的系統是第二個系統的時候才需要重構,即這個系統本身已經很臃腫。我們花費了太量的時間在代碼間的邏輯,開發新的功能變得...
閱讀 2967·2021-11-25 09:43
閱讀 3586·2021-11-24 11:13
閱讀 3354·2021-10-14 09:42
閱讀 2555·2021-09-23 11:53
閱讀 3605·2021-09-22 15:57
閱讀 3221·2021-09-02 09:54
閱讀 3499·2019-08-30 13:47
閱讀 1638·2019-08-29 16:55