2015 新版 NAS4Free 的 jails 管理方法實戰 - Finch

User Rating: 0 / 5

Star InactiveStar InactiveStar InactiveStar InactiveStar Inactive
 

在之前初次接觸 NAS4Free 時發表了 NAS4Free 安裝 Jails 實戰教學 過了2年後,現在有更簡便的管理方式-Finch 來建立和管理 NAS4Free 上的 jail. 在參考了官方教學文章和自己實地演練過,整理出以下的實戰教學讓大家能讓 NAS4Free 發揮更多的功能。此外,在官方論壇上有另一個圖形化的 jails 管理方法叫 thebrig (GitHub), 但 thebrig 缺乏管理,最近更新的版本又是超過1年以上。我們就使用 Finch 做此實戰的範本。

 

系統資訊

System information  
Hostname nas4free.local
Version 9.2.0.1 - Shigawire (revision 972)
Build date Mon Apr 28 02:43:01 CEST 2014
Platform OS FreeBSD 9.2-RELEASE-p4 (kern.osreldate: 902001)
Platform x64-embedded on Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz
System Oracle Corporation VirtualBox
System bios innotek GmbH version: VirtualBox 12/01/2006

 

 

Virtual Box 硬碟組合設定

 

Drive 0: 4G for installation

Drive 1: 20G for Storage (格式化成 UFS)

Drive 2: 12G for Jails (格式化成 UFS)

 

Disk Management 磁碟管理一覽

Device Device model Size Serial number Controller Controller model Standby time File system Status
ada0 VBOX HARDDISK 4096MB VB8dfa1df2-2d372af2 ahcich0 Intel ICH8M AHCI SATA controller Always on UFS ONLINE
ada1 VBOX HARDDISK 20480MB VBd7b48f8c-adbe5cfc ahcich1 Intel ICH8M AHCI SATA controller Always on UFS ONLINE
ada2 VBOX HARDDISK 12288MB VBbfb9786b-7e9f62d0 ahcich2 Intel ICH8M AHCI SATA controller Always on UFS ONLINE

Mounting 磁碟掛載點

 

 

Disk File system Name Description Status
/dev/ufsid/54b6b6ae049ffa9c (ada1p1) ufs  Storage    OK 
/dev/ufsid/54b6b6bc5a8ff378 (ada2p1) ufs  Jails    OK 

 

 

有關 RAID  ZFS 的設定我就不多介紹了。如果有問題請來信指教或參考其它管理磁碟陣列的文章。

以上面的設定,Jails 有個獨立的12G空間。記得如果要把 Jails 獨立出在某個碟碟上,內容量一定要超過8G。如果照以前的切割和掛載法,那就會是下面的掛載點:

 

Jail mounting path: /mnt/Jails

 

下載和準備 Finch

 

  1. 首先先登入到 nas4free 的 terminal console 裡。如果要 ssh 進入,要先到設定網頁裡開啟 ssh, 也要開放 root 權限。
  2. 預設的登入帳號是 username: root password: nas4free
  3. 先打入以下指令來準備和下載 finch 的安裝程式
 /bin/sh
alias finch-bootstrap="SSL_NO_VERIFY_PEER=YES fetch -q -o - http://git.io/HxXrsw | sh -s --"
finch-bootstrap --help

* 小提醒:

  • finch-bootstrap --help 可以看到其它安裝的選項。
  • 在一般的情形下,接受預設值就好了。

安裝 Finch

* 注意: 現在要確定 Finch 要安裝的位置,如果參照之前的掛載點,那麼 Jails 分割區就會在 /mnt/Jails 裡。請把 "/path/to/finch" 改換成 /mnt/Jails

安裝語法如下:

finch-bootstrap install --dir "/path/to/finch"

小插曲: 我在安裝時會遇到以下錯誤說我的 /mnt/Jails 目錄不是乾淨的。可能是我之前試過重新 format 也不完整的結果。如果你也有遇到一樣的問題,可以在以上的安裝語法後加入 --force 就可以強制安裝了。

ERROR  *********************************************************************
The directory "/mnt/Jails" already exists and is non-empty.
It is not WISE to mixup a fresh new FreeBSD installation with other files.
The better idea would be to specify an EMPTY folder and install into that.
* Querying filesystem at "/mnt/Jails"
Filesystem type is "ufs" for this volume. FreeBSD supports installations on
the ufs filesystem. So long as it's not a slow usb flash drive. HDDs & SSDs
only please.
Checking administrator accounts...
Done.

 

設定其它管理者帳號和權限

Finch 會自動建立在 Jails 裡的 root 帳號。但如果需要開放其它的使用者來管理 Jails 和使用 Finch , 可以參考以下步驟:

  • 登入到 NAS4Free 的網頁管理介面,再選取 Access -> Users
  • 選取欲加入管理群的帳號,選 Edit User
  • Group 群組選 wheel
  • 登入介面(login shell) 選取 bash
  • 選 Save --> Apply changes 來完成儲存和套用

 

加入關機和關機時自動執行的程式

  • 登入到 NAS4Free 的網頁管理介面
  • 到 System|Advanced|Command Scripts
  • 按 + 並加入這 POSTINIT 語法
/path/to/finch/etc/finch/postinit
  • 再按 + 加入這 SHUTDOWN 語法
/path/to/finch/etc/finch/shutdown

小提醒: 請記得把 /path/to/finch 改成你選取的路徑。如果是照參本篇教學,那路徑就會是以下例子:

/mnt/Jails/finch/etc/finch/postinit
/mnt/Jails/finch/etc/finch/shutdown

 

用 Finch 安裝FreeBSD

跟之前的教學一樣,最後要 buildworld. 就是在 NAS4Free FreeBSD 系統下給 Jails 專用的子 FreeBSD 系統。Finch 程式己經把必要的步驟都自動化了。所以要執行剛才套用的開關機程序需要重開機才會自動啟動。

  • 登入到 NAS4Free 的網頁管理介面
  • 選 System --> Reboot

 

查看 Finch 安裝 FreeBSD 系統的進度

 

重開機會來後,Finch 就會開始安裝系統了,但第一次安裝要花費 20 分鐘到 1 小時的時間。要查看現在安裝的進度,可以鍵入以下 CLI

tail -99999 -f /path/to/finch/var/log/finch/install.log

安裝完成後就會有以下訊息

 

Stopping finch.
Updating finch scripts.
finch updated on: Tue Jan 13 02:31:49 UTC 2015
finch: 1.28, 22879731b9, Wed Dec 31 17:33:56 UTC 2014.
freebsd: FreeBSD-amd64-9.2-RELEASE
Starting finch.

Update complete.
* Now logout / log back in, or type ". /etc/profile".
+ /mnt/Jails/usr/sbin/finch restart
Stopping finch.
Starting finch.
+ set +x
******************************************************************************

Your Finch FreeBSD Installation has finished.

  * Installation took 1 hours, 58 minutes, 37 seconds.

  * Attachment: "finch-install.log.gz".


******************************************************************************
You must now follow the "Post Install Steps" as shown on the Finch website.

  >>> http://dreamcat4.github.io/finch/install/#toc_12 <<<


******************************************************************************
finch installed on: Tue Jan 13 02:32:14 UTC 2015
finch: 1.28, 22879731b9, Wed Dec 31 17:33:56 UTC 2014.
freebsd: FreeBSD-amd64-9.2-RELEASE

 

NAS4Free, Finch 和 Jail 的關係圖

下面的意示圖大概說明 NAS4Free, Finch 和 jail 的關係。有點像虛擬環境,只要各自的 jail IP 位址不衝突即可。但也是看硬體的容量夠不夠支援多個 jails.

 

建立新的 Jail

當你看到以上安裝完成後的訊息,就可以開始建立新的 jail

# 首先以root 身份進入 Finch 的 chroot 環境

sudo finch chroot

# 給jail指定一個 IP 位址 (建議和 NAS4Free 在同一個子網路下)

 jail_ip="192.168.1.201"

# 設置匹配的本地端(localhost)回圈位置給 'lo0'

 jail_loopback="lo0|127.0.0.1"

# 設定 jail 的服務器名,官方教學是用 nginx 為例,我們就尊照

 jailname="nginx"

# 以下 qjail 語法可以建立一個新的基本 jail

qjail create -4 "$jail_ip,$jail_loopback" "$jailname"

* 小補充:  -4 的意思是 IPv4, 另外,你也可以用以下的語法一口氣建立 jail, 但之後的 $jailname 就要改換成你取的 $jailname 如 nginx

** 方法二: qjail create -4 "192.168.1.201,127.0.0.1" "nginx"

# 開啟 unix sockets 網路接口

 qjail config -k "$jailname"

 

第一次登入到新建立的 jail 裡

# 起始剛建立的 jail

 qjail start "$jailname"

# 以 root 身份登入到 jail 的終端界面裡

 qjail console "$jailname"


# 另外可以設 root 帳號的秘碼,但此項是額外

passwd


原則上利用 Finch 來建立 jails 的部份到這裡就完成了。你可以用子網路裡的電腦來 ping 剛才給予的網址 192.168.1.201. 應該是會回應。接下來就是附加教學在 jails 裡安裝 nginx 網頁伺服器。

 

額外教學: 安裝 nginx 網頁伺服器

接下來要示範的是在剛才建立的 nginx jail 裡安裝nginx網頁服務器所需要的套件。其它的服務器也可以用類似做法。 如果是在 FreeBSD 的 ports 裡,做法就會很簡單。其它可以加到 jails 的服務比如 AirVideo Server, jdownloader, 和 xmbc 類。

 

方法1 pkg:

# 更新本地套件

 pkg update -f 

# 用 pkg 方法安裝 nginx

 ASSUME_ALWAYS_YES="yes" pkg install "nginx"   

 

方法2 利用 FreeBSD ports:

#更新 ports 的結構

portsnap fetch  
cd "/usr/ports/www/nginx" && make "config-recursive" "install" "clean"

 

# 開啟 jail 裡的 rc.d 讓 nginx 會在開機時自動執行

 sysrc "nginx_enable=YES"

 

# 離開 nginx jail

 exit

# 重新起動 nginx 的 jail. 順便測試 rc.d 的語法有沒有被執行

 qjail restart "$jailname"

# 測試 nginx 服務器是否正常運作

 fetch -o - "http://$jail_ip" 

或者用另一台電腦在瀏灠器直接打入 jail 的網址

http://$jail_ip

如果看見 nginx 的歡迎面畫面,就成功了。 

 

延伸參考文件

qjail 的指令介紹

http://dreamcat4.github.io/finch/qjail-reference/

 

nginx 相關的指令 (FreeBSD 上)

# 起始 nginx

/usr/local/etc/rc.d/nginx start

# 停止 nginx

/usr/local/etc/rc.d/nginx stop

# 重新起動

/usr/local/etc/rc.d/nginx restart

 

參考文件

http://dreamcat4.github.io/finch/

 

Tags: , ,

Please publish modules in offcanvas position.