成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Wordpress博客遷移至Jekyll過程總結(jié)

高勝山 / 2624人閱讀

摘要:想來(lái)想去還是想試試把我的博客轉(zhuǎn)成一方面為了管理另一方面實(shí)在是感覺請(qǐng)求過多速度太慢可改造性太差經(jīng)過遷移后默認(rèn)主題速度杠杠的顯示時(shí)間不到哦安裝本文在環(huán)境下操作環(huán)境需要比較懶貌似自帶還是啥時(shí)候裝了不會(huì)的自己搜一下安裝和目前最新穩(wěn)定版本是自帶源的版

想來(lái)想去還是想試試把我的博客轉(zhuǎn)成Jekyll, 一方面為了git管理, 另一方面實(shí)在是感覺請(qǐng)求過多速度太慢, 可改造性太差. 經(jīng)過遷移后, 默認(rèn)主題, 速度杠杠的, 顯示時(shí)間不到500ms哦~
安裝Jekyll
本文在CentOS7環(huán)境下操作.
環(huán)境需要

Ruby

RubyGems

NodeJS

Python 2.7(Whidy比較懶, 貌似CentOS7自帶? 還是啥時(shí)候裝了, 不會(huì)的自己搜一下= =.)

安裝Ruby2.5.0和RubyGems
目前最新穩(wěn)定版本是2.5.0, CentOS自帶源的版本比較老, 我們需要第三方源rbenv來(lái)安裝最新穩(wěn)定版, 安裝方法如下:

安裝rbenvRuby依賴的組件

# 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

安裝rbenvrub-build(務(wù)必在非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

查看當(dāng)前可安裝的Ruby版本

# rbenv install -l

安裝目前最新穩(wěn)定版本2.5.0

# rbenv install -v 2.5.0
# rbenv rehash

rbenv rehash的作用是有多個(gè)Ruby版本的時(shí)候要執(zhí)行的

檢查安裝是否成功

# rbenv versions

設(shè)置為全局(否則ruby命令無(wú)法使用?)并檢測(cè)版本是否正確

# rbenv global 2.5.0
# ruby -v

可選/必選安裝bundle, 因?yàn)閰⒖嫉陌惭b資料包含Rails, 所以這個(gè)是否必須安裝尚不確定, 如果同時(shí)需要Rails, 可以查看底部的參閱文檔.

# gem install bundler

實(shí)際上整個(gè)安裝過程已經(jīng)把RubyGems安裝好了?

參閱:

Install Ruby on Rails with Rbenv on CentOS 7

其它:

安裝Ruby-官方文檔

安裝NodeJS

這個(gè)比較簡(jiǎn)單, 直接安裝就好了

# yum install nodejs
用 RubyGems 安裝 Jekyll
$ gem install jekyll
創(chuàng)建一個(gè)Jekyll站點(diǎn)

接下來(lái)在當(dāng)前用戶的目錄下創(chuàng)建一個(gè)博客站點(diǎn)并開啟服務(wù)

# cd ~
# jekyll new blog
# cd blog
# jekyll serve --host 0.0.0.0

此時(shí)打開瀏覽器訪問[server ip]:4000即可.(例如http://118.0.156.000:4000/)

示例頁(yè)面: http://daily.whidy.net/

參閱: http://jekyllcn.com/docs/inst...

Wordpress站點(diǎn)遷移至Jekyll全過程
官方有遷移文檔, 支持很多種類型的博客遷移, 所以看起來(lái)也就比較簡(jiǎn)單了, 官方文檔Import your old & busted site or blog for use with Jekyll., 我們來(lái)嘗試Wordpress遷移.

先按照他的示例, 按照自己的網(wǎng)站進(jìn)行修改, 大致如下

$ 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"]
    })"

保證配置無(wú)誤后, 回車, 執(zhí)行報(bào)錯(cuò)!

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... 然后看了下, 貌似真的是的, 立馬升級(jí)

$ gem update --system

我說gem安裝非??拥? 毫無(wú)提示, 都不知道是不是正在處理執(zhí)行的命令, 其實(shí)已經(jīng)在執(zhí)行了, 根據(jù)網(wǎng)絡(luò)情況多等待一下. 接著唰唰唰的出來(lái)一大段, 一直到出現(xiàn)RubyGems system software updated, 就更新完了, 我們?cè)賴L試遷移命令... 又報(bào)錯(cuò)!!!

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)

蛋疼, 上次不是裝了嗎, 還是我記錯(cuò)了. 好吧再裝一遍

$ gem install jekyll-import

然后再執(zhí)行, 反復(fù)報(bào)錯(cuò)... 于是反復(fù)執(zhí)行各種依賴包... 總結(jié)如下

$ gem install sequel
$ gem install unidecode
$ gem install mysql2

這里說要mysql2, 然后執(zhí)行上面的命令報(bào)錯(cuò), 又說要mysql-devel, 服了- -, 那只能一步步試試看了.

$ yum install mysql-devel

接著試

$ gem install mysql2

再跑遷移命令, 繼續(xù)報(bào)錯(cuò)... 信息如下

         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, 這個(gè)填啥呢, 我查了半天有各種各樣的, 比如/var/run/mysqld/mysqld.sock, /tmp/mysql.sock等等, 可能是他們都是mysql, 而我是MariaDB, 為了從根本問題上下手, 還是看看我的MariaDB的配置文件里面怎么寫的吧.

這里需要說明的是, 我的Wordpress數(shù)據(jù)庫(kù)和要遷移到的Jekyll都在同一服務(wù)器上, 因此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"]
    })"

慢慢的, 從前面十幾條錯(cuò)誤, 減少到了最后一條

Could not require "htmlentities", so the :clean_entities option is now disabled.

看來(lái)還是比較成功的... 那就裝一個(gè)試試看吧

$ gem install htmlentities

安裝后, 再次執(zhí)行遷移命令, 搞得心都要碎了... 復(fù)制粘貼回車...

額, 沒. 有. 任. 何. 反. 應(yīng). 的. 結(jié). 束. 了... 難道成功了?

在安裝Jekyll的目錄下編譯一下看看...

[whidy@VM_0_3_centos blog]$ jekyll b

又報(bào)錯(cuò)...

Configuration file: /home/whidy/blog/_config.yml
            Source: /home/whidy/blog
       Destination: /home/whidy/blog/_site
 Incremental build: disabled. Enable with --incremental
      Generating...
     ...此處省略字?jǐn)?shù) 哈哈哈...
     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的正則規(guī)則, 面對(duì){{這種玩意就掛了. 把它改成{ {, 參閱: Liquid Exception: Variable "{{ {0}" was not properly terminated with regexp: /}}/ in #466, 然后我就去_posts目錄把這篇文章手動(dòng)改了... 再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.
     ... 幾十條這樣的信息結(jié)束...
     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二級(jí)域名頁(yè)面, 方法大致如原文, 我靠, 昨天不是搞好了403錯(cuò)誤嗎? 咋又來(lái), 不過不怕, 已經(jīng)知道是權(quán)限問題了, 我們?cè)诜治鱿履睦锍鰡栴}. (然后一陣胡亂修改權(quán)限后就好了- -,), 我認(rèn)為估計(jì)有效的命令是這一條

# chmod 755 -R /home/whidy/blog/

然后刷新頁(yè)面, 就好了. 當(dāng)然我這是裸奔的Jekyll, 沒有主題, 所以看起來(lái)很樸素. 不過還是有些問題的.

比如, 之前加密的單頁(yè)面被放在導(dǎo)航上了. 文章列表中有一些帶數(shù)字的文章, 還有評(píng)論, 這些本不該存在- -, 所以遷移后的優(yōu)化也是少不了的, 不過至此關(guān)于Wordpress遷移到Jekyll的工作已經(jīng)完成.

遷移后的思考

遷移完成后, 也有一些問題是需要解決的, 大致想到的如下

現(xiàn)有的不正確內(nèi)容的修正(資源文件管理, 文章內(nèi)圖片的鏈接等)

主題及相關(guān)功能開發(fā)

評(píng)論系統(tǒng)的植入, 考慮使用disqus

seo方面, url規(guī)則匹配舊的wordpress(考慮Nginx定向或其他方案)

其他暫未想到...

如果你也想把wordpress站點(diǎn)內(nèi)容遷移至Jekyll, 閱讀該文中發(fā)現(xiàn)錯(cuò)誤, 或者通過該文示例過程中的嘗試發(fā)生了一些無(wú)法解決的問題, 歡迎留言~

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/39853.html

相關(guān)文章

  • 技術(shù)存檔:建站(一)

    摘要:自建主要花費(fèi)在購(gòu)買云服務(wù)器上和靜態(tài)資源托管上,剩余工作一力承擔(dān)。 寫這系列文章的初衷是:對(duì)自己知識(shí)面廣度和深度的確定,并以此調(diào)整后續(xù)的發(fā)展和學(xué)習(xí)方向。希望能達(dá)到溫故而知新的效果。 選擇從建站入手,是因?yàn)檫@個(gè)是最常見的要求。對(duì)于公司而言,網(wǎng)站是展示公司主旨、業(yè)務(wù)、溝通方式、宣傳營(yíng)銷的必選方案,一個(gè)符合公司形象的高質(zhì)量官網(wǎng),必然能讓客戶留下良好的第一印象。,對(duì)個(gè)人而言,博客是表達(dá)其特有的思...

    chnmagnus 評(píng)論0 收藏0
  • 打造一個(gè)“精致的”個(gè)人博客

    摘要:百度統(tǒng)計(jì)先注冊(cè)個(gè)百度統(tǒng)計(jì)的賬號(hào)站長(zhǎng)賬號(hào),適合個(gè)人博客,注冊(cè)成功后按照提示,把代碼復(fù)制到中的的標(biāo)簽里這里特指我的博客文件好了,這樣你的博客就差不多了,是不是感覺很酷今天就到這兒,下篇文章見。 我為什么要寫博客?其實(shí)我最初打算寫博客,原因很簡(jiǎn)單,我就是想把工作中、學(xué)習(xí)中遇到 的問題及解決方案記錄下來(lái),它能幫你梳理下整個(gè)過程的要注意的地方,寫寫你在工作中遇到的問題,用來(lái)記錄和回顧。Tips:...

    用戶83 評(píng)論0 收藏0
  • Repractise架構(gòu)篇一: CMS的重構(gòu)與演進(jìn)

    摘要:重構(gòu)系統(tǒng)是一項(xiàng)非常具有挑戰(zhàn)性的事情。架構(gòu)與說起來(lái),我一直是一個(gè)黨。如下圖是采用的架構(gòu)這與我們?cè)陧?xiàng)目上的系統(tǒng)架構(gòu)目前相似。而這是大部分所不支持的。允許內(nèi)容通過內(nèi)容服務(wù)更新使用于是,有了一個(gè)名為的框架用于管理內(nèi)容,并存儲(chǔ)為。 重構(gòu)系統(tǒng)是一項(xiàng)非常具有挑戰(zhàn)性的事情。通常來(lái)說,在我們的系統(tǒng)是第二個(gè)系統(tǒng)的時(shí)候才需要重構(gòu),即這個(gè)系統(tǒng)本身已經(jīng)很臃腫。我們花費(fèi)了太量的時(shí)間在代碼間的邏輯,開發(fā)新的功能變得...

    William_Sang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<