桃園市中小學資訊教育成果網站 包含 BSD & Linux 系統漏洞最新?
最新討論搜尋常見問題網站導覽網站統計會員註冊登入  
[分享]學務系統 B2D->centOS6 轉換工具

發表新主題   回覆主題   友善列印   郵寄朋友
 桃園市中小學資訊教育成果網站 首頁 » X學務系統版
上一篇主題 :: 下一篇主題  
發表人 附帶訊息
cmy
Home away from home


註冊時間: 2006-02-16
文章: 367
來自: 內壢國小

發表發表於: 星期四 五月 03, 2012 3:43 pm    文章主題: [分享]學務系統 B2D->centOS6 轉換工具 引言回覆

ctool2.sh 僅適用於centOS5,如果改用centOS6就出現許多問題,所以就改了一個centOS6可以用的版本,此版本理論上應該也可以用在centOS5,缺點是速度較慢,而且要先再B2D機器上匯出資料庫。

ctool3.sh 下載位置 http://163.30.142.8/x/ctool3.sh
使用方式和ctool2.sh 雷同,差別是 ctool3.sh要先在B2D上先匯出sql

操作過程示範如下
sh ctool3.sh 後

0.
顯示參考後,用ctrl+C中斷ctool3的執行。
[root@cloud ~]# ssh root@163.30.142.12
Password:
root@gmail:~# mysqldump -u tycx -p x --allow-keywords >x.sql
Enter password:
root@gmail:~# ls -l x.sql
-rw-r--r-- 1 root root 161119305 2012-04-27 07:47 x.sql
root@gmail:~# exit
返回,再次執行sh ctool3.sh
1.
輸入原來資料庫(遠端電腦)的IP :163.30.142.12
輸入原來資料庫(遠端電腦)名稱(database name) : x
Password: [輸入163.30.142.12 root密碼]
sent 20 bytes received 52 bytes 2.09 bytes/sec
total size is 161119305 speedup is 2237768.12
資料庫x.sql複製到本機了

2
輸入原來資料庫的名稱(x.sql) [ENTER]
輸入資料庫的名稱Sadx) [ENTER]
是否增加清除_session, 等資料表的sql code?[Y/n] [ENTER]
產生x-utf8.sql中,請稍後......1
...2...3...4...5...6...7...8
轉換完成! 轉成的檔名Mad-utf8.sql,列出前後5列
DROP DATABASE IF EXISTS x ;
create database x character set utf8;
USE x ;
set names utf8 ;
-- MySQL dump 9.11


TRUNCATE TABLE `lM9N5_session` ;
TRUNCATE TABLE `lM9N5_sxs_database_update` ;
TRUNCATE TABLE `lM9N5_sxs_scorem_database_update` ;
按下ENTER程式將自動幫您匯入,您可以按下ctrl+c離開再手動匯入 [ENTER]
輸入資料庫的使用者名稱:root
輸入資料庫使用者的密碼: [輸入新機器mysql root密碼] 資料庫轉換完成,可以用phpmyadmin檢查x的完整性

4.
輸入原來xoops(遠端電腦)的IP (163.30.142.12) : [ENTER]
輸入原來xoops(遠端電腦)的xoops_root_path:/tycx/x
輸入現在xoops(本地電腦)的xoops_root_path:/var/www/html/ux
進行rsync -av root@163.30.142.12:/tycx/x /root/tmp_code,輸入163.30.142.12的root密碼
Password: [輸入163.30.142.12 root密碼]
... ...
sent 189604 bytes received 51145289 bytes 689058.97 bytes/sec
total size is 50562935 speedup is 0.98

按下Enter自動編輯mainfile.php,否則按下Ctrl+C離開後手動編輯 [ENTER]
輸入xoops網址(含http://)XOOPS_URL:http://163.30.12.5/ux
輸入資料庫使用者XOOPS_DB_USER:root
輸入資料庫密碼XOOPS_DB_PASS: [輸入新機器mysql root密碼]
輸入資料庫名稱XOOPS_DB_NAME: (x) [ENTER]
修改結果:
// Example: define('XOOPS_ROOT_PATH', '/var/www/html/ux');
define('XOOPS_ROOT_PATH', '/var/www/html/ux');
// Example: define('XOOPS_URL', 'http://163.30.12.5/ux');
define('XOOPS_URL', 'http://163.30.12.5/ux');
define('XOOPS_DB_USER', 'root');
define('XOOPS_DB_PASS', '*******');
define('XOOPS_DB_NAME', 'x');
程式碼複製完成,mainfile.php也改好了
...底下和ctool2就完全一樣了

PS1
如果新機器不接受.htaccess的話
可用
cd /var/www/html/x
find . -name ".htac*" | xargs rm -f
刪掉所有的.htaccess
PS2
不論新舊機的工作目錄都是 /root
PS3
理論上舊機器不是只能B2D. FreeBSD, CentOS應該都可以,本程式我只在B2D->CENTOS6測試過2次,有興趣的夥伴可以先測測看,預到各種問題我再修正。
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
t9107
Not too shy to talk


註冊時間: 2008-12-16
文章: 29

發表發表於: 星期五 五月 04, 2012 2:54 pm    文章主題: 引言回覆

系統環境 -mysql5.5.22 -php5.3.1 -Apache2.2.3 的測試
邱大您好
在不合規劃的新系統環境測試結果是亂碼,
除錯訊息
:ERROR 1062 (23000) at line 180939: Duplicate entry '4' for key 'PRIMARY'

另外選項0的指令範例是不是這個意思:
mysqldump -u帳號 -p密碼 原始資料庫名稱 --allow-keywords > 備份名稱(預設為x).sql


-----------------------------------------------
我在這個規格的系統曾經轉碼成功的方式是:
    在B2d修復與最佳化資料表ok後在phpMyAdmin直接用預設選項匯出sql文字檔
    1.拷貝到html目錄讓遠端新電腦用wget抓過來後,砍掉www上的舊檔
    2.用gedit %U ,將sql文字檔的type=全部取代成engine=
    3.將_block_instance 那一段join 改成joinx後存檔
    4.用conver.sh(只註解掉dump指令)轉換
    --->匯入新資料庫轉碼成功無缺字。

    ********原本用covert.sh轉碼會缺字,
    ********後來再裝一次qinst.sh中的php53-mcrypt後就沒有缺字了。


ctool2.sh在我這種新環境中出現的問題我再檢查一次發現:
    mydump.php 失效的原因主要是資料表格式不合,在新電腦上的phpmyadmin中,修復遠端傳過來的資料庫會發現很多資料格式錯誤的訊息,
    *************phpdump放到www中用網頁echo看到的轉碼是有效的,但是因為某些表檔案格式錯誤,echo一碰到就斷掉了。
    ************ 原本 mysql_connect()函式會出現錯誤的訊息
    ,後來把 mysql persistance connect 設成on ,檢查資料庫的讀寫權限不是唯讀後錯誤訊息才解決。



如果convert.sh可以成功的話,ctool3.sh的作法中純perl的語法應該也是通用的,不曉得是不是清除session的那一段碼會不會因為session本來就已經清空而跳開,

感謝邱大熱心幫忙[/list]
回頂端
檢視會員個人資料 發送私人訊息
cmy
Home away from home


註冊時間: 2006-02-16
文章: 367
來自: 內壢國小

發表發表於: 星期五 五月 04, 2012 6:30 pm    文章主題: 引言回覆

t9107 寫到:
系統環境 -mysql5.5.22 -php5.3.1 -Apache2.2.3 的測試
邱大您好
在不合規劃的新系統環境測試結果是亂碼,
除錯訊息
:ERROR 1062 (23000) at line 180939: Duplicate entry '4' for key 'PRIMARY'


了解

t9107 寫到:

另外選項0的指令範例是不是這個意思:
mysqldump -u帳號 -p密碼 原始資料庫名稱 --allow-keywords > 備份名稱(預設為x).sql

是的

問題好像發生在dump時,我測試新機器為php5.1或php5.3都可行。
ctool3.sh 已經稍作修正了,目前已知的問題是來源資料庫如果是mysql 5 dump出來的必須指定語系 像
mysqldump -u root -p x --default-character-set=latin1>x.sql
另外轉換時 shepherd_guid, shepherd_normal 都會轉出亂碼,必須手動再轉一次。

清空 _session 只是在x-utf8.sql的尾巴加上 truncate 的指令。
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
t9107
Not too shy to talk


註冊時間: 2008-12-16
文章: 29

發表發表於: 星期六 五月 05, 2012 1:13 pm    文章主題: [建議]big5 dump 須指定latin1 引言回覆

上一次試b2d上的duump,

確定用b2d上的PhpMyAmin去dump出來的sql應該是
預設的latin1編碼,所以用convert.sh可以轉,

用上一次遠端指令範例dumpsql文字檔不能轉,因為沒有指定latin1編碼..

像邱大說的,我猜修改後ctool3的指令應該會改回

mysqldump -u帳號 -p密碼 原始資料庫名稱 --allow-keywords --default-character-set=latin1 > 備份名稱(預設為x).sql

這對b2d用戶真是一大福音~
因為B2D mysql 沒有utf8字集不能直接dump成utf8,只能用latin1偽編成big5中文,所以非靠ctools處理這些很少人瞭解的問題不可...

就我認識的一些資訊組長一開始要架x學務系統時
,若不選用b2d都會遇到os系統太新(utf8環境)而架不起來的難關
,很可能會回頭用b2d來架
,有的會遇到電腦硬體太新架不起b2d
,最後就只好找廠商架臺中的那一套學務系統
,這一次sh懶人包的推出可以讓大家更容易在新硬體上開張
,應該會少很多這種脫隊的案例了。

等暑假成績輸入告一段落後就要正式靠ctool3做最後一次轉換
,大家成功後要煩惱的另一個問題就是備份
建議邱大有餘力時可以仿b2d,在ctool工具系統中也加入rsync+cron的工具也是一個有價值的選項

感謝 邱大及桃園團隊的貢獻
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
 桃園市中小學資訊教育成果網站 首頁 » X學務系統版 所有的時間均為 GMT + 8 小時
發表新主題   回覆主題   友善列印   郵寄朋友
1頁(共1頁)


 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
可以 在這個版面下載檔案
Powered by phpBB © 2001, 2002 phpBB Group
  RSS feeder  Atom feeder 回到頂端