2013-02-17

Ubuntu 安裝和設定 Vagrant (上)

為什麼會需要用到 Vagrant 呢?像阿舍為了方便和節省建置開發環境的時間,就會用虛擬機器來安裝和設定所需的開發環境,然後,把它備一份起來,之後,有需要時,再用這個備份來建立一個新的開發環境,這種方式雖然有省到時間,不過,阿舍還是得在每個虛擬機器裡都安裝一套 Eclispe 來用,而且,程式碼也是都要放在不同的虛擬機器裡才行哩 ! 在管理上,有一些些的不方便哩 !

Vagrant 運行方式示意圖
( Credit http://www.digitalforreallife.com)

而這個 Vagrant 的好處,就是可以把程式碼放在 Host 裡,然後,執行時,用虛擬機器來執行,像是開發網頁程式的時候,可以把網頁和程式碼放在 Host 的家目錄下的一個資料夾,測試的時候,Vagrant 就可以讓這些網頁從虛擬機器來執行,所以,所有的專案的程式碼都可以放在 Host 上來管理,而且,開發用的工具軟體也就只需要在 Host 上安裝一套,因此,可以大大的提高開發的效率哩 !

另外,在同一台機器上,所有的專案都可以共用同一個虛擬機器,但是,每個專案都可以有自己的執行環境,因為 Vagrant 可以透過設定檔來動態決定所啟動的虛擬機器的執行環境和安裝的套件,因此,採用 Vagrant 所建立的開發環境就會具有很高的可攜性,開發人員就可以很容易的在不同的電腦來建立相同的執行環境哩 !

Vagrant 的安裝方式不難,但是,千萬別學阿舍一樣懶惰,想要偷機,就直接用下面的指令來安裝,雖然,下面的指令也是可以安裝好 Vagrant,不過,使用這種方式安裝 Vagrant 會移除現有的 Virtualbox 版本來安裝比較舊一點點的版本哩 ! 所以,請千萬別像阿舍一樣衝動哩 ! (註:Vagrant 目前只支援 VirtualBox)

sudo apt-get -y install vagrant

阿舍試過,同時,也是官網上建議的方式,就是用下面的指令來安裝,既安全又快速,不過,就是在安裝前,要先確定有安裝過 RubyGems 套件才行,如果還沒安裝過的話,請用下面指令來安裝  RubyGems 套件囉 !

sudo apt-get install rubygems

有安裝過或是剛安裝好  RubyGems 套件後,就可以直接用下面的指令來安裝 Vagrant 了哩 ! 

sudo gem install vagrant

上面這行指令就可以把 Vagrant 安裝到好,不過,安裝好的 Vagrant 並沒有什麼用途,因為 Vagrant 並不能直接使用現有的 VirtualBox 虛擬機器,而是要另外下載稱為「Box」的 Vagrant 專用的虛擬機器,這些「Box」其實都是 VirtualBox 的虛擬機器的匯出檔,但是,都是有經過 Vagrant 的「Packaging」程序來完成 Vagrant 的需要的,所以,如果有想要把自己的虛擬機器來套到 Vagrant 使用的話,請參考這裡的說明來設定囉 !

不過,如果你是剛開始使用 Vagrant 的新手的話,阿舍就比較不建議一開始就自己做 Box,還是先用別人做好的 Box 會比較好入門,等熟悉 Vagrant 的運行方式及 Box 的組成方式之後,再來自己弄,會比較容易成功哩 ! 所以,一開始,請到這裡來找現成的 Box 使用囉 !

找到想要用的 Box 之後,請用下面的指令來下戴 Box,下面這行指令中的「Ubuntu1204-64」是阿舍幫這個要下載下來的 Box 所取的名字,之後,各個專案要使用這個 Box 來建立虛擬機器的時候,就會用到「Ubuntu1204-64」這個名字,而指令最後面的網址,則是 Box 的來源網址,執行,Vagrant 會把 Box 下戴到家目錄下的 「.vagrant.d/boxes/Ubuntu1204-64」資料夾裡。

vagrant box add Ubuntu1204-64 http://files.vagrantup.com/precise64.box

每台電腦上可以下載多個 Box,然後,在每個專案的設定檔裡來指定要使用的 Box,不是只能有一個 Box 而已,安裝好 Vagrant 和下載好 Box 之後,接下來,就是要開始建立專案來使用Box 了... 待續 ...


參考資料
http://docs.rubygems.org/read/chapter/3
http://docs.vagrantup.com/v1/docs/index.html
http://docs.vagrantup.com/v1/docs/getting-started/index.html

推薦閱讀


有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁

沒有留言 :

張貼留言

歡迎留言提問和討論 .... 😁