看到 Lifetype 1.1.3 版有分頁的功能, 就很想升級來用, 但是又一直懶得動.
昨天正好看到 LifeType1.0.6 升級到 LifeType 1.1.3 的記錄 這篇文章, 就直接嘗試看看, 升級起來是蠻容易的, 但是中間有遇到 MySQL 匯入的亂碼問題, 一起解決掉, 然後把原始的資料全都轉成標準 UTF-8 存入.
以下來分幾步驟來升級:
- DB 備份
- 將 MySQL Data 轉換成標準 UTF-8, 解決亂碼問題
- Lifetype 升級
- Template Check
- Plugins 升級
因為不敢冒然升級, 於是採用比較龜的方法來測試升級, 果然遇到了一些怪問題, 在 MySQL 4.0/4.1 的時後匯入匯出都正常, 但在 MySQL 5.0 匯出匯入資料後, 程式讀出來都是亂碼.
1. DB 備份
DB 備份就不多說了, 總之就是能做備份的方法就多做幾個:
- mysqldump 備份
- tar zcvf /mysql/data/
- 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 即可, 步驟如下:
- $ mysqldump -u root -p --default-character-set=latin1 DBNAME > plog-latin1.sql
- $ piconv -f utf-8 -t cp950 plog-latin1.sql > plog-cp950.sql
- $ piconv -f cp950 -t utf-8 plog-cp950.sql > plog-utf8.sql
- 再來 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" 即可
- 再將 此 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 升級
過程如下:
- wget http://jaist.dl.sourceforge.net/sourceforge/lifetype/lifetype-1.1.3.tar.gz
tar -xzf lifetype-1.1.3.tar.gz - mv lifetype-1.1.3 lifetype
- chmod -R 707 lifetype/tmp/ lifetype/config/ lifetype/gallery/
- vim lifetype/config/config.properties.php 會發現多了下面兩個參數, 手動改一下這個檔案吧.
- $config["db_persistent"] = true;
- $config["db_character_set"] = "utf8";
- 然後執行 http://DOMAIN/lifetype/wizard.php?nextStep=Fix111 這個不知道要做什麼, 總之用就對了.
- 再執行 http://DOMAIN/lifetype/wizard.php 一直下一步即可(確定帳號能夠有修改 DB 的權限.
- 中間會有 "Warning: mysql_free_result()" 的訊息, 可以不用理會 🙂
- mv wizard.php wizard.php.old
- cp -r lifetype_old/template/TEMPLATE_NAME lifetype/template
- cp -r lifetype_old/plugins/* lifetype/plugins/
- diff lifetype_old/.htaccess lifetype/.htaccess 改一改
- 和一些其它你覺得該 cp 的
- 這樣子應該就可以看到升級完成的頁面了
4. Template Check
這個就是自己亂改, 改太多的缺點, 會發現有些東西不能跑, 於是就把新的 Template 跟自己的 Template 一個一個 diff 來改一改, 這個沒什麼捷徑, 總之就是小心改就是了, 但是發現到需要改的地方, 事實上並不多, 主要都是加 pager link 而已, 大多數都是一樣的.(拿舊的 Template 來加新的內容會比較快)
5. Plugins 升級
到官方網站 Plugins - LifeType Wiki 去抓新版的 Plugins, 記得要抓 1.1_PluginName 的檔案, 沒意外的話, 應該全都有新版才是, 只要解壓縮, 再蓋回去 lifetype/plugins/ 的目錄就可以了(建議是 mv 掉 舊的, 再把新的搬進去).
這樣子就全部升級完成囉~ 就看到自己最下方有分頁了~~ 🙂
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
給您參考。 🙂
感謝長輩提醒, 小的馬上來修此 Bug, 萬分感激.. Orz..
昨天學著玩模板編輯器
剛安裝驗證迴響而已
結果掛點一片空白...Orz
我還原每天cron的備份之後
還原MYSQL資料庫時
下指令mysql plog -uXXX -pXXX < plog.sql 結果網頁變成亂碼? 是因為我的指令下錯了嗎? mysql -uXXX -pXXX plog
試試看這樣子的, 指定 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
照著做了,但是沒有東西被更改耶
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
mysql 並沒有預設幫你拉 UTF-8 呀, 一切都是 my.cnf 設定的問題.
照您的訊息來看, 應該是 plog.sql 讀不到而已耶, 您試試 plog.sql 前面加絕對路徑??
或把那三段 SET ... 寫進 plog.sql 最上面, 然後, 用你原本的方法來匯入看看? 🙂
是不是貼成這樣啊?
然後儲存離開
-- 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
我比較建議這三行放在第一個 Table 前面.
*** 放在這邊..
--
-- Table ...
--
(就是 /* ......*/ 最下面)
我犧牲掉一些文章
回覆到較早幾天的備份
已經完全恢復正常了
我想應該是模板編輯器安裝後開始出問題的吧
我會再好好研究安裝的
謝謝您
並下 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
請問我是否做錯步驟了啊!
那段 regex, 是在 vim 裡面下的, 主要是要把 CHARSET=latin1 全部換成 CHARSET=utf8.
至於那步驟二做到最後的訊息, 看起來不太重要, 應該可以不用理他 🙂
瞭改
我再熬夜做做看
請您繼續指導我喔~
厄... 熬夜是不好的說.. Orz..
此網頁的重新導向(Redirect)方式不正確
Firefox 偵測到伺服器對此網址的設定有問題,會變成永無止境的重新導向(Redirect)。
* 這個問題可能是由於你拒絕該網站使用 Cookie 所造成的。
出現這個firefox錯誤訊息耶?
我照你的步驟一步步做的啊?
難到是我的VirtualHost出問題?
這跟我上面寫的步驟沒有關係耶.
錯誤訊息寫說, 您沒有打開 Cookie ?
還是是 Virtual Host 的問題, 這個, 我沒辦法告訴你耶.
你必須把你的環境跟要做的事情詳細說明一下, 才可以判斷這個~~
不好意思
是我沒說清楚
我整理之後寄信給您聯絡好了
不佔用迴響嚕~
嗯, 這個轉換是蠻辛苦的工作就是了.. Orz...
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即可?
謝謝您的耐心指教
看起來很複雜呀.. Orz..
你也是從 1.0.6 升 1.1.3?
因為 1.0.6 => 1.1.3 中間 DB 有修改, 所以需要跑他的 wizard.php.
lifetype => lifetype.old 只是純粹備份, 以防萬一而已..
可以 lifetype-1.1.3 lifetype 即可. 🙂
你看我從第一篇問起
到現在已經過了快半年了
小弟都還沒升級成功
嗚嗚嗚....
我再回去試試您說的方法
假如再不行
我會嘗試直接安裝最新版本
試試囉
Mmm... 您先試試看, 不然你就去把密碼改簡單點, 然後把 DB/現在版本的程式, 壓給我... 我幫您做好了...
在gmail了
麻煩您嚕~@@
我沒收到耶, 再確認一次?
似乎目錄太大
不過我的fedora GNOME中的郵件程式Evolution
顯示傳送成功耶?
還是僅需要指定目錄即可?
可以請tsung用mail指導小弟一番嗎?