在Windows下安裝Vagrant的方法和注意事項

做web開發少不了要在本地搭建好開發環境,雖然說目前各種腳本都有對應的windows版,甚至是一鍵安裝包,但很多時候和windows環境的相性并不是那么好,各麻煩的問題是實際部署的環境通常是linux,常常還要面臨著開發和部署環境不一致,上線前還要大量的調試。

Windows下玩Linux少不了虛擬機,但裝系統依舊是相當費事。在現在什么都在自動化的今天,Vagrant就是這么一個神器,基于Ruby開發,使用開源 VirtualBox 作為虛擬化支持,可以輕松的跨平臺部署。

今天試著把幾臺機器的環境都換成Vagrant,很爽很順暢,我本人實測發現,運行一個centos只需要不到60兆內存,相當的給力。

下面說下安裝步驟,順便把注意點說一下!

準備工作:

下載安裝 VirtualBox :https://www.virtualbox.org/

下載安裝 Vagrant :http://www.vagrantup.com/

下載需要使用的 box :

官方提供的范例:http://files.vagrantup.com/precise32.box

還可以在 http://www.vagrantbox.es/ 這里下載更多不同系統甚至是已經配置好環境直接可以用的box,雖然可以直接在Vagrant直接使用網址,由Vagrant自動下載安裝,但是考慮到網絡情況,還是建議自行先下載好。

由于習慣用CentOS,于是我就下了CentOS 6.3 x86_64 minimal,這個Box根據個人情況進行選擇即可。

設置環境:

安裝完成并且重啟好系統之后就可以開始設置環境了。

首先在本地創建好工作目錄,并在命令行下切換到對應目錄

vagrant?box?add?base?CentOS-6.3-x86_64-minimal.box

base 表示指定默認的box,也可以為box指定名稱,比如 centos63 ,使用base時,之后可以直接使用 vagrant init 進行初始化,如果自行指定名稱,則初始化的時候需要指定box的名稱。

CentOS-6.3-x86_64-minimal.box 是box對應的文件名,這里可以是本地保存box的路徑,也可以是可以下載box的網址,如果是網址的話,Vagrant會自動啟動下載。

[vagrant]?Downloading?with?Vagrant::Downloaders::File...  [vagrant]?Copying?box?to?temporary?location...  [vagrant]?Extracting?box...  [vagrant]?Verifying?box...  [vagrant]?Cleaning?up?downloaded?box...

設置好box之后,在當前工作目錄運行

vagrant?init

生成對應的Vagrantfile。通過文本編輯器打開Vagrantfile可以進行一些進一步的常用配置:

網絡配置:

Vagrant的網絡有三種模式

1、較為常用是端口映射,就是將虛擬機中的端口映射到宿主機對應的端口直接使用 ,在Vagrantfile中配置:

config.vm.network?:forwarded_port,?guest:?80,?host:?8080

guest: 80 表示虛擬機中的80端口, host: 8080 表示映射到宿主機的8080端口。

2、如果需要自己自由的訪問虛擬機,但是別人不需要訪問虛擬機,可以使用private_network,并為虛擬機設置IP ,在Vagrantfile中配置:

config.vm.network?:private_network,?ip:?"192.168.1.104"

192.168.1.104 表示虛擬機的IP,多臺虛擬機的話需要互相訪問的話,設置在相同網段即可

3、如果需要將虛擬機作為當前局域網中的一臺計算機,由局域網進行DHCP,那么在Vagrantfile中配置:

config.vm.network?:public_network

目錄映射:

既然是開發環境,那么開發工作肯定還是需要在本地完成,而不是都要進到虛擬機中去完成,虛擬機就好好在后臺運行服務就好了,不然就本末倒置了,所以這里就需要使用目錄映射功能,將本地的目錄映射到虛擬機的對應目錄。

默認情況下,當前的工作目錄,會被映射到虛擬機的 /vagrant 目錄,當前目錄下的文件可以直接在 /vagrant 下進行訪問,當然也可以在通過 ln 創建軟連接,如

ln?-fs?/vagrant/wwwroot?/var/www

來進行目錄映射,當然,從自動化配置的角度,能不進系統就不需要進系統,所以在Vagrant也可以進行目錄映射的操作:

config.vm.synced_folder?"wwwroot/",?"/var/www"

前面的參數 “wwwroot/” ?表示的是本地的路徑,這里使用對于工作目錄的相對路徑,這里也可以使用絕對路徑,比如: “d:/www/”

后面的參數 “/var/www” 表示虛擬機中對應映射的目錄。

運行腳本:

雖然不是必須,但是如果有需要在啟動時運行一些腳本(環境的安裝或者有些服務的啟動需要在完成目錄映射之后進行),可以編輯腳本,類似如下(摘自Vagrant Document):

#!/usr/bin/env?bash  apt-get?update  apt-get?install?-y?apache2  rm?-rf?/var/www  ln?-fs?/vagrant?/var/www

保存在和Vagrantfile相同目錄,文件名自取(如 boot.sh),然后在Vagrantfile中添加:

config.vm.provision?:shell,?:path?=>?"boot.sh"

?當初次使用基本的設置都完成則之后,則可以使用 vagrant up 啟動虛擬機

Bringing?machine?'default'?up?with?'virtualbox'?provider...  [default]?Setting?the?name?of?the?VM...  [default]?Clearing?any?previously?set?forwarded?ports...  [default]?Creating?shared?folders?metadata...  [default]?Clearing?any?previously?set?network?interfaces...  [default]?Preparing?network?interfaces?based?on?configuration...  [default]?You?are?trying?to?forward?to?privileged?ports?(ports??<strong>2222</strong>?(adapter?1)  [default]?--?80?=&gt;?8080?(adapter?1)  [default]?Booting?VM...  [default]?Waiting?for?VM?to?boot.?This?can?take?a?few?minutes.  [default]?VM?booted?and?ready?for?use!  [default]?The?guest?additions?on?this?VM?do?not?match?the?installed?version?of?VirtualBox!?In?most?cases?this?is?fine,?but?in?rare?cases?it?can?cause?things?such?as?shared?folders?to?not?work?properly.?If?you?see?shared?folder?errors,?please?update?the?guest?additions?within?the?virtual?machine?and?reload?your?VM.  Guest?Additions?Version:?4.1.18  VirtualBox?Version:?4.2  [default]?Mounting?shared?folders...  [default]?--?/var/www  [default]?--?/vagrant  [default]?Running?provisioner:?shell...

虛擬機啟動之后則可以通過 vagrant ssh 聯入虛擬機進行進一步的環境配置,或者軟件安裝相關的工作,在Windows系統下,并不能直接通過 vagrant ssh 連到虛擬機,需要使用 Putty,Xshell 等第三方工具進行連接

連接的IP和端口根據網絡環境配置的不同有所不同,如果是默認使用端口映射的話,一般是連接 本地的2222端口。

登錄的帳號密碼均為 vagrant ,登錄之后如果需要 su root ,密碼也是 vagrant

注:使用 vagrant ssh 時,會提示可以使用密鑰進行登錄,如果需要使用putty進行密鑰登錄的話,需要下載 puttygen 將 ssh 的密鑰轉換為 ppk 文件才能使用。

登錄ssh完成環境的配置,如果在開發環境中使用webserver(nginx/apache)為了避免一些靜態文件處理的問題,可能還需要進行一些額外的配置:Vagrant下共享目錄靜態文件(js/jpg/png等)“緩存”問題

在不進入虛擬機的情況下,還可以使用下面的命令對 虛擬機進行管理:

vagrant?up?(啟動虛擬機)  vagrant?halt?(關閉虛擬機——對應就是關機)  vagrant?suspend?(暫停虛擬機——只是暫停,虛擬機內存等信息將以狀態文件的方式保存在本地,可以執行恢復操作后繼續使用)  vagrant?resume?(恢復虛擬機?——?與前面的暫停相對應)  vagrant?destroy?(刪除虛擬機,刪除后在當前虛擬機所做進行的除開Vagrantfile中的配置都不會保留)  當在啟動Vagrant后,對于虛擬機有進行過安裝環境相關的配置,如果并不希望寫在Vagrant的啟動shell里面每次都重新安裝配置一遍,可以將當前配置好的虛擬機打包成box,  vagrant?package?--output?NAME?--vagrantfile?FILE

可選參數:

–output NAME : (可選)設置通過NAME來指定輸出的文件名

–vagrantfile FILE:(可選)可以將Vagrantfile直接封進box中

注:如果網絡模式中使用 private_network 的話,在打包之前需要清除一下private_network的設置,避免不必要的錯誤:

sudo?rm?-f?/etc/udev/rule.d/70-persistent-net.rules

制作完成之后直接將box文件拿到其他計算機上配置即可使用。

注意點: 1.如果在windows下無法啟動,則可以開啟box的gui端,這樣就可以看到出現什么問題。

開啟方法:

修改Vagrantfile文件,添加一下內容:

config.vm.provider :virtualbox do |vb|

? vb.gui = true

end

我就遇到了這個問題,虛擬機需要VT虛擬技術支持,所以要開啟VT

? 版權聲明
THE END
喜歡就支持一下吧
點贊6 分享