两个版本 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 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!