vagrant使用小结
最近公司用了vagrant的虚拟镜像服务,感觉挺不错的.在此仅记录使用方法.
优点:我们可以通过 Vagrant 封装一个 Linux 的开发环境,分发给团队成员。成员可以在自己喜欢的桌面系统(Mac/Windows/Linux)上开发程序,代码却能统一在封装好的环境里运行,非常霸气.
主要是看重它可以让开发人员在同样开发环境下开发,这样避免每个开发人员因为开发环境不一样导致最后代码上线的一些问题.
缺点:需要提前配置好一个满足开发条件的一些环境.(这个过程其实玩liunx的人,都会,对于不会的人来说,这就是缺点咯.)
本文后面提到的centos-6.5-x86_64-base.box,是centos-6.5的系统,在里面我已经预装了php apache nginx nodejs等等满足程序运行的环境。
下面使用步骤:
1、下载vagrant_1.5.4和VirtualBox-4.3.12
vagrant 下载地址:
VirtualBox下载地址:
box镜像文件,本文举例子的box文件(centos-6.5-x86_64-base.box,下载地址http://www.vagrantbox.es/)
2、安装Vagrant 和 VirtualBox
3、在你本地的硬盘上创建一个用来存储Vagrant配置文件的目录,将 1 中下载的 centos-6.5-x86_64-base.box 镜像也放到这个目录里。
比如你创建的目录地址为: E:\testvbox ,那么就将centos-6.5-x86_64-base.box 放到此目录下.
4、运行cmd命令,到命令行下,并且切换到 3 中创建的目录(testvbox)中。
命令:
cd E:/testvbox
5、在此目录(testvbox)中,依次执行下面的命令:
1).
vagrant box add dev centos-6.5-x86_64-base.box
PS: 上面的命令含义为:vagrant 是vagrant的命令,box为参数,add为添加一个box环境,dev为你要创建的box环境名称,centos-6.5-x86_64-base.box 为你下载的box环境镜像。
2).
vagrant init dev
PS: 上面的命令含义为:vagrant 是vagrant的命令,init为参数,初始化一个box环境,dev为你要初始化的box环境名称。
6、 这时,你会在当前目录下看到一个Vagrantfile文件,这个文件就是vagrant box环境的配置文件。编辑这个文件,你可以用记事本打开这个文件,修改如下几处:
1) . 第22行,去掉前面的#
# config.vm.network :forwarded_port, guest: 80, host: 8080
变为
config.vm.network :forwarded_port, guest: 80, host: 8080
2) . 第26行,去掉前面的#
# config.vm.network :private_network, ip: “192.168.33.10”
变为
config.vm.network :private_network, ip: “192.168.33.10”
PS: 这里是私有ip,只有你自己可以访问虚拟机,如果你想要配置局域网里面可以访问,那就不需要修改26行,保持原样,此时需要修改的是第31行
# config.vm.network :public_network
变为
config.vm.network :public_network, ip: “192.168.8.88”
PS: ip可以配置也可以不用配置,虚拟机可以自动DHCP。我这里是自己配置了的,因为每次自动配置ip地址变来变去不方便.
3) . 第41行
# config.vm.synced_folder “../data”, “/vagrant_data”
改为
config.vm.synced_folder “E:/www”, “/var/www/html”
PS:
1). E:/www 这个为你本地的项目目录,这个目录会自动挂在到box环境中去
2). /var/www/html为虚拟开发环境中的挂载点。
7、最后,修改本地hosts文件,将第6步中第“2)”中的ip地址映射到相应的域名下,将如下添加到你本地的hosts中:
192.168.33.10 www.testvbox.com
PS: 想映射就映射不想映射就IP地址访问好了.
8、最后, 在你的box环境的配置目录(testvbox)下的cmd中运行,如下命令,就可以开启你的虚拟化环境了
vagrant up
至此,启动完成之后,vagrant的虚拟化开发环境就配置完成了.那么此时在浏览器里面就可以访问了.。
PS: 额外奉送:
# vagrant halt 关闭虚拟化开发环境
# vagrant reload 修改配置文件后,重启虚拟化开发环境
# vagrant box list 查看当前可用的虚拟化开发环境
# vagrant box remove boxname 删除指定的box环境
# vagrant package 当前正在运行的VirtualBox虚拟环境打包成一个可重复使用的box
# vagrant up 启动虚拟机
# vagrant destroy 销毁虚拟机
PS: 如果发现图片和JS,css文件改过之后没有任何反映,那就是这些被缓存了,
这个时候重启虚拟服务都是没有用的.应做如下修改:
如果是nginx环境 ,那么就找到 nginx.conf ,把里面的 “sendfile on” 修改为 “sendfile off”.
当然,如果你使用Apache也可能遇到类似的问题,那么同样也有类似的配置需要修改为:
EnableSendfile off
PS:
因为liunx不是太熟悉,仅记录个人常使用的一些命令.
apache目录 配置文件
vim /etc/httpd/conf.d/vhost.conf/etc/init.d/httpd restartnginx目录 配置文件
vim /etc/nginx/conf.d/virtual.conf/etc/init.d/nginx restart配置网卡
vim /etc/sysconfig/network-scripts/ifcfg-eth1 /etc/init.d/network restartVagrant 三种网络配置详解
Vagrant 中一共有三种网络配置,下面我们将会详解三种网络配置各自优缺点。
端口映射(Forwarded port) ,顾名思义是指把宿主计算机的端口映射到虚拟机的某一个端口上,访问宿主计算机端口时,请求实际是被转发到虚拟机上指定端口的。Vagrantfile中设定语法为:
config.vm.forwarded_port 80, 8080
以上将访问宿主计算机8080端口的请求都转发到虚拟机的80端口上进行处理。
默认只转发TCP包,UDP需要额外添加以下语句:
config.vm.forwarded_port 80, 8080, protocol: "udp"
优点:
简单易理解
容易实现外网访问虚拟机
缺点:
如果一两个端口需要映射很容易,但是如果有有很多端口,比如MySQL,MongoDB,tomcat等服务,端口比较多时,就比较麻烦。
不支持在宿主机器上使用小于1024的端口来转发。比如:不能使用SSL的443端口来进行https连接。
私有网络(Private network) ,只有主机可以访问虚拟机,如果多个虚拟机设定在同一个网段也可以互相访问,当然虚拟机是可以访问外部网络的。设定语法为:
config.vm.network "private_network", ip: "192.168.50.4"
优点:
安全,只有自己能访问
缺点:
因为私有的原因,所以团队成员其他人不能和你写作
公有网络(Public network) ,虚拟机享受实体机器一样的待遇,一样的网络配置,vagrant1.3版本之后也可以设定静态IP。设定语法如下:
config.vm.network "public_network", ip: "192.168.1.120"
公有网络中还可以设置桥接的网卡,语法如下
config.vm.network "public_network", :bridge => 'en1: Wi-Fi (AirPort)'
优点:
方便团队协作,别人可以访问你的虚拟机
缺点:
需要有网络,有路由器分配IP