最後更新日期:2020 年 07 月 24 日
Table of Contents
一、使用 Vagrant 的目的
1、建立一致的開發環境
例如 Laravel 的 Homestead,可以讓 mac 和 win 系統的開發人員,在程式開發時期,能有一致的開發環境。
2、練習不同的作業系統及網路服務管理
在沒有這一類的虛擬機器管理工具之前,就只能在多台電腦安裝作業系統,使用 Vagrant + VirtualBox,可以在同一台電腦內,模擬多台系統進行測試。
二、軟體安裝
軟體需求
1、Git
2、Virtual Box
3、Vagrant
安裝的注意事項
1、請用「管理員權限」來操作虛擬機,否則在建立檔案的相關操作時,可能會出現問題。
2、修改 windows/system32/drivers/etc/hosts 時,也要用「管理員權限」來開啟文字編輯器。
3、BIOS 的 Virtual Technology 功能要記得打開,否則在啟動虛擬機器時,會卡在 ssh 的階段。
在 win7 安裝的必要軟體前置
1、PowerShell 版本必需要更新 – 在 Windows 上安裝 PowerShell
2、而安裝新版的 PowerShell,必需要有以下前置軟體
軟體安裝流程
1、安裝 git
請先安裝 Git
以下指令都是在 git bash 中執行
2、安裝 VirtualBox
VirtualBox 官方網站
Vagrant 其實是需要依附在虛擬機器程式,可以是 VirtualBox ,也可以是其他的程式。Vagrant 只是提供了一些好用的指令來方便我們管理我們的虛擬機器。所以我們得先安裝 VirtualBox
3、安裝 Vagrant
4、系統影像檔(box)安裝
4-1 從 Vagrant Cloud 直接安裝
Vagrant Cloud 上有很多不同用途的系統影像檔可以使用。我們可以透過以下指令來下載系統影像檔:
# 用法:vagrant box add {BoxName}
# 安裝 Homestead 的 Vagrant box(系統影像檔)
vagrant box add laravel/homestead
# 又例如我們要安裝 CentOS 7 的 Vagrant box
vagrant box add centos/7
4-2 下載影像後安裝
這通常會使用在一些比較高度客製化的環境,先下載 box 的 zip 檔,解壓縮後,再透過其中的 metadata.json 來安裝
vagrant box add metadata.json
安裝完成後,系統影像檔會放在 使用者目錄下的 .vagrant.d/boxes/ 下,例如:
c:/User/supervisor/vagrant.d/boxes/centos-VAGRANTSLASH-7/centos-VAGRANTSLASH-7/
5、Vagrant 設定
5-1 使用配合的 vagrant 環境設定 – 以 Homestead 為例
# 下載 Homestead 的 vagrant 設定
git clone https://github.com/laravel/homestead.git ~/Homestead
cd ~/Homestead
bash init.sh
5-2 自訂設定環境
vagrant 的設定檔是以 box 為基礎,我們先建一個目錄,再執行 vagrant init 指令來產生基本的設定檔。
# 我們針對前述所下載的 centos/7 來建立其設定檔
mkdir vagrant_centos7
cd vagrant_centos7
vagrant init centos/7
這樣我們就可以自動產生 centos/7 這個 box 的設定檔。
6、啟動 vagrant box
6-1 啟動 Laravel/Homestead
cd ~/Homestead
vagrant up
6-1 啟動 Centos/7
cd vagrant_centos
vagrant up
請注意,一定要在設定檔目錄下執行指令,才可以啟動其對映的系統影像 (此例中為啟動 centos/7 這個影像檔)。
第一次啟動系統影像時,vagrant 會把下載的 box ,匯入到 VirtualBox 的影像目錄 (VirtualBox VMs) 下,所以會花一點時間。
7、其他常用的 vagrant 指令
注意!!大部分的 vagrant 都需要在設定檔目錄下執行才會正確的作用!
7-1 查看系統狀態
vagrant status
你也可以直接開啟 VirtualBox 的程式,來查看目前所開啟的虛擬機器有那些。
7-2 清除設定的快取資料
vagrant global-status --prune
7-3 關閉系統影像 (關機)
vagrant halt
請注意,一定要在設定檔目錄下執行指令,才可以關閉其對映的系統影像,如果不小心在別的設定檔目錄下執行,就會關到其他的系統影像。
7-4 重新啟動系統影像 (重開機)
vagrant reload
7-5 使用 ssh 連到虛擬機器
vagrant ssh
7-6 重新讀入設定
# 當我們有修改設定時,必須執行
vagrant reload --provision
# 或是
vagrant up --provision
7-7 查看所有下載的系統影像檔
vagrant box list
7-8 將目前使用的環境匯出成系統影像檔(box)
vagrant package
這會將設定檔目錄所關聯的虛擬機器,匯出成名為 package.box 系統影像檔,放置於設定檔目錄中。程式開發團隊的其他人員,可以直接將這個 box 檔案匯入到自己的電腦裏,讓大家有一致的開發環境,Laravel 這個 PHP 框架就是這麼做的;有興趣的人,可以參考 Laravel Homestead。
7-9 刪除舊有的 box
# 先找出目前的 box 有那些
vagrant global-status
# 在依據其 id 來刪除,此例中,id 為 1a2b3c4d
vagrant destroy 1a2b3c4d
7-10 查看版本
vagrant version
8、其他
box image 會放在 VirtualBoxVMs 目錄下,在 VirtualBox 軟體中刪除所有檔案,會一併刪除掉 位於 VirtualBoxVMs 目錄下的 image 檔
Comments