最後更新日期:2020 年 07 月 24 日

一、使用 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,必需要有以下前置軟體

安裝.NET Framework 4.5.2

安裝與設定 WMF 5.1

軟體安裝流程

1、安裝 git

請先安裝 Git
以下指令都是在 git bash 中執行

2、安裝 VirtualBox

VirtualBox 官方網站
Vagrant 其實是需要依附在虛擬機器程式,可以是 VirtualBox ,也可以是其他的程式。Vagrant 只是提供了一些好用的指令來方便我們管理我們的虛擬機器。所以我們得先安裝 VirtualBox

3、安裝 Vagrant

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 來安裝

我目前所用的 box image

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 檔

參考資料

Vagrant 官方說明文件

http://gogojimmy.net/2013/05/26/vagrant-tutorial/

Last modified: 2020-07-24

Author

Comments

Write a Reply or Comment

Your email address will not be published.