我们需要一种更好的管理虚拟机的方法。比如你可能想创建几个 Linux 系统的虚拟机,因为你开发的项目最终是要运行在 Linux 系统的服务器上。所以,你打算在本地也用 Linux 系统为项目搭建一个开发环境,手工去安装不同类型的 Linux 操作系统太麻烦了。你需要 Vagrant。 Vagrant 可以让我们用命令直接从云上下载虚拟机的镜像,你想要什么系统都行,Centos,Ubunto ... 只需要一行命令,然后再用命令去操作虚拟机,启动,暂停,关闭,重启,你可以更方便的管理所有的在本地上电脑上的虚拟机镜像,手工去配置它们,可以再重新打包成新的镜像,方便你跟你的团队在其它的项目上重复使用。 安装 VagrantVagrant 提供了一个虚拟机的管理层,虚拟机本身还是需要用到虚拟机的软件,比如 VMware,Virtualbox 等等,推荐用 Virtualbox 。使用系统的包管理工具去安装软件。 Windows 上安装 Vagrantchoco install vagrant Windows 上安装 Virtualboxchoco install virtualbox Mac 上安装 Vagrantbrew install vagrant Mac 上安装 Virtualboxbrew install Caskroom/cask/virtualbox BoxBox ,你可以把它想成是一个箱子,里面装了一些东西。在用 Vagrant 创建虚拟机的时候,需要用到 Box ,它里面会包装操作系统的镜像,不同的 Box 带的操作系统可能是不一样的,比如 CentOS,Ubuntu 等等,你可以基于它们去创建自己版本的 Box,比如在虚拟机上安装一些软件,然后把它重新打包成 Box 。 在 Vagrant 提供的云服务(https:///)上面可以下载到别人做好的 Box,这个云服务现在叫 Atlas,是 hashicorp 公司的一个产品,Vagrant 也是这家公司的项目。打开这个地址以后,可以去搜索想要用的 Box,可以搜索操作系统的名字,也可以搜索特定的软件的名字,比如 Laravel,Drupal ... 在搜索结果上面会显示这个 Box 的下载的次数,你可以用来判断这个 Box 是否受欢迎。 我们需要一个纯净的 Box,就是只包含操作系统,在系统上没有安装其它的多余的东西。注意不同发行版的 Linux 操作起来是有些区别的,我推荐先用一下 CentOS 这款操作系统。 添加 Box你要把 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 add chef/centos-6.5 ==> box: Loading metadata for box 'chef/centos-6.5' box: URL: https://atlas./chef/centos-6.5 This box can work with multiple providers! The providers that it can work with are listed below. Please review the list and choose the provider you will be working with. 1) virtualbox 2) vmware_desktop Enter your choice: Vagrant 在本地没找到你要添加的 Box,它会到云上去给你下载,它会先提示让你选择 Box 的版本,有用在 Virtualbox 上的 Box ,还有用在 VMware 上的 Box,选择哪个取决于你系统上安装的虚拟机的软件是什么,如果你按照我的步骤,安装的应该是 Virtualbox ,所以,选择要选择 1 ,然后回车,继续执行命名。 查看本地上的 Box 列表完成以后,可以查看一下在本地上的 Box 列表。 vagrant box list 手工下载并添加 Box 的方法在执行 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 会放到一个特定的目录的下面。跟 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 去连接。 Macvagrant ssh Windows用 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 地址就可以了,然后是你的服务器的用户名,还有密码。 安装 putty choco install putty 打开 putty,可以直接在 Powershell 里面输入 putty ,然后回车。 在 Windows 上使用 Vagrant 初始化并连接虚拟机 暂停与恢复虚拟机在运行的时候会消耗你的电脑资源,比如内存,CPU 等等,在不用它的时候,可以关掉或者使用暂停,暂停虚拟机可以保存虚拟机运行时候的状态,暂停以后,除了占点硬盘空间以外,就不会消耗你的其它资源了。 进入到项目所在的目录,然后可以用 vagrant status 查看一下当前的虚拟机的状态,如果是 running ,你就可以使用命令去暂停一下: vagrant suspend 重新恢复起动,执行命令: vagrant resume 想要彻底关掉虚拟机的运行,执行: vagrant halt 停止以后,要想再起动虚拟机,要执行: vagrant up 删除虚拟机不打算再用的虚拟机,可以把它删除掉,直接删除项目的目录是不行的,因为为项目指定的虚拟机并不包含在这个项目的目录下面,需要使用命令去删除虚拟机。进入到项目所在目录,然后执行: vagrant destroy路径 Vagrant |
|