标签:
我们需要一种更好的管理虚拟机的方法。比如你可能想创建几个 Linux 系统的虚拟机,因为你开发的项目最终是要运行在 Linux 系统的服务器上。所以,你打算在本地也用 Linux 系统为项目搭建一个开发环境,手工去安装不同类型的 Linux 操作系统太麻烦了。你需要 Vagrant。
Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/python/ruby/java 这类语言开发 web 应用,“代码在我机子上运行没有问题”这种说辞将成为历史。
我们可以通过 Vagrant 封装一个 Linux 的开发环境,分发给团队成员。成员可以在自己喜欢的桌面系统(Mac/Windows/Linux)上开发程序,代码却能统一在封装好的环境里运行,非常霸气
Vagrant 可以让我们用命令直接从云上下载虚拟机的镜像,你想要什么系统都行,Centos,Ubunto ... 只需要一行命令,然后再用命令去操作虚拟机,启动,暂停,关闭,重启,你可以更方便的管理所有的在本地上电脑上的虚拟机镜像,手工去配置它们,可以再重新打包成新的镜像,方便你跟你的团队在其它的项目上重复使用。
虚拟机还是得依靠 VirtualBox 来搭建,免费小巧。(推荐安装4.2.16 别的好像有一些bug)
下载地址:https://www.virtualbox.org/wiki/Downloads
* 虽然 Vagrant 也支持 VMware,不过 VMware 是收费的,对应的 Vagrant 版本也是收费的
下载地址:http://downloads.vagrantup.com/ 根据提示一步步安装。
此外,还得下载官方封装好的基础镜像:
Ubuntu precise 32 VirtualBox http://files.vagrantup.com/precise32.box
Ubuntu precise 64 VirtualBox http://files.vagrantup.com/precise64.box
如果你要其他系统的镜像,可以来这里下载:http://www.vagrantbox.es/
* 鉴于国内网速,我们将下载镜像的步骤单独剥离出来了
Box ,你可以把它想成是一个箱子,里面装了一些东西。在用 Vagrant 创建虚拟机的时候,需要用到 Box ,它里面会包装操作系统的镜像,不同的 Box 带的操作系统可能是不一样的,比如 CentOS,Ubuntu 等等,你可以基于它们去创建自己版本的 Box,比如在虚拟机上安装一些软件,然后把它重新打包成 Box 。
在 Vagrant 提供的云服务(https://vagrantcloud.com/)上面可以下载到别人做好的 Box,这个云服务现在叫 Atlas,是 hashicorp 公司的一个产品,Vagrant 也是这家公司的项目。打开这个地址以后,可以去搜索想要用的 Box,可以搜索操作系统的名字,也可以搜索特定的软件的名字,比如 Laravel,Drupal ... 在搜索结果上面会显示这个 Box 的下载的次数,你可以用来判断这个 Box 是否受欢迎。
我们需要一个纯净的 Box,就是只包含操作系统,在系统上没有安装其它的多余的东西。注意不同发行版的 Linux 操作起来是有些区别的,我推荐先用一下 CentOS 这款操作系统。
你要把 Box 下载到本地的电脑上,交给 Vagrant 去管理,这样在创建虚拟机的时候,Vagrant 会复制一份你指定的 Box 到你的项目里面,这样你在这个虚拟机上的操作,就不会影响到其它的项目。先确定你用的电脑上的操作系统的位数,现在一般都是 64 位的操作系统。打开命令行工具以后,执行 vagrant box add 命令去添加 Box 。
vagrant box add 名字
如果你指定的 Box 在本地电脑上不存在,Vagrant 就会到它的云上去给你下载。执行:
vagrant box add chef/centos-6.5
如果是 32 位的操作系统,请执行:
vagrant box add chef/centos-6.5-i386
上面的 chef/centos-6.5 还有 centos-6.5-i386 就是想要添加的 Box 的名字,最前面的 chef ,是一个命名空间,一般就是这个 Box 的作者的名字,后面的 centos-6.5 表示这个 Box 的操作系统是 CentOS ,版本是 6.5 ,i386 表示 32 位的系统。
Vagrant 在本地没找到你要添加的 Box,它会到云上去给你下载,它会先提示让你选择 Box 的版本,有用在 Virtualbox 上的 Box ,还有用在 VMware 上的 Box,选择哪个取决于你系统上安装的虚拟机的软件是什么,如果你按照我的步骤,安装的应该是 Virtualbox ,所以,选择要选择 1 ,然后回车,继续执行命名
完成以后,可以查看一下在本地上的 Box 列表。
vagrant box list
在执行 Vagrant box add 添加 Box 的时候,Vagrant 会在命令行上显示 Box 的下载地址,下载的速度还有进度,如果你在国内,很可能下载的速度非常慢。你可以复制 Box 的下载地址,然后用下载工具,比如用迅雷去下载。在 Powershell 上面复制,可以先选中要复制的东西,然后按一下回车,再打开迅雷,粘贴下载的地址去下载 Box 。
完成以后,找到下载下来的文件,文件名里会包含 .box 这个扩展名,如果不是,你需要手工添加这个扩展名。并且重命名一下文件,比如命名为 centos_6.5.box 。然后把它放到桌面上,其它地方也行。打开命令行,进入到手工下面的 Box 文件所在的位置。比如
cd ~/desktop
然后查看一下文件列表:
ls
确定 Box 文件在当前的目录的下面,再执行 vagrant box add 命令去手工添加 Box 。
vagrant box add 名称 路径
名称就是你想给这个 Box 起的名字,以后我们会用到这个名字去管理这个 Box,路径是 Box 文件所在的位置,如果你要添加的 Box 直接在你当前所在的目录的下面,可以直接使用 Box 文件的名称,像这样:
vagrant box add centos-6.5 centos-6.5.box
Vagrant 会把 Box 文件复制到系统的某个特定的目录的下面,完成以后,你就可以把桌面上的 Box 文件删除掉了。
rm centos-6.5.box
再查看一下可用的 Box 列表:
vagrant box list
在返回的列表里,你应该可以找到自己手工添加的 centos-6.5 这个 Box 。
添加到本地电脑上的 Box 会放到一个特定的目录的下面。跟 Box 相关的命令,可以用 vagrant box 命令查看。使用的方法就是 vagrant box 后面再加上子相应的子命令,接着是对应的参数。常用的就是 add ,list 还有 remove。add 是添加新的 Box ,list 可以查看已有的 Box ,remove 就是从系统中删除掉 Box 。注意在创建虚拟机的时候,Vagrant 会把你指定的 Box 复制一份放到特定的目录的下面。所以,你在使用 remove 命令删除掉添加到系统中的 Box 的时候,不会影响到这些已有的虚拟机。
添加了 Box 以后,我们就可以用 Vagrant 基于这个 Box 去创建虚拟机了。先找个地方去创建一个目录,这个目录就是你的项目所在的目录,它会自动跟虚拟机上的某个目录同步,也就是在你电脑上的这个目录里面的文件,你同样可以在虚拟机里的某个目录里面找到。比如我要在桌面上创建一个叫 ninghao-project 的目录,然后再进入到这个目录,在命令行工具下面执行:
cd ~/desktop mkdir ninghao-project cd ninghao-project
首先要做的就是初始化一下,用 vagrant init ,后面指定一下要使用的 Box 的名字。完成以后,在你的目录下面创建一个叫 Vagrantfile 的文件。
先查看一下可用的 Box
vagrant box list
如果跟着我的步骤来,你应该可以看到一个叫 centos-6.5 的 Box 。下面我们用这个 Box 去初始化一下项目。
vagrant init centos-6.5
完成以后,查看一下当前目录下面的东西。
ls
你会看到一个 Vagrantfile 文件,这个文件是配置当前项目的虚拟机用的,以后我们会再回来看一下怎么样使用这个文件。
Vagrant 提供了一些命令可以操作虚拟机,比如启动,暂停,关闭或者销毁虚拟机。启动虚拟机,执行:
vagrant up
第一次启动,花的时间会长一些,因为 Vagrant 会把你为项目指定的 Box 复制到一个地方,然后再去启动它。完成以后,你可以用命令再查看一下虚拟机的状态:
vagrant status
如果返回的是 running ,说明虚拟机启动成功,现在你就可以使用 ssh 连接到虚拟机,去控制它了。
想在 Linux 系统的虚拟机上进行操作,你要用 ssh 连接到虚拟机,这跟你远程控制 Linux 的服务器是一样的。如果你是 Mac 用户,可以先进入到项目所在的目录,然后直接用 vagrant ssh ,连接到虚拟机。Windows 用户要用 putty 去连接。
vagrant ssh
用 vagrant up 启动虚拟机以后,可以接着再输入 vagrant ssh,会出现提示,说没找到 SSH,你可以选择自己喜欢的 SSH 客户端,然后用下面的的信息连接。
Host:127.0.0.1 Port:2200 Username:vagrant
打开 putty 工具以后,连接的类型选择 ssh ,然后输入主机的 IP 地址,127.0.0.1 ,port 端口号输入 2200,点击 连接。这样会打开一个命令行工具,提示你输入用户名,这个用户名就是你想连接的 Linux 系统的用户名,Vagrant 会为虚拟机创建一个叫 vagrant 的用户,这个用户的密码也是 vagrant ,输入用户名,再输入密码以后,就可以成功的连接到 Linux 系统的虚拟机了。
用 Putty 连接虚拟机成功以后,对虚拟机的操作,都是在这个小工具上进行。
使用这种方法,你同样可以去控制在互联网上的 Linux 系统的服务器,打开 putty 的时候,连接的主机输入你的服务器的 IP 地址就可以了,然后是你的服务器的用户名,还有密码。
到此vagrant 添加 box 的工作完成,准备搭建lamp或者lnmp 环境
部署好lamp环境将其进行打包
当你配置好开发环境后,退出并关闭虚拟机。在终端里对开发环境进行打包:
$ vagrant package
打包完成后会在当前目录生成一个 package.box
的文件,将这个文件传给其他用户,其他用户只要添加这个 box 并用其初始化自己的开发目录就能得到一个一模一样的开发环境了。
$ vagrant init # 初始化$ vagrant up # 启动虚拟机$ vagrant halt # 关闭虚拟机$ vagrant reload # 重启虚拟机$ vagrant ssh # SSH 至虚拟机$ vagrant status # 查看虚拟机运行状态$ vagrant destroy # 销毁当前虚拟机
标签:
原文地址:http://my.oschina.net/u/998304/blog/501331