两个版本 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 协议》,转载必须注明作者和本文链接