vagrant
最近在配Lavalel的环境时接触到了vagrant虚拟机,vagrant是什么呢?
Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它 使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境。
开始使用
- 下载安装 VirtualBox
下载地址:https://www.virtualbox.org/wiki/Downloads - 安装 Vagrant
下载地址:http://downloads.vagrantup.com/ 根据提示一步步安装。 - 下载系统镜像
在init vagrant时可以直接添加系统镜像,考虑到国内的网速情况,建议先使用迅雷等下载工具先下载好系统镜像。 官方封装好的基础镜像:
Ubuntu precise(12.04)32 VirtualBox: http://files.vagrantup.com/precise32.box
Ubuntu precise(12.04)64 VirtualBox: http://files.vagrantup.com/precise64.box 另外这里列出了其他的一些镜像,你可以根据你服务器的环境来选择。 http://www.vagrantbox.es/ - 添加镜像到 Vagrant
假设我们下载的镜像存放路径是 ~/Download/precise64.box,在终端里输入:
$ vagrant box add ubuntu12_04 ~/Download/precise64.box ubuntu12_04是我们给这个box取的名字,你完全可以根据你的习惯来命名。 ~/Download/precise64.box 则是我们上一步下载的系统镜像所在的路径。 - 初始化开发环境
创建一个开发目录(比如:~/vagrant),你也可以使用已有的目录,切换到开发目录里,用 ubuntu12_04 镜像初始化当前目录的环境:
$ cd ~/vagrant # 切换目录
$ vagrant init ubuntu12_04 # 初始化
初始化完成之后,就会在当前目录生成Vagrantfile,这就是vagrant的配置文件,可以修改这个配置文件进行一些个性化的定制,比如网络连接方式,共享的目录等。
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu_12_04" #定义此虚拟机是从哪个box生成,名字就是我们box add时的名字
config.vm.network "private_network", ip: "192.168.110.100" #私有网络配置
config.vm.synced_folder ".", "/vagrant" # 将当前目录映射到虚拟机上的/vagrant 目录
#awesome configuration goes here...
end
启动vagrant并通过SSH连接
上一步初试化完成之后,可以先修改Vagrantfile,也可以使用默认配置,然后启动vagrant。 $ vagrant up # 启动环境
你会看到终端显示了启动过程,启动完成后,我们就可以用 SSH 登录虚拟机了。然后就像登录到了一台VPS或服务器,进行环境的配置。
$ vagrant ssh # SSH 登录
当配置好相关的环境之后,就可以将当前配置好的虚拟机打包成box,存盘备用,也可以分发给Team的其他同事,统一开发环境。
vagrant package --output NAME --vagrantfile FILE
可选参数:
--output NAME : (可选)设置通过NAME来指定输出的文件名
--vagrantfile FILE:(可选)可以将Vagrantfile直接封进box中关闭Vagrant
vagrant suspend 将虚拟机挂起,虚拟机内存都保存到硬盘上,下次可以快速恢复。 vagrant halt 将虚拟机关闭,虚拟机内存释放,下次启动要慢一点。 vagrant destroy 将虚拟机删除,所有变更都丢失,下次启动要重新克隆一个 Vagrant box。 无论那种方式关闭,要再启动 Vagrant 都是用 vagrant up 命令。
配置homestead环境
步骤
- 命令: vagrant box add laravel/homestead ,这句会去下载一个box,需要一段时间,看网速
- 命令: git clone https://github.com/laravel/homestead.git Homestead ,找一个目录用来存放虚拟机配置的去执行这句命令
- 编辑git clone后文件目录中的 Homestead.yaml 文件,一看就懂,懒得说
但是由于网速的原因,第一步经常安装失败,于是我就从网上下载了homestead的官方box文件,再vagrant box add,然后初始化vagrantfile,在vagrant up时突然报了以下错误:
大意就是ssh连接失败了,苦思冥想,纵欲找到了原因:问题出在vagrantfile身上。
我的vagrantfile文件