在生產部門中,系統管理員通常因太忙而沒有足夠的時間來處理開發者可能發出的每個請求。管理員沒有時間去修改 Apache 的配置文件,或按開發者希望的速度重新啟動 mysql 守護程序。而且,向 Web 開發者賦予對服務器(甚至主要用於測試的服務器)根用戶的訪問權通常都是不切實際的,這是因為某一個開發者所作的修改可能會影響到其它開發者,進而導致整體生產力下降。唉,讓每個開發者都擁有獨立的測試機器通常也不太可能。
然而,如果您正在使用 Linux 環境,您就可以將機器設置為讓多個開發者同時享有管理訪問權,而不會影響其它開發者所在的環境。這被稱為 freeVSD(Virtual Server Daemon,虛擬服務器守護程序),它還允許一個 Linux 服務器有多個“虛擬”服務器。使用 freeVSD 能夠讓公司進一步充分利用其資源,同時讓每個開發者或一組開發者仍擁有自己的環境。雖然開發 freeVSD 的主要目的是托管公司,您仍然會發現它對生產環境可能也大有好處。
freeVSD 是什麼?
當您聽說“虛擬服務器”時,您可能會聯想到 VMware 之類的軟件,它會虛擬出一個完整的 x86 機器,您可以安裝任何希望使用的操作系統。
freeVSD 並沒有達到這個程度。它只是允許您賦予每個虛擬服務器它自己的 HTTP 服務器、IP 地址和文件系統等等。這些服務器仍然在原來的操作系統下運行,但它們並不共享同一個文件系統,而且每個虛擬服務器都可以有自己的管理員(偽根用戶),這種用戶幾乎享有與真正的根用戶相同的特權。這是通過創造性地使用 chroot 實現的。當然,這樣做可能會有一些嚴重的安全性隱患 — 所以,如果您真的安裝了 freeVSD,那就一定要閱讀分發包中的 security.txt 文件所給出的建議並加以實施;還要查看 freeVSD FAQ(請參閱本文後面部分的 參考資料,那裡有相關的鏈接)中與安全性有關的信息。
舉例來說,如果您在一台機器上有四個虛擬服務器,您就可以重新引導一個單獨的 Apache 實例,而不會影響其它服務器。如果需要,其中一個開發者甚至可以有與其它開發者完全不同的 Apache 配置。如果某個享有管理員訪問權的開發者意外地清除了一個虛擬服務器上的一半文件系統,其它虛擬服務器將不會受到影響。開發者甚至可以按照向常規 Linux 服務器添加用戶的相同方式向虛擬服務器添加用戶 — 但添加的用戶只會被目標虛擬服務器識別,真正的 Linux 主機或者其它任何虛擬服務器都無法識別該用戶。其實,它完全是另外一個供開發者使用的 Linux 服務器。
最好的一點是,在 GNU General Public License 的許可之下,您可以免費獲取 freeVSD(這也是它名稱的由來......)(請參閱 參考資料),這樣您不用支付任何許可費用,就能夠部署一個或五十個,甚至上千個使用 freeVSD 的服務器。
使用 freeVSD 可能會碰到的一些問題
現在,freeVSD 特別針對 Red Hat 6.1 和 Red Hat 7.x 進行了修改。根據 freeVSD 站點上的說法,Red Hat 7.x 仍然處於“實驗”階段,所以,您試圖在更新的 Red Hat 發行版上安裝 freeVSD 時可能會碰到一些問題。我正在一台安裝了 KRUD 7.2(請參閱 參考資料)的服務器上使用 freeVSD。KRUD 7.2 是一種幾乎與 Red Hat 7.2 相同的分發包。我不得不從源代碼安裝 freeVSD,因為從 RPM 安裝不合適。
按照 freeVSD 文檔的描述,配置文件應該在 /etc/vsd 中,但(至少我的情況是)它們實際上是在 /usr/local/etc/vsd 中。我還是選擇了從源代碼安裝,您的實際情況也會有所不同。
支持的服務
由於虛擬服務器運行的方式與真正的 Linux 服務器有一點不同,所以有一些程序在虛擬服務器下將不能運行 — 或者說不能正確運行。freeVSD 並不能處理您可能希望在服務器上使用的每個程序,所以,在決定您希望開發者訪問的目標時,一定要將這個因素考慮進去。
舉例來說,DB2 不在測試過的能夠使用 freeVSD 的應用程序之列,所以它可能不會在 freeVSD 虛擬服務器上運行。您仍然可以在原來的操作系統下運行 DB2,但它可能不會在任何虛擬服務器下運行。這並不是說 freeVSD 只支持一個或兩個應用程序,我只是要指出某些應用程序可能無法在虛擬服務器上運行。也可能它們能夠完全正常運行 — 只是還沒有經過測試。您可以在 freeVSD 站點(請參閱 參考資料)找到經過測試的應用程序的一個列表。
最常用的 Linux 應用程序 — Apache、MySQL、PostgreSQL、PHP、Perl、BIND、Sendmail 還有很多其它應用程序 — 都經過了測試,能夠在 freeVSD 下順利運行。不能僅僅因為一個應用程序沒有經過測試就斷定它不能在 freeVSD 下運行,關於這一點我已經說得夠多了。如果您測試了一個不在 freeVSD 站點上列表中的服務,而它能夠正常運行,請您一定要將這個消息告訴其他開發者,讓他們知道您已經成功運行了這個服務。
安裝 freeVSD
我在這裡不會浪費時間講述安裝過程的每個步驟,因為您將發現 freeVSD 文檔中已經非常詳細地描述了這些步驟。不過,我會快速地簡述一些基本信息。
要安裝 freeVSD,您需要有一台只安裝了 Red Hat 6.2 或 7.x 的服務器。您還需要在 /home 目錄下(或您決定保存 vsd 目錄的任何地方)有至少 750 MB 的可用空間,以及 32 MB 的 RAM 和兩個 IP 地址。這當然僅僅是安裝的最小系統要求。對於任何重要的開發測試,我都不會推薦這種安裝配置。
您可以選擇從源代碼或者從 RPM 進行安裝。如果您安裝了 Red Hat 6.2 或 7.x 的標准版本,那麼您就可能希望從 RPM 進行安裝。一定要閱讀安裝指示,因為按正確的順序安裝 RPM 非常重要。
在安裝後,要了解 freeVSD 守護程序(vsd)是否已安裝好並已經運行,請運行 netstat -lt 看看 vsd 是否出現。如果 vsd 出現,那麼情況一切正常。如果沒有出現,就請開始診斷問題,查看您是否正確完成了所有步驟(我說過安裝 RPM 的順序非常重要吧?)。要進一步診斷問題,請查看 freeVSD FAQ 或搜索 freeVSD 郵件列表( 參考資料中列出了到這兩者的鏈接)。
安裝之後,不會有任何虛擬機器就緒,直到您自己創建一個:在安裝之後運行的只有偵聽請求等的 vsd 守護程序。
如果您打算使用 freeVSD,我建議您花幾天時間去進行准備和運行工作。除非您在機器上只安裝了 Red Hat 6.2 或 7.x 的標准版本,否則您很可能希望在機器上安裝 freeVSD 之前對系統進行一些干淨徹底的安裝工作。如果您正在使用一個完全不同的分發版,您可以在 Red Hat 之上安裝 freeVSD 機器,也可以為了讓 freeVSD 在其它的分發版上運行而准備奮戰。(如果您的確打算這麼做,那就一定要通知使用 freeVSD 的其他人,讓他們知道您的使用情況如何。)如果您特別具有社區精神(而且筆記做得很好),您甚至還可以考慮根據您的使用情況撰寫一篇簡短的使用指南。
創建虛擬服務器
安裝 freeVSD 之後,您就可以創建虛擬服務器了。您可能不知道虛擬服務器的最大數量是多少 — 根據 freeVSD 文檔所示,大約為 250 個。這個數字應該足夠了。如果這還不夠,您只要添加另一個 Linux 主機就行了!
要創建虛擬服務器,我們將使用 vsdadm 實用程序和 vs_create 命令。要創建新的虛擬服務器,您需要指定虛擬服務器的主機名、IP 地址、虛擬服務器的全限定域名、要分配給服務器的用戶 ID 以及用來創建虛擬服務器的 skel 的名稱。(請注意,如果您願意,還可以從 freeVSD 站點下載預先構建好的 skel。請參閱 參考資料,那裡有關於這些的鏈接。) 如果您正在使用限額支持,您還可以指定從主機磁盤空間分配出來的磁盤空間的大小。
所以,要創建虛擬服務器,使用的命令應該和下面的差不多:
# vsdadm vs_create host.yourdomain.org virtual X.X.X.X 50 default
這裡只是扼要地描述一下, vs_create 之後的第一個字段是虛擬服務器駐留所在的主機(換句話說,也就是運行 freeVSD 的機器)的名稱。下一個字段是虛擬服務器的主機名。第三個字段是您為虛擬服務器指定的那個 IP 地址。我在 freeVSD 文檔中沒有看到任何有關 IPv6 支持的信息,所以我不能確定您是否可以在 freeVSD 上使用 IPv6。IP 地址後的下一個字段是要分配的用戶標識數目,最後一個字段是用來創建新虛擬服務器的 skel。這幾項 必須按照正確的順序輸入。
要完成操作,請運行 vsd-vsbatch.pl 腳本,它也應該在 /usr/local/sbin 目錄下。一旦完成了這一步,您的 /home/vsd/vs 目錄下就會多出一個名為“virtual”的新目錄,新目錄的名稱也可以是您為虛擬服務器選擇的其它任何名稱。
在創建了虛擬機器之後,您就可以使用 bevs 直接登錄到虛擬機器了。您將以管理員用戶的身份登錄,然後就可以開始在虛擬環境中工作了。
管理虛擬服務器
freeVSD 的管理命令很多,我不會試圖在這裡一一贅述。在這一部分,我們將看看您需要了解的一些常用命令。您將在 /usr/local/sbin 中找到使用 freeVSD 的實用程序。
您可以使用一些基於 Web 和 基於 Windows 的 GUI 工具來管理 freeVSD,但是出於本文的目的,我將重點描述命令行工具。如果您希望了解 PHP Web 管理工具,您可以在 freeVSD Web 站點(請參閱 參考資料)找到相關的信息。
刪除虛擬服務器。我們已經討論了如何使用 vsdadm 來創建虛擬服務器。如果您已經決定要刪除虛擬服務器,請使用 vs_delete 命令。它的語法如下所示:
# vsdadm vs_delete real.host.com virtual 請注意,您需要運行 vsd_vsbatch.pl 來進行修改。這將從 /home/vsd/vs 目錄刪除虛擬服務器的文件系統並關閉帳戶。所以,如果您碰巧在虛擬服務器中有重要文件,在刪除帳戶之前就一定要將這些文件備份起來。
更多的請看:http://www.QQread.com/windows/2003/index.Html
啟動和停止虛擬服務器。要啟動或停止虛擬服務器,請使用 vsboot 命令。舉例來說,要啟動一個名為“fluffy”的虛擬服務器,您可以使用:
# vsdadm vsboot -start fluffy要停止上面這個服務器,可以使用:
# vsdadm vsboot -stop fluffy如果要重新啟動它,您可以使用:
# vsdadm vsboot -restart fluffy如果您省略了虛擬服務器名,命令就會對所有虛擬服務器生效。
安裝軟件包。您可以用管理員身份在虛擬服務器中編譯程序的源代碼,從而實現在虛擬主機上安裝軟件包, 也可以將 RPM 從主機服務器安裝到虛擬服務器的目錄結構中來實現安裝軟件包的目的。虛擬服務器不支持從 RPM 安裝軟件包。舉例來說,如果您希望將軟件包安裝到虛擬服務器“fluffy”上,您可以使用:
# rpm -Uvh --force --root=/home/vsd/vs/bob packagename.rpm
重新啟動服務。要在服務器上重新啟動服務,而不是重新啟動服務器本身,請使用:
# vsdadm vs_reboot realhost.yourdomain.com fluffy這樣將重新啟動“fluffy”上的服務 — 與“vsboot — reboot”所做的差不多。
更改用戶密碼。如果您需要在虛擬服務器上修改用戶密碼,您可以不必登錄到虛擬服務器中就完成修改,使用的命令如下所示:
# vsdadm user_chpass realhost.yourdomain.com fluffy admin oldpass newpass
總結
本文是對 freeVSD 的一個相當簡短的概述。您已經看到了,在某些開發環境中,使用 freeVSD 可能非常有用:您可以將一個健壯的服務器轉換成有著相同服務的多個一模一樣的開發服務器以供隨意使用,也可以將每個服務器定制為適合開發者的需求。一旦您將 freeVSD 定制為適合您的需求後,就可以馬上輕易地衍生出很多新的虛擬服務器了。由於 freeVSD 是,怎麼說呢, 免費的,那麼就試著用用,看看它是否適合您的工作室。
原文鏈接:http://www-128.ibm.com/developerworks/cn/linux/server/freevsd/index.html