Latest News

首頁 » Linux主機移轉 » Linux主機伺服器架設技術(主機資料移轉)

Linux主機伺服器架設技術(主機資料移轉)

Linux主機伺服器架設技術(主機資料移轉)

 主機的移轉要掌握以下幾點原則:

   1. 要注意原網頁應用軟體之安全性
有些舊的軟體,可能已有漏洞,不要再把舊的版本轉移過來。
2. 在移轉資料的同時,必須要注意,該資料的檔案權限。不要在完成資料移轉之後,一般 user 都「看」不到,只剩 root 一個才看得到。

3. 可在兩台 Linux 之間直接使用 gFtp 軟體,以 SFTP2 (SSH2) 協定、 Root 身份,直接把各種資料從舊機器傳送到新機器上。
———————————————————————————

資料庫移轉

* 資料庫位置:/var/lib/mysql
* /var/lib/mysql/mysql 及 /var/lib/mysql/test 不可搬動
除了上述這兩個資料夾不可搬動外,其餘在 /var/lib/mysql/ 底下的資料夾(資料庫),皆可以搬到新 Linux Server主機的 /var/lib/mysql 底下。
因為 /var/lib/mysql/mysql 是 MySQL 的系統資料庫,它記錄了許許多多 MySQL Server 的設定參數。而且,舊版的 MySQL 與新版的 MySQL ,系統資料庫會有欄位定義上的不同,若您把舊版系統資料庫,直接覆蓋到新版之上,可能會造成 MySQL 啟動失敗。
例外:若是新舊主機的 Linux/Linux Server 版本一致,理論上其 MySQL 版本應該也一致,就可以執行以下動作即可
1. 直接把 /var/lib/mysql/ 底下所有資料夾複製到新主機上相同的位置上
2. 不必再動 MySQL 使用者權限的部份
* 複製到新主機時,要記得把 /var/lib/mysql 底下所有的資料夾(資料庫)權限,改為 mysql.mysql
root@dns:~# chown -R mysql.mysql /var/lib/mysql/*
* 在 Linux 底下可以使用 filezilla 以 SFTP 的協定,直接用 Root 身份進行搬動
root@dns:~# apt-get install filezilla
* 檢查所有 PHP+MySQL程式碼(如 ANN 公告欄…etc),把所使用到的 MySQL 使用者帳號密碼,新增至新主機的 MySQL 內
使用 phpmyadmin,例: http://Your.ServerName/phpmyadmin
在首頁上點:「權限」 → 「新增使用者」 (新增 MySQL 的使用者)

———————————————————————————
網頁搬家

* 網頁位置
Red Hat 系列: /var/www/html
Linux/Linux 系列: /var/www
☆.自行編譯安裝: /usr/local/apache2/htdocs
* 可以使用圖形化工具 gFtp 以 SFTP 的協定,直接用 Root 身份進行搬動
☆.例1:從舊 Red Hat(含 Fedora) 之/var/www/html → Linux Server 之 /var/www
* 也可用指令 scp
例:以 root 身份把遠端的 /var/www/sfs3 複製回本機之 /var/www/sfs3 底下
root@dns:~# scp root@your.old.host:/var/www/sfs3 /var/www
* 注意:Linux 的 Apache2 Server 在送出網頁時,預設會採用 utf8 編碼,可是原主機上的網頁卻可能是 Big5 ,此時,我們必須把預設編碼解除,並加強其多國語言編碼之處理能力。
☆.解除送出網頁時的預設編碼
編輯 /etc/apache2/conf.d/charset ,把 AddDefaultCharset UTF-8 變成註解

# AddDefaultCharset UTF-8
☆.加強多國語言編碼處理能力,編輯 /etc/apache2/sites-available/default ,新增紅字部分。

<VirtualHost *:80>
ServerAdmin webmaster@n10.domo.tnc.edu.tw
ServerName n10.domo.tnc.edu.tw

DocumentRoot /var/www/
<Directory />
Options FollowSymLinks MultiViews
AllowOverride None
</Directory>

使用者搬家(家目錄移轉)

* 各使用者的家目錄,集中在 /home/ 底下
* 用 gFtp 以 SFTP 的協定,直接用 Root 身份進行搬動(檔案權限,會被改為 root.root)

User 移轉

Linux 的 User 相關資料如下:

* 各使用者資料夾 /home/*
* 設定檔 /etc/passwd
* 密碼檔 /etc/shadow
* 群組檔 /etc/group
* 群組密碼檔 /etc/gshadow

若是 Linux Server 或 Linux pureXXX 的舊主機,移轉至 Linux Server。把上列各檔,有關使用者的部份,「複製」/「貼上」至新主機同名檔案的檔尾部份。以 /etc/passwd 舉例如下:

1. 把舊主機 passwd, shadow, group, gshadow 傳輸至新主機 /root 底下
2. 使用文字編輯器,如 gedit 打開 /root/passwd ,複製舊主機上的使用者資料,貼至新主機的 /etc/passwd 的檔尾處(不要動到原本的資料)。

歸還其原有權限

* 最後,要把權限還給該使用者
root@dns:~# chown -R user.user /home/user
☆.註:以上 chown 要在下面 User 移轉完畢,才可以處理
* 若人數過多,這裡有快速做法
http://myip.tw/itsmw/index.php/Home_chowner

網頁資料庫編碼轉換

本文介紹如何在 Linux Server 下把 Big5 碼的網頁暨其資料庫轉成 UTF8 碼,並轉至 Linux 上的資料庫。當然,這並不是必要性動作,本文在此只是提供一個作法給大家參考而已,並不鼓勵大家把所有網頁暨其資料庫轉碼。

資料庫轉碼

在此,筆者以自己所寫的一支 Big5 小程式「學生資訊檢測練習區」來擔任本次的範例,它內含三支 php 程式碼以及一個資料庫(兩張表)。

Linux Server 上把資料庫轉出

* 把整個 Big5 碼資料庫,在 Linux Server 上用 phpmyadmin 轉出成 SQL 檔
☆.Step1 在 phpmyadmin 首頁上點選「輸出」

☆.Step2 選妥所要下載的資料庫 –> 轉成 sql 檔

* 預設會存成 localhost.sql , 我們把它改成 compuexam.sql,並放到 /root 底下
root@dns:~# mv localhost.sql compuexam.sql
* 預處理 compuexam.sql 把文字檔內可能會出現錯誤,如「’成功’」變成「’成功’」
root@dns:~# vi compuexam.sql
在 vim 內下取代命令:「:%s/’/’/g」後存檔

* 下載 ols3 提供的轉碼工具
root@dns:~# wget http://myip.tw/itsmw/images/f/fe/B2U.zip

* 執行轉碼作業

1. 把 B2U.zip 解壓
root@dns:~# unzip B2U.zip –> 會解出執行檔 bg5-db2-utf8
2. 轉碼至新資料庫 new_ce
root@dns:~# ./bg5-db2-utf8 compuexam.sql new_ce mysql_passwd
註:使用法為「./bg5-db2-utf8 已匯出的sql檔路徑檔名 新的資料庫名稱 MySQL管理密碼」

轉入 Linux Server 上的 MySQL 資料庫

* 由上述方式製作出的資料庫,其實是預設採用 latin1 字集定義,但骨子裡放的是 utf8 碼的資料庫,使用官方版的 phpmyadmin 會無法正確顯示其文字,不過可以改用筆者修改的 phpMyAdmin解決此一問題。
☆.下載並放至 /var/www
root@dns:~# cd /var/www
root@dns:/var/www# wget http://myip.tw/itsmw/images/f/fb/PhpMyA.zip
root@dns:/var/www# unzip PhpMyA.zip
☆.瀏覽方式   http://your.Linux.server/phpMyA
☆.進入首頁後,先選妥右側語言為: Language: 中文utf8 — Chinese traditional(utf8)
* 再來,只要把 Linux server 上 /var/lib/mysql/new_ce 整個資料夾搬至 Linux 上的 /var/lib/mysql 底下,並 chown 為 mysql.mysql 便完成 utf8 資料庫的製作

進一步轉成符合 MySQL 5.x UTF8 編碼校對之資料庫

接著,我們可以再利用筆者的 phpMyA 輸出 new_ce 資料庫,改寫部分內容,再用官方 phpmyadmin 匯入成標準 MySQL 5.x 版接受的 UTF8 編碼資料庫。以下操作是在 Linux Server 上,作法如下:

* new_ce 資料庫前置處理

1. 用 phpMyA 把 new_ce 資料庫輸出成 localhost.sql
2. 改寫 localhost.sql ,把以下這兩行刪除

CREATE DATABASE `new_ce`;
USE new_ce;
3. 把所有建立資料表最後一行 DEFAULT CHARSET=latin1 改成 DEFAULT CHARSET=utf8

CREATE TABLE IF NOT EXISTS `table name` (


) ENGINE=MyISAM DEFAULT CHARSET=utf8 …;

* 使用官方 phpmyadmin 建立 newutf8 資料庫,示例如下

* 再點選 newutf8 資料庫 –> 【載入】 –> 選 localhost.sql –> MySQL相容模式要選用 MYSQL40 –> 【執行】

* 這樣就可以使用官方 phpmyadmin 來檢視該資料庫,不過本動作可能會導致您舊 PHP 程式碼(SQL 語法太舊,沒加入語系校對)無法讀取該資料庫,所以請慎思是否要這麼做!

網頁轉碼

依本例,不止要搬動 compuexam 為 new_ce 資料庫,還要把其應用程式:/var/www/compuexam/ 底下所有的 PHP 程式轉碼為 utf8 才算完成。

* 先從 Linux Server 把 /var/www/compuexem 複製至 Linux Server 的 /var/www/compuexam
* 在 Linux Server 的 /var/www/compuexam 下建立以下之 shell 檔
root@dns:~# vi /var/www/compuexam/b2utf8.sh

#! /bin/sh
for i in *.php; d☆.
ech☆.”$(iconv -f big5 -t utf8 $i)” > $i
done

* 在 /var/www/compuexam 執行該 shell
root@dns:~# cd /var/www/compuexam
root@dns:/var/www/compuexam# chmod +x b2utf8.sh
root@dns:/var/www/compuexam# ./b2utf8.sh

* 修改所有的 PHP 程式碼,把語言宣告改成 UTF-8,如下所示

<meta http-equiv=”content-type” content=”text/html; charset=UTF-8″ />

注意資料庫密碼

    * 每支 PHP+MySQL 的 PHP 程式碼,必定會有設定資料庫密碼的程式碼,因此,從 Linux Server 轉至 Linux 後,要打開該程式檢視 MySQL 的密碼是否正確

* 另外, PHP 程式碼之資料庫名稱設定也要記得修改

* 若一切就緒,就可以測試瀏覽

發佈留言