LifeType 1.0.6 升級到 1.1.3 全記錄

看到 Lifetype 1.1.3 版有分頁的功能, 就很想升級來用, 但是又一直懶得動.

昨天正好看到 LifeType1.0.6 升級到 LifeType 1.1.3 的記錄 這篇文章, 就直接嘗試看看, 升級起來是蠻容易的, 但是中間有遇到 MySQL 匯入的亂碼問題, 一起解決掉, 然後把原始的資料全都轉成標準 UTF-8 存入.

以下來分幾步驟來升級:

  1. DB 備份
  2. 將 MySQL Data 轉換成標準 UTF-8, 解決亂碼問題
  3. Lifetype 升級
  4. Template Check 
  5. Plugins 升級 

因為不敢冒然升級, 於是採用比較龜的方法來測試升級, 果然遇到了一些怪問題, 在 MySQL 4.0/4.1 的時後匯入匯出都正常, 但在 MySQL 5.0 匯出匯入資料後, 程式讀出來都是亂碼. 

1. DB 備份

DB 備份就不多說了, 總之就是能做備份的方法就多做幾個:

  1. mysqldump 備份
  2. tar zcvf /mysql/data/
  3. tar zcvf lifetype 程式 

2. 將 MySQL Data 轉換成標準 UTF-8, 解決亂碼問題 

先來研究為何匯出匯入 MySQL Data 會變亂碼, 發現是 MySQL 之前的語系設定問題, 因為在最早的 plog 版本是設定 latin1 語系的 UTF-8, 而另外再匯入程式後, 讀取的時後是要用 Unicode_ci 版的 UTF-8 來讀取, 於是亂碼就出現了.

知道原因後, 就來解決此問題. 做法很簡單, 先將 DB Dump 出來, 而且指定 Dump 的 Data 要 latin1 的語系, 再來只要先將 latin1 的 UTF-8 轉換成 Big5(cp950), 那些字就會變成正確的中文(想像就是 Big5 與 UTF-8 互轉, 或 繁簡互轉那樣子), 然後再將 Big5 轉成 UTF-8 即可, 步驟如下:

  1. $ mysqldump -u root -p --default-character-set=latin1 DBNAME > plog-latin1.sql 
  2. $ piconv -f utf-8 -t cp950 plog-latin1.sql > plog-cp950.sql
  3. $ piconv -f cp950 -t utf-8 plog-cp950.sql > plog-utf8.sql
  4. 再來 vim plog-utf8.sql, 於上面一堆註解下方加入下面三行:
    • SET NAMES utf8;
    • SET CHARACTER_SET_CLIENT=utf8;
    • SET CHARACTER_SET_RESULTS=utf8;
    • 並下 regex 語法 ":1,$s/CHARSET=latin1/CHARSET=utf8/g" 即可
  5. 再將 此 sql 檔匯入, 照如下語法:
    • mysql -u root -p
    • mysql> drop database DBNAME;
    • mysql> CREATE DATABASE `DBNAME` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
    • mysql> SET NAMES utf8;
    • mysql> SET CHARACTER_SET_CLIENT=utf8;
    • mysql> SET CHARACTER_SET_RESULTS=utf8;
    • mysql> source plog-utf8.sql
    • 即可完成匯入

3. Lifetype 升級

過程如下:

  1. wget http://jaist.dl.sourceforge.net/sourceforge/lifetype/lifetype-1.1.3.tar.gz
    tar -xzf lifetype-1.1.3.tar.gz
  2. mv lifetype-1.1.3 lifetype
  3. chmod -R 707 lifetype/tmp/ lifetype/config/ lifetype/gallery/
  4. vim lifetype/config/config.properties.php 會發現多了下面兩個參數, 手動改一下這個檔案吧.
    • $config["db_persistent"] = true;
    • $config["db_character_set"] = "utf8";
  5. 然後執行 http://DOMAIN/lifetype/wizard.php?nextStep=Fix111 這個不知道要做什麼, 總之用就對了.
  6. 再執行 http://DOMAIN/lifetype/wizard.php 一直下一步即可(確定帳號能夠有修改 DB 的權限.
  7. 中間會有 "Warning: mysql_free_result()" 的訊息, 可以不用理會 🙂
  8. mv wizard.php wizard.php.old
    1. cp -r lifetype_old/template/TEMPLATE_NAME lifetype/template
    2. cp -r lifetype_old/plugins/* lifetype/plugins/
    3. diff lifetype_old/.htaccess lifetype/.htaccess 改一改
    4. 和一些其它你覺得該 cp 的
  9. 這樣子應該就可以看到升級完成的頁面了

 4. Template Check

這個就是自己亂改, 改太多的缺點, 會發現有些東西不能跑, 於是就把新的 Template 跟自己的 Template 一個一個 diff 來改一改, 這個沒什麼捷徑, 總之就是小心改就是了, 但是發現到需要改的地方, 事實上並不多,  主要都是加 pager  link 而已, 大多數都是一樣的.(拿舊的 Template 來加新的內容會比較快)

5. Plugins 升級 

到官方網站 Plugins - LifeType Wiki 去抓新版的 Plugins, 記得要抓 1.1_PluginName 的檔案, 沒意外的話, 應該全都有新版才是, 只要解壓縮, 再蓋回去 lifetype/plugins/ 的目錄就可以了(建議是 mv 掉 舊的, 再把新的搬進去).

這樣子就全部升級完成囉~ 就看到自己最下方有分頁了~~ 🙂 


關於 Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
本篇發表於 My_Note-pLog。將永久鏈結加入書籤。

LifeType 1.0.6 升級到 1.1.3 全記錄 有 24 則回應

  1. jesse 說道:

    Hi tsung,
    我從 http://planet.debian.org.tw/ 連過來會看到 error 哩...
    Catchable fatal error: Object of class Article could not be converted to string in /var/www/plog/class/database/db.class.php on line 402
    給您參考。 🙂

  2. Tsung 說道:

    感謝長輩提醒, 小的馬上來修此 Bug, 萬分感激.. Orz..

  3. ZONG 說道:

    昨天學著玩模板編輯器
    剛安裝驗證迴響而已
    結果掛點一片空白...Orz
    我還原每天cron的備份之後
    還原MYSQL資料庫時
    下指令mysql plog -uXXX -pXXX < plog.sql 結果網頁變成亂碼? 是因為我的指令下錯了嗎? mysql -uXXX -pXXX plog

  4. Tsung 說道:

    試試看這樣子的, 指定 UTF-8.. 🙂
    mysql -u root -pxxx plog
    mysql> SET NAMES utf8;
    mysql> SET CHARACTER_SET_CLIENT=utf8;
    mysql> SET CHARACTER_SET_RESULTS=utf8;
    mysql> source plog.sql

  5. ZONG 說道:

    照著做了,但是沒有東西被更改耶
    MySQL不是4以上的版本在匯入時會自動指向utf8?
    我把指令訊息貼在下面:(不好意思!佔住你的部落格版面~)
    [root@syzong backup_1]# mysql -uroot -p plog
    Enter password:
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 111 to server version: 5.0.27
    Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
    mysql> SET NAMES utf8;
    Query OK, 0 rows affected (0.00 sec)
    mysql> SET CHARACTER_SET_CLIENT=utf8;
    Query OK, 0 rows affected (0.00 sec)
    mysql> SET CHARACTER_SET_RESULTS=utf8;
    Query OK, 0 rows affected (0.00 sec)
    mysql> source plog.sql
    ERROR:
    Failed to open file 'plog.sql', error: 2
    mysql> exit
    Bye

  6. Tsung 說道:

    mysql 並沒有預設幫你拉 UTF-8 呀, 一切都是 my.cnf 設定的問題.
    照您的訊息來看, 應該是 plog.sql 讀不到而已耶, 您試試 plog.sql 前面加絕對路徑??
    或把那三段 SET ... 寫進 plog.sql 最上面, 然後, 用你原本的方法來匯入看看? 🙂

  7. ZONG 說道:

    是不是貼成這樣啊?
    然後儲存離開
    -- MySQL dump 10.10
    --
    -- Host: localhost Database: plog
    -- ------------------------------------------------------
    -- Server version 5.0.27
    SET NAMES utf8;
    SET CHARACTER_SET_CLIENT=utf8;
    SET CHARACTER_SET_RESULTS=utf8;
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTE

  8. Tsung 說道:

    我比較建議這三行放在第一個 Table 前面.
    *** 放在這邊..
    --
    -- Table ...
    --
    (就是 /* ......*/ 最下面)

  9. ZONG 說道:

    我犧牲掉一些文章
    回覆到較早幾天的備份
    已經完全恢復正常了
    我想應該是模板編輯器安裝後開始出問題的吧
    我會再好好研究安裝的
    謝謝您

  10. ZONG 說道:

    並下 regex 語法 ":1,$s/CHARSET=latin1/CHARSET=utf8/g" 即可
    請問您這一段是加在sql前三段下面嗎?
    還是要另外輸入指令啊?
    我做到步驟二最後
    出現一連串的錯誤訊息:
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '":1,$s/CHARSET=latin1/CHARSET=utf8/g"
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@' at line 1
    請問我是否做錯步驟了啊!

  11. Tsung 說道:

    那段 regex, 是在 vim 裡面下的, 主要是要把 CHARSET=latin1 全部換成 CHARSET=utf8.
    至於那步驟二做到最後的訊息, 看起來不太重要, 應該可以不用理他 🙂

  12. ZONG 說道:

    瞭改
    我再熬夜做做看
    請您繼續指導我喔~

  13. Tsung 說道:

    厄... 熬夜是不好的說.. Orz..

  14. ZONG 說道:

    此網頁的重新導向(Redirect)方式不正確
    Firefox 偵測到伺服器對此網址的設定有問題,會變成永無止境的重新導向(Redirect)。
    * 這個問題可能是由於你拒絕該網站使用 Cookie 所造成的。
    出現這個firefox錯誤訊息耶?
    我照你的步驟一步步做的啊?
    難到是我的VirtualHost出問題?

  15. Tsung 說道:

    這跟我上面寫的步驟沒有關係耶.
    錯誤訊息寫說, 您沒有打開 Cookie ?
    還是是 Virtual Host 的問題, 這個, 我沒辦法告訴你耶.
    你必須把你的環境跟要做的事情詳細說明一下, 才可以判斷這個~~

  16. ZONG 說道:

    不好意思
    是我沒說清楚
    我整理之後寄信給您聯絡好了
    不佔用迴響嚕~

  17. Tsung 說道:

    嗯, 這個轉換是蠻辛苦的工作就是了.. Orz...

  18. zong 說道:

    tsung
    我已經將家中主機VirtualHost取消
    /etc/hosts /etc/httpd/conf/httpd.conf
    都已經回復www.zong.idv.tw這個網域
    我重新照您的方式做一次升級步驟
    結果FireFox還是出現上面的錯誤訊息
    想請教您的是
    原本的/var/www/html/lifetype
    需要先改成lifetype.old嗎?
    還是直接mv lifetype-1.1.3 lifetype即可?
    謝謝您的耐心指教

  19. Tsung 說道:

    看起來很複雜呀.. Orz..
    你也是從 1.0.6 升 1.1.3?
    因為 1.0.6 => 1.1.3 中間 DB 有修改, 所以需要跑他的 wizard.php.
    lifetype => lifetype.old 只是純粹備份, 以防萬一而已..
    可以 lifetype-1.1.3 lifetype 即可. 🙂

  20. ZONG 說道:

    你看我從第一篇問起
    到現在已經過了快半年了
    小弟都還沒升級成功
    嗚嗚嗚....
    我再回去試試您說的方法
    假如再不行
    我會嘗試直接安裝最新版本
    試試囉

  21. Tsung 說道:

    Mmm... 您先試試看, 不然你就去把密碼改簡單點, 然後把 DB/現在版本的程式, 壓給我... 我幫您做好了...

  22. zong 說道:

    在gmail了
    麻煩您嚕~@@

  23. Tsung 說道:

    我沒收到耶, 再確認一次?

  24. zong 說道:

    似乎目錄太大
    不過我的fedora GNOME中的郵件程式Evolution
    顯示傳送成功耶?
    還是僅需要指定目錄即可?
    可以請tsung用mail指導小弟一番嗎?

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料