我們需要一種更好的管理虛擬機的方法,。比如你可能想創(chuàng)建幾個 Linux 系統(tǒng)的虛擬機,因為你開發(fā)的項目最終是要運行在 Linux 系統(tǒng)的服務(wù)器上,。所以,你打算在本地也用 Linux 系統(tǒng)為項目搭建一個開發(fā)環(huán)境,,手工去安裝不同類型的 Linux 操作系統(tǒng)太麻煩了。你需要 Vagrant,。 Vagrant 可以讓我們用命令直接從云上下載虛擬機的鏡像,,你想要什么系統(tǒng)都行,Centos,Ubunto ... 只需要一行命令,,然后再用命令去操作虛擬機,,啟動,,暫停,關(guān)閉,,重啟,你可以更方便的管理所有的在本地上電腦上的虛擬機鏡像,,手工去配置它們,,可以再重新打包成新的鏡像,,方便你跟你的團隊在其它的項目上重復(fù)使用,。 安裝 VagrantVagrant 提供了一個虛擬機的管理層,,虛擬機本身還是需要用到虛擬機的軟件,比如 VMware,,Virtualbox 等等,推薦用 Virtualbox ,。使用系統(tǒng)的包管理工具去安裝軟件,。 Windows 上安裝 Vagrantchoco install vagrant Windows 上安裝 Virtualboxchoco install virtualbox Mac 上安裝 Vagrantbrew install vagrant Mac 上安裝 Virtualboxbrew install Caskroom/cask/virtualbox BoxBox ,你可以把它想成是一個箱子,,里面裝了一些東西。在用 Vagrant 創(chuàng)建虛擬機的時候,,需要用到 Box ,,它里面會包裝操作系統(tǒng)的鏡像,不同的 Box 帶的操作系統(tǒng)可能是不一樣的,,比如 CentOS,,Ubuntu 等等,你可以基于它們?nèi)?chuàng)建自己版本的 Box,,比如在虛擬機上安裝一些軟件,,然后把它重新打包成 Box 。 在 Vagrant 提供的云服務(wù)(https:///)上面可以下載到別人做好的 Box,,這個云服務(wù)現(xiàn)在叫 Atlas,,是 hashicorp 公司的一個產(chǎn)品,Vagrant 也是這家公司的項目,。打開這個地址以后,,可以去搜索想要用的 Box,可以搜索操作系統(tǒng)的名字,,也可以搜索特定的軟件的名字,,比如 Laravel,Drupal ... 在搜索結(jié)果上面會顯示這個 Box 的下載的次數(shù),,你可以用來判斷這個 Box 是否受歡迎,。 我們需要一個純凈的 Box,就是只包含操作系統(tǒng),,在系統(tǒng)上沒有安裝其它的多余的東西,。注意不同發(fā)行版的 Linux 操作起來是有些區(qū)別的,我推薦先用一下 CentOS 這款操作系統(tǒng),。 添加 Box你要把 Box 下載到本地的電腦上,,交給 Vagrant 去管理,這樣在創(chuàng)建虛擬機的時候,,Vagrant 會復(fù)制一份你指定的 Box 到你的項目里面,,這樣你在這個虛擬機上的操作,,就不會影響到其它的項目。先確定你用的電腦上的操作系統(tǒng)的位數(shù),,現(xiàn)在一般都是 64 位的操作系統(tǒng),。打開命令行工具以后,執(zhí)行 vagrant box add 命令去添加 Box ,。 vagrant box add 名字 如果你指定的 Box 在本地電腦上不存在,,Vagrant 就會到它的云上去給你下載。執(zhí)行: vagrant box add chef/centos-6.5 如果是 32 位的操作系統(tǒng),,請執(zhí)行: vagrant box add chef/centos-6.5-i386 上面的 chef/centos-6.5 還有 centos-6.5-i386 就是想要添加的 Box 的名字,,最前面的 chef ,是一個命名空間,,一般就是這個 Box 的作者的名字,,后面的 centos-6.5 表示這個 Box 的操作系統(tǒng)是 CentOS ,,版本是 6.5 ,,i386 表示 32 位的系統(tǒng)。 $ vagrant box add chef/centos-6.5 ==> box: Loading metadata for box 'chef/centos-6.5' box: URL: https://atlas./chef/centos-6.5 This box can work with multiple providers! The providers that it can work with are listed below. Please review the list and choose the provider you will be working with. 1) virtualbox 2) vmware_desktop Enter your choice: Vagrant 在本地沒找到你要添加的 Box,,它會到云上去給你下載,,它會先提示讓你選擇 Box 的版本,有用在 Virtualbox 上的 Box ,,還有用在 VMware 上的 Box,,選擇哪個取決于你系統(tǒng)上安裝的虛擬機的軟件是什么,如果你按照我的步驟,,安裝的應(yīng)該是 Virtualbox ,,所以,選擇要選擇 1 ,,然后回車,,繼續(xù)執(zhí)行命名。 查看本地上的 Box 列表完成以后,,可以查看一下在本地上的 Box 列表,。 vagrant box list 手工下載并添加 Box 的方法在執(zhí)行 Vagrant box add 添加 Box 的時候,Vagrant 會在命令行上顯示 Box 的下載地址,,下載的速度還有進度,,如果你在國內(nèi),很可能下載的速度非常慢,。你可以復(fù)制 Box 的下載地址,,然后用下載工具,比如用迅雷去下載,。在 Powershell 上面復(fù)制,,可以先選中要復(fù)制的東西,,然后按一下回車,再打開迅雷,,粘貼下載的地址去下載 Box ,。 完成以后,找到下載下來的文件,,文件名里會包含 .box 這個擴展名,,如果不是,你需要手工添加這個擴展名,。并且重命名一下文件,,比如命名為 centos_6.5.box 。然后把它放到桌面上,,其它地方也行,。打開命令行,進入到手工下面的 Box 文件所在的位置,。比如 cd ~/desktop 然后查看一下文件列表: ls 確定 Box 文件在當(dāng)前的目錄的下面,,再執(zhí)行 vagrant box add 命令去手工添加 Box 。 vagrant box add 名稱 路徑 名稱就是你想給這個 Box 起的名字,,以后我們會用到這個名字去管理這個 Box,,路徑是 Box 文件所在的位置,如果你要添加的 Box 直接在你當(dāng)前所在的目錄的下面,,可以直接使用 Box 文件的名稱,,像這樣: vagrant box add centos-6.5 centos-6.5.box Vagrant 會把 Box 文件復(fù)制到系統(tǒng)的某個特定的目錄的下面,完成以后,,你就可以把桌面上的 Box 文件刪除掉了,。 rm centos-6.5.box 再查看一下可用的 Box 列表: vagrant box list 在返回的列表里,你應(yīng)該可以找到自己手工添加的 centos-6.5 這個 Box ,。
管理 Box添加到本地電腦上的 Box 會放到一個特定的目錄的下面,。跟 Box 相關(guān)的命令,,可以用 vagrant box 命令查看。使用的方法就是 vagrant box 后面再加上子相應(yīng)的子命令,,接著是對應(yīng)的參數(shù),。常用的就是 add ,list 還有 remove,。add 是添加新的 Box ,,list 可以查看已有的 Box ,remove 就是從系統(tǒng)中刪除掉 Box ,。注意在創(chuàng)建虛擬機的時候,,Vagrant 會把你指定的 Box 復(fù)制一份放到特定的目錄的下面,。所以,你在使用 remove 命令刪除掉添加到系統(tǒng)中的 Box 的時候,,不會影響到這些已有的虛擬機,。 創(chuàng)建虛擬機添加了 Box 以后,我們就可以用 Vagrant 基于這個 Box 去創(chuàng)建虛擬機了,。先找個地方去創(chuàng)建一個目錄,,這個目錄就是你的項目所在的目錄,它會自動跟虛擬機上的某個目錄同步,,也就是在你電腦上的這個目錄里面的文件,,你同樣可以在虛擬機里的某個目錄里面找到。比如我要在桌面上創(chuàng)建一個叫 ninghao-project 的目錄,,然后再進入到這個目錄,,在命令行工具下面執(zhí)行: cd ~/desktop mkdir ninghao-project cd ninghao-project 初始化首先要做的就是初始化一下,用 vagrant init ,,后面指定一下要使用的 Box 的名字,。完成以后,在你的目錄下面創(chuàng)建一個叫 Vagrantfile 的文件,。 先查看一下可用的 Box vagrant box list 如果跟著我的步驟來,,你應(yīng)該可以看到一個叫 centos-6.5 的 Box ,。下面我們用這個 Box 去初始化一下項目,。 vagrant init centos-6.5 完成以后,查看一下當(dāng)前目錄下面的東西,。 ls 你會看到一個 Vagrantfile 文件,,這個文件是配置當(dāng)前項目的虛擬機用的,以后我們會再回來看一下怎么樣使用這個文件,。 啟動虛擬機Vagrant 提供了一些命令可以操作虛擬機,,比如啟動,暫停,,關(guān)閉或者銷毀虛擬機,。啟動虛擬機,執(zhí)行: vagrant up 第一次啟動,,花的時間會長一些,,因為 Vagrant 會把你為項目指定的 Box 復(fù)制到一個地方,然后再去啟動它,。完成以后,,你可以用命令再查看一下虛擬機的狀態(tài): vagrant status 如果返回的是 running ,,說明虛擬機啟動成功,,現(xiàn)在你就可以使用 ssh 連接到虛擬機,,去控制它了,。 控制虛擬機想在 Linux 系統(tǒng)的虛擬機上進行操作,你要用 ssh 連接到虛擬機,,這跟你遠(yuǎn)程控制 Linux 的服務(wù)器是一樣的,。如果你是 Mac 用戶,可以先進入到項目所在的目錄,,然后直接用 vagrant ssh ,,連接到虛擬機。Windows 用戶要用 putty 去連接,。 Macvagrant ssh Windows用 vagrant up 啟動虛擬機以后,,可以接著再輸入 vagrant ssh,會出現(xiàn)提示,,說沒找到 SSH,,你可以選擇自己喜歡的 SSH 客戶端,然后用下面的的信息連接,。 Host:127.0.0.1 Port:2200 Username:vagrant 打開 putty 工具以后,,連接的類型選擇 ssh ,然后輸入主機的 IP 地址,,127.0.0.1 ,,port 端口號輸入 2200,點擊 連接,。這樣會打開一個命令行工具,,提示你輸入用戶名,這個用戶名就是你想連接的 Linux 系統(tǒng)的用戶名,,Vagrant 會為虛擬機創(chuàng)建一個叫 vagrant 的用戶,,這個用戶的密碼也是 vagrant ,輸入用戶名,,再輸入密碼以后,,就可以成功的連接到 Linux 系統(tǒng)的虛擬機了。 用 Putty 連接虛擬機成功以后,,對虛擬機的操作,,都是在這個小工具上進行。 使用這種方法,,你同樣可以去控制在互聯(lián)網(wǎng)上的 Linux 系統(tǒng)的服務(wù)器,,打開 putty 的時候,連接的主機輸入你的服務(wù)器的 IP 地址就可以了,,然后是你的服務(wù)器的用戶名,,還有密碼。 安裝 putty choco install putty 打開 putty,,可以直接在 Powershell 里面輸入 putty ,,然后回車,。 在 Windows 上使用 Vagrant 初始化并連接虛擬機 暫停與恢復(fù)虛擬機在運行的時候會消耗你的電腦資源,比如內(nèi)存,,CPU 等等,,在不用它的時候,可以關(guān)掉或者使用暫停,,暫停虛擬機可以保存虛擬機運行時候的狀態(tài),,暫停以后,除了占點硬盤空間以外,,就不會消耗你的其它資源了,。 進入到項目所在的目錄,然后可以用 vagrant status 查看一下當(dāng)前的虛擬機的狀態(tài),,如果是 running ,,你就可以使用命令去暫停一下: vagrant suspend 重新恢復(fù)起動,執(zhí)行命令: vagrant resume 想要徹底關(guān)掉虛擬機的運行,,執(zhí)行: vagrant halt 停止以后,,要想再起動虛擬機,要執(zhí)行: vagrant up 刪除虛擬機不打算再用的虛擬機,,可以把它刪除掉,,直接刪除項目的目錄是不行的,因為為項目指定的虛擬機并不包含在這個項目的目錄下面,,需要使用命令去刪除虛擬機,。進入到項目所在目錄,然后執(zhí)行: vagrant destroy路徑 Vagrant |
|