使用vagrant部署開發環境

參考文章:http://blog.smdcn.net/article/1308.htmlhtml

準備工做:web

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

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

下載須要使用的 box :編輯器

官方提供的範例:http://files.vagrantup.com/precise32.boxspa

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

設置環境:vagrant

第一步,新建目錄code

mkdir -p vagrant/debian
cd vagrant/debian

第二步,初始化文件htm

vagrant box add debian-local /home/wangkongming/software/pmv3.box
debian-local 表示指定默認的box,也能夠爲box指定名稱,好比 debian ,使用base時,以後能夠直接使用 vagrant init 進行初始化,若是自行指定名稱,則初始化的時候須要指定box的名稱。

pmv3.box 是box對應的文件名,這裏能夠是本地保存box的路徑,也能夠是能夠下載box的網址,若是是網址的話,Vagrant會自動啓動下載。

第三步,

設置好box以後,在當前工做目錄運行

vagrant init

生成對應的Vagrantfile。經過文本編輯器打開Vagrantfile能夠進行一些進一步的經常使用配置:

網絡配置:

Vagrant的網絡有三種模式

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

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

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

二、若是須要本身自由的訪問虛擬機,可是別人不須要訪問虛擬機,能夠使用private_network,併爲虛擬機設置IP ,在Vagrantfile中配置:

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

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

三、若是須要將虛擬機做爲當前局域網中的一臺計算機,由局域網進行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 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文件拿到其餘計算機上配置便可使用。

更多信息能夠參考官方文檔:http://docs.vagrantup.com/v2/

附:我本機上的vagrantfile文件

Vagrant.configure(2) do |config|
   config.vm.box = "debian-local"

   config.vm.network "forwarded_port", guest: 80, host: 8080
   config.vm.network "private_network", ip: "192.168.1.88"

   config.vm.synced_folder "/home/wangkongming/files/works/code/kfz-pm", "/data/webroot/pmv2"
   
end
相關文章
相關標籤/搜索