1. 程式人生 > >vagrant 安裝

vagrant 安裝

一、前言

2.實驗環境

在Win10中利用VMWare Workstation建立一臺Ubuntu虛擬機器,版本為64位Ubuntu Desktop 16.04,4核,4G記憶體;然後在Ubuntu中安裝Vagrant和VirtualBox,所用到的Vagrant和VirtualBox版本都是截至2018/04/08時候的最新版。

之所以使用VMWare Workstation來建立Ubuntu的虛擬機器而不是VirtualBox,跟下面即將說到的“ubuntu的CPU必須要支援虛擬化”有關,因為在VirtualBox中我不知道怎麼設定才能使得建立的ubuntu的CPU支援虛擬化,而在VMWare Workstation中,可以通過如下方法進行開啟。

3.關鍵點

因為我們所做的操作是“在Ubuntu中利用Vagrant+VirtualBox建立虛擬機器”,因此,ubuntu的CPU必須要支援虛擬化才行——注意,是Ubuntu的CPU,不是本機Windows

一般我們要在膝上型電腦上利用VMWare Workstation或者VirtualBox來建立虛擬機器時,是需要筆記本的CPU支援虛擬化的,通常筆記本的CPU都支援虛擬化,只需在膝上型電腦開機時進入BIOS進行設定開啟即可。而這裡因為要在ubuntu中建立虛擬機器,因此需要ubuntu的CPU支援虛擬化。

如果你的ubuntu系統不支援CUP虛擬化,那麼就沒必要按下面步驟進行安裝了,因為一定會失敗,必須要將ubuntu的CUP設定成支援虛擬化。

在Ubuntu中可以通過下面的方法驗證CPU是否支援虛擬化

查詢實驗時的虛擬機器:

 

4.提前列一下接下來可能會用到的vagrant命令

$ vagrant init      # 初始化,用法:vagrant init 已有的box名稱

$ vagrant up        # 啟動虛擬機器,對應就是關機

$ vagrant halt      # 關閉虛擬機器

$ vagrant reload    # 重啟虛擬機器

$ vagrant ssh       # SSH 至虛擬機器

$ vagrant suspend   # 掛起虛擬機器——只是暫停,虛擬機器記憶體等資訊將以狀態檔案的方式儲存在本地,可以執行恢復操作後繼續使用

$ vagrant resume    # 喚醒虛擬機器—— 與前面的暫停相對應

$ vagrant status    # 檢視虛擬機器執行狀態

$ vagrant destroy   # 銷燬當前虛擬機器,刪除後在當前虛擬機器所做進行的除開Vagrantfile中的配置都不會保留

#box管理命令

$ vagrant box list    # 檢視本地box列表

$ vagrant box add    

# 新增box到列表,用法:vagrant box add 按需起的box名稱 box所在url或者本地路徑

$ vagrant box remove  

# 從box列表移除 ,用法:vagrant box remove 你的box名稱

5.安裝之前最後一點——在我初次安裝時因為ubuntu的CPU不支援虛擬化,我又沒注意到這點,因此安裝過程中遇到了一些錯誤,放在文章末尾了,有一定的參考意義。

二、安裝步驟

1、安裝Virtualbox

1.1安裝之前先安裝virtualbox的依賴包,否則會有依賴包報錯

命令:sudo apt-get install -y libsdl1.2debian

 

1.2安裝VirtualBox

我看其他教程有使用apt-get install命令安裝virtualbox的,我有試過,不過該命令安裝的不是最新版,所以我採取的辦法是先上網把virtualbox下載下來,然後上傳到ubuntu當中(上傳到任意目錄),接著切換到virtualbox包所在目錄,執行:

sudo dpkg -i virtualbox-5.2_5.2.8-121009-Ubuntu-xenial_amd64.deb

因為我已經安裝過virtualbox所需依賴包了,所以安裝過程沒有報錯,假若你安裝的時候報錯了,則將所需依賴包使用apt-get install命令進行安裝,之後再次安裝virtualbox即可。

1.3安裝完成之後使用virtualbox --help命令進行檢查

如下圖,輸出virtualbox幫助資訊,說明virtualbox安裝成功

2、vagrant是ruby開發的,先安裝ruby相關的東西

命令:sudo apt-get -y install ruby rubygems

注:我不知道這一步是否必須,我看個別教程裡面有的安裝了,有的沒有,反正我是跟著做了。。。

3、在Vagrant官網下載Vagrant的deb軟體包

下載命令:sudo wget https://releases.hashicorp.com/vagrant/2.0.3/vagrant_2.0.3_x86_64.deb

安裝命令:sudo dpkg -i vagrant_2.0.3_x86_64.deb

安裝完成使用vagrant --version進行檢查,如上圖。

也可以直接使用apt-get安裝,命令:sudo apt-get install vagrant。

不過同樣的,apt-get命令安裝的不是最新版本。

4、下載官方封裝好的基礎映象放到合適的目錄裡面,是一個格式為box的檔案,地址:http://www.vagrantbox.es/,可以在ubuntu中使用wget命令下載,也可以再本地Windows上下載下來,然後上傳到ubuntu裡面。

官網介面:

我下載的box映象:

5.建立一個開發目錄,並切換到該目錄下

命令:

sudo mkdir vagrant_project

cd vagrant_project/

注:建立該目錄是用來存放vagrant配置檔案的,因此下面第7步的初始化步驟必須在該目錄下執行,vagrant才會預設把Vagrantfile配置檔案放在該目錄下;建立的目錄名稱是隨意的,沒有特定要求。

6、新增映象到 Vagrant

命令:sudo vagrant box add ubuntu1604 /data/ios/CentOS-7.0-x86_64.box

注:這裡我新增的映象是centos-7.0-x86_64.box,但是我給它起的名字卻是ubuntu1604,是因為一時手殘了,名字其實可以根據喜好隨便起,沒影響

執行完之後使用sudo vagrant box list檢視新增的映象是否存在,如上圖。

7、初始化開發環境

命令:sudo vagrant init ubuntu1604

注:“ubuntu1604是上一步新增映象時所起的名字;且這一步初始化操作必須在第5步建立的開發目錄中執行,否則你建立的目錄就沒用了;最後,初始化成功後會生成配置檔案Vagrantfile

8、啟動虛擬機器

在第5步建立的工作目錄下執行下面命令進行啟動虛擬機器

命令:sudo vagrant up

(1)由輸出來看啟動沒有問題

(2)注意上圖的最後一行:vagrant預設把建立的虛擬機器的/vagrant目錄對映到ubuntu的/home/suxy/vagrant_project目錄上了(/home/suxy/vagrant_project就是第5步建立的開發目錄)——這樣一來,這兩個目錄之間是共享的。

(3)Vagrant預設建立的虛擬機器賬號密碼為:vagrant/vagrant

(4)如果這一步執行vagrant up失敗了,在修改完錯誤之後再次啟動虛擬機器前,需要先執行vagrant halt停止虛擬機器、vagrant destroy銷燬虛擬機器。

9.驗證

使用sudo vagrant ssh命令連線vagrant建立的虛擬機器

若還有其他個性化的設定,可參考文章頭提到的博文。

三、部署時遇到的錯誤

(1)錯誤一:這裡所列舉的錯誤是在ubuntu的CPU不支援虛擬化的情況下執行第8步啟動虛擬機器時所報的錯誤,如下

根據博文中的說法,如果是下載的box檔案(我操作時確實是下載的box檔案),vagrant box add和init之後啟動,可能出現長時間無法通過vagrant ssh登陸的問題

說是有兩種可能

(1)其一是虛擬機器確實啟動失敗,由於vagrant預設不顯示虛機啟動介面,所以不太好判斷。因此需要在Vagrantfile配置中增加vb.gui = true選項,就可以檢視虛機的啟動過程(我的理解是加上該選項之後,可以使得在vagrant up啟動虛擬機器的時候顯示virtualbox啟動介面,以便檢視是否是PC的vt-x支援沒有開啟)。常見問題是沒有開啟PC的vt-x支援,進BIOS修改配置即可。

(2)其二是如果使用拷貝過來的Vagrantfile進行up啟動

可能會由於ssh認證機制導致失敗。vagrant預設採用key登入,但所用的KeyPair可能沒有正常配置。

於是先對第一種可能的錯誤進行驗證

在Vagrantfile檔案中加入:

  config.vm.provider :virtualbox do |vb|

    vb.gui = true

  end

如下:

因為前面執行vagrant up失敗了,所以先執行vagrant halt停止虛擬機器、vagrant destroy銷燬虛擬機器

接著使用sudo vagrant up命令再次啟動虛擬機器,果然再次出錯了,不過因為在Vagrantfile配置中增加vb.gui = true選項,所以這次報錯時virtualbox的報錯也顯示出來了,如下圖——果然是因為CUP不支援虛擬化的緣故

為了確認是否Ubuntu的CPU確實不支援虛擬化,通過下圖中所說的方法檢視

實際查詢如下圖:

果然。。。

(2)錯誤二:在ubuntu的CPU支援虛擬化的情況下執行第8步啟動虛擬機器時出現的問題

正如上圖紅框中所說的,使用的box映象可能有問題,因此我換了CentOS的box進行,之後安裝成功。

linux