南投縣 VMware 與 FreeBSD 範本基本操作

更新時間:2:37 下午 星期四, 十月 18, 2012

ChangeLog


新增1022範本:修正0813範本錯誤,以及南投縣以外縣市也可自行新增 alldomian 使用

1022上課投影片:http://bsd.ntct.edu.tw/doc/README.pdf

前言


有鑑於南投縣沒有一個主要推廣的伺服器作業系統,各校採用的系統混亂不一,套件不常更新影響系統安全,網管教師交接不易等多種問題,剛好今年暑假各校會配發一台伺服器,這邊利用 FreeBSD 9.0 安裝了些學校常用的套件,並請南崗國中退休老師吳棟鏞老協助編寫 script,讓各校可以快速設定系統的環境,加強伺服器基本的的安全性,其最終目的是讓各校不需要煩惱網頁伺服器的問題,不需太複雜的操作,未來也不教這種操作,只需按照說明定期更新套件與系統,會用 nano 編輯文件,做好備份即可,請留意以下的說明與操作或許不是最好的方法,但可能是最簡單的方法

關於 FreeBSD


FreeBSD

FreeBSD 為免費的作業系統,源自於美國加州柏克萊大學的 BSD,擁有純正的 Unix 血統,高穩定性及優異的性能使得 FreeBSD 成為伺服器的首選。

官方網站:http://www.freebsd.org

其他介紹: http://www.twbsd.org/cht/book/index.php?ch=01

實作環境


伺服器:ASUS TS100-E7

作業系統:VMware ESXi 5.0 Update 1(Host OS)

硬碟一:datastore1,ESXi 5 安裝於此,全縣授權軟體也都存放在此,有些學校若沒有看到 datastore1,可能需到伺服器的 configuration >> Storage >> Add storage 去搜尋

硬碟二:vm,存放 Guest OS

vSphere Client 預設登入帳號與密碼:ntct、ntct2012esxi(管理者權限)

作業系統:FreeBSD 9.0-RELEASE(Guest OS)

硬碟 da0:30G,FreeBSD OS 的安裝位置

硬碟 da1:50G,ZFS Pools(tank)的位置,網頁及資料庫存放的位置

硬碟 da2:4G,Swap Files

主要套件:Apache、MySQL、PHP

編輯器:vim、nano、ee

SSH 與 phpMyAdmin 預設登入帳號與密碼:ntct、ntct2012(一般管理者,但可用 sudo 取得 root 的權限)

主要特色:

匯入範本


範本下載: http://bsd.ntct.edu.tw/template/

新 script 下載:http://bsd.ntct.edu.tw/template/script/ //範本已經打包

請先下載 OVA 範本,我們將利用範本檔來佈署新的虛擬機器(Guest OS),範本共有以下兩種

若你已經設定好 ESXi 5 的 IP 位址,可以直接使用瀏覽器輸入 IP 位址來下載 VMware vSphere Client,安裝完畢請執行 VMware vSphere Client,輸入 IP、帳號、密碼後即可連接 ESXi5,這邊我們即將開始佈署 FreeBSD9

開啟 File >> Deploy OVF Template >> 選擇 FreeBSD9_20121022.ova

或選擇 URL 匯入 http://bsd.ntct.edu.tw/template/FreeBSD9_20121022.ova

在 datastore 的部份,請你選擇佈署在 vm,Disk Format 格式選擇 Thin Provision,接下來匯入需要點時間,匯入完成建議先做第一次快照,然後開機

基礎設定 FreeBSD9


Console 登入後開始設定 FreeBSD9 的環境

# cd script //切換到 script 資料夾
# sudo ./ip_setup.sh    //執行 ip_setup.sh
Password:           //輸入密碼來取得 root 權限

To Terminate this program, press Ctrl + C
please input this server's domain name
ex: (ngjh).ntct.edu.tw just input ngjh
ngjh            //例如是南崗國中就填入 ngjh 即可,主機名稱不需填寫

To Terminate this program, press Ctrl + C
please input this server's IP
ex: 163.22.73 (.1) just input 1
1               //,輸入 "1" 代表設定 IPv4 為 163.22.73.1,IPv6 為 2001:288:C221::1,系統會按照學校填入相關資料
                ** 請勿設定跟ESXi相同的IP,會衝突導致無法連線 **

IP setup finished
Please reboot system.
Press any key continue          //設定完畢請手動重新啟動 FreeBSD9

若其他縣市可新增 script 檔內的 alldomain 來符合自己的需求

選擇 FreeBSD9 >> 右鍵 Power >> Restart Guest

使用 PieTTY 遠端登入 FreeBSD9


下載 Pietty: http://ntu.csie.org/~piaip/pietty/

為了呈現中文的環境及方便使用,請依照下面設定

開啟 PieTTY >> 輸入 FreeBSD9 的 IPv4 >> 連線

開啟選項 >> 字元編碼 >> Unicode

開啟選項 >> 亞洲語系修正 >> 取消 Unicode 亞洲寬符號字元

開啟選項 >> 字型 >> 大小選擇 14

開啟選項 >> 詳細設定 >> Window >> Lines of scrollback >> 輸入 20000 >> Apply

接著我們輸入系統的帳號與密碼登入 FreeBSD9

login as: ntct
Using keyboard-interactive authentication.
Password:********

進階設定 FreeBSD9


# cd script
# sudo ./sys_setup.sh //此 script 有中文,所以必須 SSH 遠端連線執行
Password:                   

 Select a choice(1 2 3 4) (Q key to leave)       最近更新日期 2012.10.22
  1)開啟或關閉 Apache Security Module    //開啟或關閉防護模組,預設為開啟,建議開啟提昇安全性
  2)更改學校首頁網址    //設定將虛擬主機轉址至其他網頁
  3)更改系統帳戶(ntct)密碼  //需輸入兩次,但輸入時並不會出現任何符號
  4)更改資料庫使用者(ntct)密碼 //更改 phpMyAdmin 登入密碼
  5)套件更新(請先快照或備份)   //會公告是否更新
  6)更改伺服器IP //與 ip_setup.sh 相同,但為中文
  7)修正 FreeBSD 範本 //修正0813範本
  8)更新 VMware Tools //升級ESXi可能需更新 VMware Tools
  Q)Quit    //大寫 Q 離開

相關網頁連結


首頁網址:

http://虛擬主機IP           //若有需要的話,請設定自動轉址

Moodle:

http://虛擬主機IP/moodle            //登入帳號:ntct 密碼:ntct2012,登入後請至用戶更改

School:

http://虛擬主機IP/school/install.php            //安裝密碼:與資料庫密碼相同,安裝後登入帳號:admin 密碼:admin  

Dyna:

http://虛擬主機IP/dyna/install.php          //安裝密碼:與資料庫密碼相同,安裝後登入帳號:admin 密碼:admin

phpMyAdmin:

http://虛擬主機IP/phpmyadmin            //資料庫登入帳號:ntct 密碼:ntct2012

VMware 的 Snapshot


通常在進行系統及套件的更新,或是有可能影響系統運作的操作前,為了避免失敗後無法快速回復,會進行 GuestOS 的 Snapshot。請留意,快照並不是拿來備份用的,只是為了預防萬一,所以請不要照三餐定時快照,太多的快照影響系統效能,甚至可能導致無法開機,留個一至三份就好(若不必要也盡量不要留)。另外為了加速快照的速度,建議關機後再進行快照。

備份 GuestOS


離線備份:

離線備份的意思就是你必須先把 Guest OS 關機才能備份,匯出的檔案也經過會壓縮,備份速度較快

選擇 FreeBSD9 >> 右鍵 Power >> Shut Down Guest

開啟 File >> Export >> Export OVF Template >> Format 選擇 OVA 格式

匯出需要點時間,依你 GuestOS 檔案大小而定

在線備份:

VM Explorer 提供免費版本使用,你可以在 Windows 安裝此軟體,然後備份至 Widnows 的資料夾,但是有功能上的限定,如 GuestOS 的數量、不能排程備份

下載:

http://www.trilead.com/Download/

ESXi 最佳備份方式:

利用文字介面的 script 檔案來備份在 NFS 上,此方法可設排程,可線上備份,是不需花錢的最佳備份方法,缺點是你必須熟悉文字介面操作,有興趣請上網查詢相關資訊

下載:http://communities.vmware.com/docs/DOC-8760

網頁及資料庫備份


網頁備份:

使用 FileZilla 的 SFTP 協定來登入 FreeBSD9,登入之後切換到 www 資料夾選擇你要備份的資料夾下載至 Windows 即可

下載:http://filezilla-project.org/download.php?type=client

資料庫備份:

登入 phpMyAdmin >> 點選你要備份的資料庫 >> 匯出 >> 執行

以上兩種備份方式都是必須手動,無法自動備份,想自動備份還是得回到文字介面處理,所以就不說明了

script 備份:

納入未來計畫....

關於 ZFS


FreeBSd 9.0 所採用的 ZFS 版本為 ZFS v28,ZFS 有許多強大的功能,但效能好需要硬體上的配合,本次伺服器配發只有預設的 4G(2G x2 ),基本上ESXi至少需要2G(最好有4G),如此一來 GuestOS 是不夠用的,建議 FreeBSD 至少給4G(最好有8G)以提升整體的效能,若加到8G 可以參考以下設定提昇 ZFS 效能

# sudo nano /boot/loader.conf

#如果 FreeBSD 有 4GB,vfs.zfs.arc_min 設定為512M
#如果 FreeBSD 有 8GB,vfs.zfs.arc_min 設定為1024M,以下為 8G 範例
vfs.zfs.arc_min="1024M"

#記憶體 x 0.5 - 512 MB
vfs.zfs.arc_max="3584M"

#記憶體 x 2
vm.kmem_size_max="16G"

#記憶體 x 1.5
vm.kmem_size="12G"

寫入儲存完畢後請重開機

擴充 ZFS


繼續以下操作前請先快照,由於網頁及資料庫皆儲存放於 ZFS Pools,為了方便備份,預設 ZFS Pools 是 50 G,若空間不足時,需要新增虛擬磁碟,之後在合併至 ZFS Pools,合併完畢 ZFS Pools 將會自動擴充

查詢現有容量資訊

# df -h
# zpool iostat -v

假設現在 /tank 的容量不足,由於此 Guest OS 有三顆虛擬硬碟,分別是 da0、da1、da2,那之後新增的硬碟代號就是 da3、da4 等,由此類推。為什麼需要知道代號呢?因為等會擴充會需要知道代號,現在我們先新增一顆 50G 的虛擬硬碟(代號為 da3)

開啟 VMware vSphere Client >> 選擇 FreeBSD9 >> 右鍵選擇 Edit Settings >> Add >> Hard Disk >> Create a new virtual disk >> Disk Size: 50G

接著將 da3 合併到 ZFS Pools,名稱為 tank

# sudo zpool add tank da3
# zpool iostat -v

你可以馬上看到 tank 容量馬上就擴充了

FreeBSD 的效能監控


雖然從 HostOS 可以看出 GuestOS 的效能,但要更精確還是需要採用指令的方式,以下為五秒顯示一次,以下針對 Process 說明

r:數字越大,CPU負載越高
b:數字越大,硬碟負載越高
w:數字越大,表示記憶體不足

# vmstat -w 5

你也可以參考使用 Veeam ONE Free Edition 來協助監控

更新 FreeBSD 套件


此項步驟暫不使用,若有需要更新會再另行公告

更新 FreeBSD 系統


此項步驟暫不使用,若有需要更新會再另行公告

其他縣市使用


1022範本打包了新的 script,而為什麼 ip_setup.sh 輸入學校名稱即可將環境快速設定完畢,原因在於 script 裡面有個 alldomain 檔案,南投縣已外縣市可以透過自己的 alldomain 來符合自己的需求

# cd script1022     
# rm alldomain
# ee alldomain      //編輯自己的 alldomain,請參考下面範例
# sudo ./ip_setup.sh    //開始快速設定

alldomain 共有五個欄位

學校名稱,IPV4start,IPV4end,DOMAIN_NAME,IPV6

範例一:
test,163.22.128.0,163.22.128.255,test.ntct.edu.tw,2001:288:C200

範例二(前半個 ClassC):
test,163.22.128.0,163.22.128.127,test.ntct.edu.tw,2001:288:C200

範例三(後半個 ClassC):
test,163.22.128.128,163.22.128.255,test.ntct.edu.tw,2001:288:C200

第一個欄位:方便辨識的一個名稱即可,通常與第四個欄位搭配

第二個欄位:IPv4 起始 IP

第三個欄位:IPv4 結束 IP,script 會將此 IP 減 1 當做 V4 Gateway

第四個欄位:學校的 domain,script 會將此欄位的第一個名稱當做學校名稱(ip-setup.sh會使用到)

第五個欄位:IPv6 位址,script 會將此欄位加上 ::FFFF 當做 V6 Gateway

以上的網路設定將會寫入在 rc.conf ,若不符合需求可自行修改 /etc/rc.conf,其他相關設定會依照執行 ip_setup.sh 所填入的 IPv4 位址來修改 moodle、school、dyna、phpMyAdmin等相關的參數

FAQ


問題一、為什麼我在學校以外的地方無法用 SSH 與 phpMyAdmin 登入 FreeBSD9?

答:為了安全性考量,FreeBSD9 系統只限定從學校端登入,例如 FreeBSD9 的 IP 位址設定成 163.22.87.1 ,意味著你只能從 163.22.87.1 ~ 163.22.87.126 連接 FreeBSD9(如果你是半個 Class C的學校)。建議可以在伺服器上建立一台 Windows 方便遠端桌面

問題二、我可以把舊網頁及資料庫轉移到 FreeBSD9 上嗎?

答:不一定,要看情況。如果原本的伺服器網頁及資料庫採取 BIG5 編碼,或是網頁應用程式如 XOOPS 版本太舊,不支援 PHP 5.3,那會建議你不要轉移,可能不會轉移成功,請直接在 DNS 設定 www 指到新伺服器,之後再利用轉址方式到舊伺服器

問題三、為什麼不提供 BIG5 的環境?

答:由於 BIG5 有亂碼的問題,現在很多網頁程式也不再提供 BIG5 的網頁程式,建議你逐漸轉移到 UTF-8 的環境,教網中心人力有限無法再維護 BIG5 分支的套件更新。

問題四、路徑相關說明

名稱路徑
使用者家目錄/home/ntct
網頁資料夾/home/ntct/www (/usr/local/www/apache22/data)
Moodle/home/ntct/www/moodle (/usr/local/www/apache22/data/moodle)
Moodledata/usr/local/www/apache22/moodledata
School/home/ntct/www/school (/usr/local/www/apache22/data/school)
Dyna/home/ntct/www/dyna (/usr/local/www/apache22/data/dyna)
phpMyAdmin/usr/local/www/phpMyAdmin
資料庫/var/db/mysql
日誌目錄/var/log/

轉移網站及資料庫流程-以 Dyna 動態網頁模組為例 (UTF-8)


一、登入來源主機

二、打包或壓縮網頁資料夾(利用 tar 或 zip,不打包也行但速度較慢)

三、利用 FileZilla 下載網頁壓縮檔至本機 (也可利用 scp 指令直接傳至 FreeBSD)

四、利用 FileZilla 的 SFTP 上傳將網頁至 FreeBSD(預設登入後為 /home/ntct)

五、解壓縮網頁至 www 資料夾(/home/ntct/www)

六、切換至網頁資料夾(如:/home/ntct/www/dyna)

七、確認權限 chmod -R 777 data

八、匯出來源主機資料庫

登入 phpMyAdmin >> 左側點選你要匯出的資料庫(如:dyna) >> 匯出 >> 格式選擇 SQL >> 執行 >> 選擇你要儲存的位置(檔名如:dyna.sql)

九、利用 NotaPad++ 編輯 dyna.sql(將舊的網址全部一次取代成新的網址)

範例一:舊網址為 "www.xyz.ntct.edu.tw/dyna",全部取代為新網址 "虛擬主機IP/dyna"

範例二:舊網址為 "www.xyz.ntct.edu.tw",全部取代為新網址 "虛擬主機IP/dyna"

十、匯入新的 dyna.sql

左側點選你要匯入的資料庫 >> 輸入 >> 選擇要匯入的檔案 >> 執行

十一、設定 config.inc.php(依照新環境設定,請勿照抄)

    $DB_HOSTNAME    = 'localhost';
    $USE_DB         = 'dyna';
    $DB_USERNAME    = 'ntct';
    $DB_PASSWD      = 'ntct2012'
    $SELF_URL       = 'http://虛擬主機IP/dyna/';
    $SELF_PLACE     = '/home/ntct/www/dyna/';

十二、強烈建議取消顯示文教新聞區塊,因有可能造成網頁瀏覽速度變慢

http://虛擬主機IP/dyna/webs/area.php    //請依照各校網址

十三、連結首頁 http://虛擬主機IP/dyna 確認各項功能是否正常