使用vagrant部署開發環境


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

准備工作:

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

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

下載需要使用的 box :

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

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

設置環境:

第一步,新建目錄

mkdir -p vagrant/debian
cd vagrant/debian

第二步,初始化文件

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的網絡有三種模式

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 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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM