Vagrant是一個基於Ruby的工具,用於建立和部署虛擬化開發環境。php
詳細操做步驟:html
工具及環境介紹:linux
工具及環境ios |
版本nginx |
下載地址redis |
宿主機環境shell |
win7 x64 旗艦版centos |
http://msdn.itellyou.cn/緩存 |
VirtualBoxtomcat |
VirtualBox-4.3.12-93733-Win |
|
vagrant |
vagrant_1.6.3 |
|
box |
CentOS-6.3-x86_64-minimal.box |
|
xshell |
xshell_4.0.0131.1397032097 |
http://www.netsarang.com/download/main.html |
一、安裝VirtualBox
下載地址:https://www.virtualbox.org/wiki/Downloads
VirtualBox 開源免費的,雖然 Vagrant 也支持 VMware,不過 VMware 是收費的,對應的 Vagrant 版本也是收費的
二、安裝vagrant
下載地址:http://downloads.vagrantup.com/ 根據提示一步步安裝。
三、下載box
下載官方封裝好的基礎鏡像:
Ubuntu precise 32 VirtualBox http://files.vagrantup.com/precise32.box
Ubuntu precise 64 VirtualBox http://files.vagrantup.com/precise64.box
若是你要其餘系統的鏡像,能夠來這裏下載:http://www.vagrantbox.es/
注:vagrant使用該鏡像來快速克隆出虛擬機
四、安裝xshell
五、正式開始進行操做~
D盤的 D:\Myvagrant, cmd進入到此目錄
假設咱們上面下載的鏡像box放在 D:\Myvagrant\box\precise64.box 路徑下
Note: 導入box的默認指令 vagrant box add name(給box自定義一個名) path
導入box: vagrant box add mybox ./box/precise64.box
注:mybox 是咱們給這個鏡像命的一個名字,在配置文件中會vagrantfile會用到此名字,
如:config.vm.box = "mybox" ,這裏的名字必定要對,不然沒法啓動
能夠經過命令: vagrant box list 查看咱們添加的box
初始化:vagrant init mybox 或者 vagrant init
初始化後,就會生成一個Vagrantfile 的配置文件,和一個 .vagrant的隱藏目錄
config.vm.box = "mybox"
注意:若是不報錯說明就是啓動成功了,若是有錯誤,很大的緣由多是本機有開啓虛擬化
技術,此時重啓電腦,按F2或者其餘的鍵進入bios設置,找到virtual相關字樣開啓便可。
ssh -p2222 vagrant@127.0.0.1
鏈接帳號:vagrant
鏈接密碼:vagrant
su到root下密碼:vagrant
vagrant init # 初始化
vagrant up [vm_name] # 啓動虛擬機 , 虛擬機名是可選項
vagrant halt # 關閉虛擬機
vagrant reload # 重啓虛擬機
vagrant ssh # SSH 至虛擬機
vagrant status # 查看虛擬機運行狀態
vagrant suspend #暫停虛擬機
vagrant resume #恢復虛擬機 (與suspend 對應)
vagrant destroy # 銷燬當前虛擬機
vagrant box list #列出當前導入的box
vagrant box remove [name] #移除box
vagrant box add [boxpath] # 給vagrant導入box
vagrant global-status #查看已建立的全部虛擬機
經過命令:vagrant -h 能夠看見命令
注:在vagrant的項目目錄下,能夠經過命令: vagrant ssh ,獲得當前vagrant的ssh信息
當你配置好開發環境後,退出並關閉虛擬機。在終端裏對開發環境進行打包:
經過命令:vagrant package --output NAME --vagrantfile FILE打包
可選參數:
--output : (可選) 設置經過NAME 來指定輸出的文件名
--vagrantfile FILE : (可選)能夠將Vagrantfile 直接封裝進box中
打包完成後會在當前目錄生成一個 package.box 的文件,將這個文件傳給其餘用戶,其餘用戶只要添加這個 box 並用其初始化本身的開發目錄就能獲得一個如出一轍的開發環境了。
六、其餘配置
Vagrant 默認是使用端口映射方式將虛擬機的端口映射本地從而實現相似 http://localhost:80 這
種訪問方式,這種方式比較麻煩,新開和修改端口的時候都得編輯。相比較而言,host-only 模式
顯得方便多了。打開Vagrantfile,將下面這行的註釋去掉(移除 #)並保存:
config.vm.network :private_network, ip: "192.168.33.10"
重啓虛擬機,這樣咱們就能用 192.168.33.10 訪問這臺機器了,你能夠把 IP 改爲其餘地址,只要
不產生衝突就行。
七、注意事項
使用 Apache/Nginx 時會出現諸如圖片修改後但頁面刷新仍然是舊文件的狀況,是因爲靜態文件緩存形成的。須要對虛擬機裏的 Apache/Nginx 配置文件進行修改:
1 2 3 4 5 |
# Apache 配置添加: EnableSendfile off # Nginx 配置添加: sendfile off; |
配置多臺虛擬機
修改後的文檔:啓用了四個虛擬機,內存均爲256M
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# -*- mode: ruby -*- # vi: set ft=ruby : app_servers = { :http => '192.168.58.20', :php => '192.168.58.21' } Vagrant.configure("2") do |config| config.vm.box = "centos6.3" config.vm.define :haproxy do |haproxy_config| haproxy_config.vm.network :private_network, ip: "192.168.58.10" haproxy_config.vm.network :forwarded_port, guest: 80, host: 8080 config.vm.provider :virtualbox do |vb| vb.name = "haproxy" vb.customize ["modifyvm", :id, "--memory", "256"] end end app_servers.each do |app_server_name, app_server_ip| config.vm.define app_server_name do |app_config| app_config.vm.hostname = "#{app_server_name.to_s}.vagrant.internal" app_config.vm.network :private_network, ip: app_server_ip # app_config.vm.synced_folder "../app", "/opt/app" app_config.vm.provider "virtualbox" do |vb| vb.name = app_server_name.to_s vb.customize ["modifyvm", :id, "--memory", "256"] end end end config.vm.define :redis do |redis_config| redis_config.vm.hostname = "redis.vagrant.internal" redis_config.vm.network :private_network, ip: "192.168.58.30" redis_config.vm.provider "virtualbox" do |vb| vb.name = "redis" vb.customize ["modifyvm", :id, "--cpuexecutioncap", "50"] vb.customize ["modifyvm", :id, "--memory", "256"] end end end |
PS: 第一次開啓的時候,建議一臺一臺的開啓,這樣的話方便記錄ssh鏈接端口號(我的偏好使用xshell)
關閉當前機器,而後打包(我這裏爲haproxy這臺機器安裝了epel源)
使用感覺:
搭建了一個haproxy + tomcat的環境,三臺機器全開,佔用系統資源也不是很大,跑起來絕對沒問題,也挺流暢~
參考文檔:
斌哥的網站:http://opslinux.com/shi-yong-vagrantda-zao-ni-de-xu-ni-huan-jing.html
爽神的網站:http://www.iamle.com/archives/1684.html
Vagrantfile借用站點:http://blog.sina.com.cn/s/blog_804327560101eiyk.html