星期三, 十二月 27, 2006

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 掉 舊的, 再把新的搬進去).

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

相關標籤

this is comment icon 好像怪怪的 [回覆]

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
給您參考。 :)

Comment by jesse (12/28/2006 22:32)

this is comment icon 回 Jesse [回覆]

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

Comment by Tsung (12/29/2006 01:00)

this is comment icon [回覆]

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

Comment by ZONG (11/17/2007 21:15)

this is comment icon 回 ZONG [回覆]

試試看這樣子的, 指定 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

Comment by Tsung (11/18/2007 00:49)

this is comment icon [回覆]

照著做了,但是沒有東西被更改耶
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

Comment by ZONG (11/18/2007 11:15)

this is comment icon 回 ZONG [回覆]

mysql 並沒有預設幫你拉 UTF-8 呀, 一切都是 my.cnf 設定的問題.

照您的訊息來看, 應該是 plog.sql 讀不到而已耶, 您試試 plog.sql 前面加絕對路徑??

或把那三段 SET ... 寫進 plog.sql 最上面, 然後, 用你原本的方法來匯入看看? :)

Comment by Tsung (11/18/2007 11:39)

this is comment icon [回覆]

是不是貼成這樣啊?
然後儲存離開

-- 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

Comment by ZONG (11/18/2007 14:04)

this is comment icon 回 ZONG [回覆]

我比較建議這三行放在第一個 Table 前面.

*** 放在這邊..
--
-- Table ...
--
(就是 /* ......*/ 最下面)

Comment by Tsung (11/18/2007 15:14)

this is comment icon [回覆]

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

Comment by ZONG (11/18/2007 17:18)

this is comment icon [回覆]

並下 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
請問我是否做錯步驟了啊!

Comment by ZONG (03/24/2008 00:03)

this is comment icon 回 ZONG [回覆]

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

Comment by Tsung (03/24/2008 10:48)

this is comment icon [回覆]

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

Comment by ZONG (03/25/2008 22:27)

this is comment icon 回 ZONG [回覆]

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

Comment by Tsung (03/25/2008 22:34)

this is comment icon [回覆]

此網頁的重新導向(Redirect)方式不正確
Firefox 偵測到伺服器對此網址的設定有問題,會變成永無止境的重新導向(Redirect)。
* 這個問題可能是由於你拒絕該網站使用 Cookie 所造成的。

出現這個firefox錯誤訊息耶?
我照你的步驟一步步做的啊?
難到是我的VirtualHost出問題?

Comment by ZONG (03/29/2008 22:16)

this is comment icon 回 ZONG [回覆]

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

Comment by Tsung (03/30/2008 00:21)

this is comment icon [回覆]

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

Comment by ZONG (03/31/2008 18:10)

this is comment icon 回 ZONG [回覆]

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

Comment by Tsung (03/31/2008 18:13)

this is comment icon 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即可?
謝謝您的耐心指教

Comment by zong (05/07/2008 13:50)

this is comment icon 回 zong [回覆]

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

Comment by Tsung (05/07/2008 16:51)

this is comment icon [回覆]

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

Comment by ZONG (05/07/2008 19:09)
Add this page to del.icio.us Add this page to Yahoo Taiwan's bookmark Add this page to MyShare

發表迴響

標題

內容 (限制 1000 字)

暱稱

電子郵件

個人網頁


 authimage


PS: 若無法留言, 請先確認是否有打開 JavaScript, 造成您的困擾, 實在萬分對不起 Orz...(如果無法留言, 勞煩可以發信給我好嗎? 謝謝.)
PS2: 若您的留言被誤判, 我都會再自行看過, 不需要一直重覆張貼~