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