两个版本 Vagrant Homestead box 及其虚拟机共存

背景:由于旧 homestead 虚拟机 (homestead-7) 中有项目仍在进行中不能删除,故尝试在同一物理机的 vagrant 上装两个 box 版本不同的 homestead vagrant box(laravel/homestead,train/homestead),再在新文件夹中 clone homestead 管理脚本,使用新版本的 homestead vagrant box 创建新的 homestead(homestead-7-19-1)虚拟机。

1. 下载和导入 Homestead Box#

进行 Homestead 的安装,首先需要下载 Homestead 虚拟机盒子。

下载后的文件为 lc-homestead-6.1.1-2018090400.zip,对其进行 zip 解压操作,解压成功后可以看到目录 lc-homestead-6.1.1-2018090400,此目录下包含两个文件:

virtualbox.box(Laravel 开发环境部署 - 教程定制化过的 Homestead 盒子)
metadata.json(盒子的导入配置文件)(文件内容如下图,name 将成为新 vagrant box 的名字,下文使两个 homestead vagrant box 共存时,可能需要更改。曾在旧版本 vagrant 中配置过两个同名但版本不用的 box,新版未尝试)

将”lc/homestead” 修改为’train/homestead’,在解压目录中 lc-homestead-6.1.1-2018090400 运行以下命令导入 Box:

> vagrant box add metadata.json

输入以下命令查看所有 vagrant box

注意:请必须解压到 非中文路径。

2. 下载 Homestead 【管理脚本】#

使用教程中定制版本的 Homestead 脚本,

> git clone https://git.coding.net/summerblue/homestead.git newHomestead

下载完成之后我们使用命令行进入 newHomestead 目录,再使用 Git 检出我们需要的 Homestead 版本:

> cd ~/newHomestead
> git checkout v7.8.0

注:为了保证后续讲解的流畅性,请注意版本的一致性,这里我们使用 v7.8.0。

接下来我们需要初始化 Homestead:

> bash init.sh

运行以上命令后,会在~/Homestead 目录下生成以下三个文件:

Homestead.yaml - 主要配置信息文件,我们可以在此文件中配置 Homestead 的站点和数据库等信息;
after.sh - 每一次 Homestead 盒子重置后(provision)会调用的 shell 脚本文件;
aliases - 每一次 Homestead 盒子重置后(provision),会被替换至虚拟机的~/.bash_aliases 文件中,aliases 里可以放一些快捷命令的定义。

3. 修改 new/Homestead/script/homestead.rb 中的#

# Configure The Box
config.vm.define settings["name"] ||= "homestead-7" 
config.vm.box = settings["box"] ||= "lc/homestead"

# Configure The Box
config.vm.define settings["name"] ||= "homestead-7-19-1"
#  关键修改!此为实际虚拟机的名字(在virtualBox上能看见,若不修改,可能会在vagrant up过程中把其他homestead虚拟机覆盖,未验证)
config.vm.box = settings["box"] ||= "train/homestead"
//  此为步骤1中创建的vagrant box的名字

若缺失此步骤,会出现错误:

4. 在 newHomestead 目录中,输入以下命令启动虚拟机#

> vagrant up

成功

Vagrant box 管理界面

ssh 测试

> vagrant ssh

5、未解决的问题#

可能由于环境宿主机中的 virtual box 版本过旧,vagrant up 时有报错

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。