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