Jinyun's Notes

没什么天赋,爱好也不多,但愿坚持做些喜欢的事情

0%

Mac 搭建 Homestead 集成开发环境

介绍

Laravel 致力于使整个 PHP 开发体验变得愉快,包括你的本地开发环境。Vagrant 提供了一个简单、优雅的方式来管理和配置虚拟机。

Laravel Homestead 是一个官方预载的 Vagrant 盒子,旨在提供你一个美好的开发环境,而不需要在你的本地机器 中去安装 PHP,Web 服务器和其它任何服务软件。再也不用担心会搞乱你的操作系统!Vagrant 盒子完全是一次性的。如果出现问题,你可以在几分钟内销毁并重新创建它!

Homestead 运行在任何 Windows,Mac,或者 Linux 系统上,并包含 Nginx Web 服务器,PHP 7.2,PHP 7.1,PHP 5.6,MySQL,Redis,Memcached,Node,以及开发令人惊叹的 Laravel 应用程序所需的所有其他好东西。

如果你使用 Windows,你需要开启硬件虚拟化(VT-x)。它通常是通过你的 BIOS 去开启。如果你在一个 UEFI 系统上使用 Hyper-V,为了访问 VT-x,你可能还需要去禁用 Hyper-V。

内置软件

  • Ubuntu 18.04
  • Git
  • PHP 7.2
  • PHP 7.1
  • PHP 7.0
  • PHP 5.6
  • Nginx
  • Apache(可选)
  • MySQL
  • MariaDB(可选)
  • Sqlite3
  • PostgreSQL
  • Composer
  • Node(Yarn,Bower,Grunt 和 Gulp)
  • Redis
  • Memcached
  • Beanstalkd
  • Mailhog
  • Neo4j(可选)
  • MongoDB(可选)
  • Elasticsearch(可选)
  • ngrok
  • wp-cli
  • Zend Z-Ray
  • Go
  • Minio

总之一句话,巨牛逼。如果这些东西让你自己折腾,怎么着也得大半天吧。想想我朝这个网络,你能顺利的搞定那简直就是牛逼中的战斗机。

安装与配置

起步

在启动 Homestead 环境之前,你必须安装 VirtualBox 5.2VMWareParallels 或者 Hyper-V 以及 Vagrant。所有这些软件包都为所有流行的操作系统提供了易于使用的可视化安装程序。

为了使用 VMware 提供者,你将需要去购买 VMware Fusion / Workstation 和 VMware Vagrant plug-in。尽管它不是免费的,VMware 比其它盒子能提供更快的共享文件夹性能。

为了使用 Parallels 提供者,你将需要安装 Parallels Vagrant plug-in,它是免费的。

因为 Vagrant limitations,Hyper-V 提供者将忽略所有的网络设置。

安装 Homestead Vagrant 盒子

一旦 VirtualBox / VMware 和 Vagrant 被安装,你应当在你的终端中使用如下的命令将 laravel/homestead 添加到你的 Vagrant 安装中。下载盒子耗费的时间取决于你的网速:

1
2
3
$ vagrant box add laravel/homestead
==> vagrant: A new version of Vagrant is available: 2.1.4!
==> vagrant: To upgrade visit: https://www.vagrantup.com/downloads.html

如果此命令失败,确保你安装的 Vagrant 是最新的。

安装 Homestead

你可以安装 Homestead 通过克隆仓库。考虑克隆仓库到你的『home』目录下的一个 Homestead 文件夹下,这样 Homestead 盒子服务将作为你的所有 Laravel 项目的主机:

1
2
$ git clone https://github.com/laravel/homestead.git ~/Homestead
Cloning into 'Homestead'...

你应当检查 Homestead 的标记版本,因为 master 分支不总是稳定的。你能在 GitHub Release Page 找到最新的稳定版:

1
2
3
4
$ cd ~/Homestead

// Clone the desired release...
$ git checkout v7.14.2

一旦你克隆克隆了 Homestead 仓库,从 Homestead 目录运行 bash init.sh 命令去创建 Homestead.yaml 配置文件。此 Homestead.yaml 文件将位于 Homestead 目录中:

1
2
3
4
5
// Mac / Linux...
$ bash init.sh

// Windows...
> init.bat

配置 Homestead

设置你的提供者

在你的 Homestead.yaml 文件中的 provider 键名表示哪个 Vagrant 提供者应当被使用:virtualboxvmware_fusionvmware_workstationparallels 或者 hyperv。你可以设置你偏好的提供者:

1
provider: virtualbox

配置共享文件夹

Homestead.yaml 文件中的 folders 属性列出了你希望与你的 Homestead 环境共享的所有文件夹。在这些文件夹下的文件发生改变时,他们将在你的本地机器和 Homestead 环境之间保持同步。你可以根据需要去配置任意数量的共享文件夹。

1
2
3
folders:
- map: ~/code
to: /home/vagrant/code

如果你仅仅创建一些站点,这个能用的映射将正常工作。然而,随着站点数量的不断增加,你可能会遇到性能问题。在包含大量文件的低端机器或者项目中,这个问题可能非常明显。如果你遇到这个问题,尝试将每个项目映射到其自己的 Vagrant 文件夹下:

1
2
3
4
5
6
folders:
- map: ~/code/project1
to: /home/vagrant/code/project1

- map: ~/code/project2
to: /home/vagrant/code/project2

要开启 NFS,你仅仅需要增加一个简单的标志到你的同步文件配置中:

1
2
3
4
folders:
- map: ~/code
to: /home/vagrant/code
type: "nfs"

当使用 NFS 时,你应当考虑安装 vagrant-bindfs 插件。这个插件将为 Homestead 盒子中的文件和目录维护正确的 user / group 权限。

你也可以传递通过 options 键下列出它们的 Vagrant 的 Synced Folders 所支持的任何选项:

1
2
3
4
5
6
7
folders:
- map: ~/code
to: /home/vagrant/code
type: "rsync"
options:
rsync__args: ["--verbose", "--archive", "--delete", "-zz"]
rsync__exclude: ["node_modules"]

配置 Nginx 站点

不熟悉 Nginx?没问题。sites 属性允许你轻松映射一个『domain』到你的 Homestead 环境的一个文件夹。在 Homestead.yaml 文件中包含一个示例站点配置,你可以根据需要添加许多站点到你的 Homestead 环境。Homestead 能作为一个方便的,虚拟化的环境为你工作的每一个 Laravel 项目服务:

1
2
3
sites:
- map: homestead.test
to: /home/vagrant/code/Laravel/public

如果你改变 sites 属性在配置 Homestead 盒子后,你应当重新运行 vagrant reload --provision 去更新虚拟机中的 Nginx 配置。

主机文件

你必须在你机器的 hosts 文件中为 Nginx 站点添加『domains』。hosts 文件将把你的 Homestead 站点请求重定向到你的 Homestead 机器。在 Mac 和 Linux 中,这个文件位于 /etc/hosts。在 Windows 中,位于 C:\Windows\System32\drivers\etc\hosts。你添加到此文件中的行看起来像如下这样:

1
192.168.10.10  homestead.test

确保列出的 IP 地址是 Homestead.yaml 文件中设置的 IP 地址。一旦你添加域名到你的 hosts 文件,启动 Vagrant 盒子后你能在你的 Web 浏览器中访问它:

1
http://homestead.test

启动 Vagrant 盒子

一旦你根据你的喜好编辑 Homestead.yaml 后,从你的 Homestead 目录运行 vagrant up 命令。Vagrant 将启动虚拟机并自动配置你的共享文件夹和 Nginx 站点。

在销毁虚拟机,你可以使用 vagrant destroy --force 命令。

按项目安装

你可以为你所管理的每个项目配置配置一个 Homestead 实例,而不是在全局范围内安装 Homestead 并在所有的项目中共享相同的 Homestead 盒子。如果你希望随项目一起发送一个 Vagrantfile,那么为每个项目安装 Homestead 可能是大有裨益的,允许其它人在项目中 vagrant up 进行工作。

要直接将 Homestead 安装到你的项目,需要使用 Composer:

1
$ composer require laravel/homestead --dev

一旦 Homestead 被安装,使用 make 命令去生成 VagrantfileHomestead.yaml 文件在你的项目根目录。make 命令将自动配置 sitefolders 指令在 Homestead.yaml 文件中。

1
2
3
4
5
// Mac / Linux
$ php vendor/bin/homestead make

// Windows
$ vendor\\bin\\homestead make

接下来,在终端中运行 vagrant up 命令并在浏览器中输入 http://homestead.test 去访问你的项目。记住,你将需要添加一个 homestead.test/etc/hosts 文件中或者你自定义的域名。

安装 MariaDB

如果你偏好使用 MariaDB 而不是 MySQL,你可以在 Homestead.yaml 文件中添加 mariadb 选项。这个选项将移除 MySQL 并安装 MariaDB。MariaDB 服务作为 MySQL 的一个替代品,因此你仍然在你的应用程序数据库配置中使用 mysql 数据库驱动:

1
2
3
4
5
6
box: laravel/homestead
ip: "192.168.10.10"
memory: 2048
cpus: 4
provider: virtualbox
mariadb: true

安装 MongoDB

要安装 MongoDB 社区版,更新你的 Homestead.yaml 文件用如下的配置选项:

1
mongodb: true

默认的 MongoDB 安装将设置数据库用户名为 homestead,相应地密码为 secret

安装 Elasticsearch

要安装 Elasticsearch,添加 elasticsearch 选项到你的 Homestead.yaml 文件并指定一个支持的版本,该版本可能是一个主版本或者一个精确的版本号(主版本号.次版本号.修复版本号)。默认安装将创建一个名为 homestead 的集群。你应当从不给 Elasticsearch 超过操作系统一半的内存,所以要确保你的 Homestead 机器至少有两倍的 Elasticsearch 分配的内存:

1
2
3
4
5
6
box: laravel/homestead
ip: "192.168.10.10"
memory: 4096
cpus: 4
provider: virtualbox
elasticsearch: 6

查阅 Elasticsearch documentation 去学习如何自定义你的配置。

安装 Neo4j

Neo4j 是一个图形数据库管理系统。要安装 Neo4j 社区版,更新你的 Homestead.yaml 文件用如下的配置选项:

1
neo4j: true

默认的 Neo4j 安装将设置数据库的用户名为 homestead,相应的密码为 secret。要访问 Neo4j,用浏览器访问 http://homestead.test:7474 地址。你的端口 7687(Bolt),7474(HTTP),7473(HTTPS)是准备好服务来自 Neo4j 客户端的请求的。

别名

你可以通过在你的 Homestead 目录下修改 aliases 文件添加 Bash 别名到你的 Homestead 机器:

1
2
alias c='clear'
alias ..='cd ..'

随后你需要更新 aliases 文件,你应当使用 vagrant reload --provision 命令重新配置 Homestead 机器。这将确保在机器中你的新别名可用。

踩过的坑

装载 Homestead 镜像

官方的命令是这样的,如果你觉得执行下面命令没问题,那你真是 too young too simple,我可是踩过坑的。

1
$ vagrant box add laravel/homestead

执行上面命令后,你在 vagrant up 是时会遇到 Box 'laravel/homestead' could not be found 这个不是问题的问题,怎么办,不能凉拌吧。也好办,不就搜索吗? 别搜了,跟我上:

1
2
3
$ mkdir -pv ~/Homestead
$ cd ~/Homestead
$ git clone https://github.com/laravel/homestead.git

查看你的 box 列表

1
2
3
4
5
6
// `virtualbox` 版本为 `0`
$ vagrant box list
laravel/homestead (virtualbox, 0)

// 删除这个添加的 `box`
$ vagrant box remove laravel/homestead

~/Homestead/scripts/homestead.rb 文件中有这么一行,要求版本必须是大于 4.0.0,怎么样,我没骗你吧,版本居然不一致。小意思,改下版本号嘛,可别,咱能不碰代码就不碰:

1
config.vm.box_version = settings["version"] ||= ">= 4.0.0"

打开克隆的项目,根目录创建 Homestead.json 文件,文件填入以下内容

1
2
3
4
5
6
7
8
9
10
{
"name": "laravel/homestead",
"versions": [{
"version": "5.0.1",
"providers": [{
"name": "virtualbox",
"url": "file:///path/to/homestead-virtualbox.box"
}]
}]
}

好了,走一个试试

1
2
3
$ vagrant box add Homestead.json
$ vagrant box list
laravel/homestead (virtualbox, 5.0.1)

必须卧槽呀,版本号回来了,好了,我们出发

生成 key

1
2
3
4
$ mkdir -pv ~/.ssh/homestead

// 文件路径及名称为: ~/.ssh/homestead/homestead_rsa
$ ssh-keygen -t rsa -C "lumen@homestead"

配置

这个基本上是在修改 ~/Homestead/Vagrantfile 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/homestead/homestead_rsa.pub

keys:
- ~/.ssh/homestead/homestead_rsa

folders:
- map: ~/Codes
to: /home/vagrant/workspace

sites:
- map: dev.lumen.com
to: /home/vagrant/workspace/lumen/public

databases:
- homestead

# blackfire:
# - id: foo
# token: bar
# client-id: foo
# client-token: bar

# ports:
# - send: 50000
# to: 5000
# - send: 7777
# to: 777
# protocol: udp

启动并进入虚拟机

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 启动
$ vagrant up

// 登录虚拟机
$ vagrant ssh
Welcome to Ubuntu 16.04.5 LTS (GNU/Linux 4.4.0-101-generic x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage

102 packages can be updated.
29 updates are security updates.


Last login: Thu Aug 30 13:32:04 2018 from 10.0.2.2

日常操作

全局访问 Homestead

有时你想文件系统的任何地方 vagrant up 你的 Homestead 机器。你能这样做,在 Mac / Linux 系统上通过添加一个 Bash 函数到你的 Bash 简介中。在 Windows 中,你可以通过添加一个『batch』文件到 PATH 来完成这个操作。这些脚本将允许你在你的系统的任何地方运行任何 Vagrant 命令,并自动将该命令指向你的 Homestead 安装目录:

Mac / Linux

1
2
3
function homestead() {
( cd ~/Homestead && vagrant $* )
}

确保函数中的 ~/Homestead 路径调整到实际 的 Homestead 安装的位置。一旦该函数被安装,你可以从你的系统的任何位置运行像 homestead up 或者 homestead ssh 命令。

Windows

在你的机器的任何位置创建一个如下内容的 homestead.bat 批处理文件:

1
2
3
4
5
6
7
8
9
10
@echo off

set cwd=%cd%
set homesteadVagrant=C:\Homestead

cd /d %homesteadVagrant% && vagrant %*
cd /d %cwd%

set cwd=
set homesteadVagrant=

确保在脚本中的实例 C:\Homestead 路径调整为 Homestead 实际安装的位置。创建文件之后,针文件添加到 PATH 中。然后,你可以在你的系统的任何地方运行像 homestead up 或者 homestead ssh 之类的命令。

通过 SSH 连接

你能从你的 Homestead 目录中通过在终端中发送 vagrant ssh 命令来 SSH 到你的虚拟机中。

但是,由于你可能需要经常 SSH 到你的 Homestead 机器,考虑将上面的『function』 添加到主机以快速 SSH 到 Homestead 盒子中。

数据库连接

一个 homestead 数据库配置了开箱即用的 MySQL 和 PostgreSQL。为了更加方便,Laravel 的 .env 文件配置到框架以开箱即用此数据库。

要从你的主机的数据库客户端连接到你的 MySQL 或者 PostgreSQL 数据库,你应当连接 127.0.0.1 和端口为 33060(MySQL)或者 54320(PostgreSQL)。两个数据库的用户名和密码是 homestead / secret

当从你的主机连接到数据库时,你应当仅使用这些非标准端口。由于 Laravel 在虚拟机中运行。你将在你的 Laravel 数据库配置文件中使用默认的 3306 和 5532 端口。

数据库备份

当你的 Vagrant 盒子销毁时,Homestead 能自动备份你的数据库。为了使用这个功能,你必须使用 Vagrant 2.1.0 或者更高的版本。或者,如果你使用一个旧版本的 Vagrant,你必须安装 vagrant-triggers 插件。为了开启自动数据库备份,添加如下的行到你的 Homestead.yaml 文件:

1
backup: true

一旦配置了,当 vagrant destroy 命令被执行时,Homestead 将导出你的数据库到 mysql_backuppostgres_backup 目录。如果你使用 per project installation 方法,则可以在克隆的 Homestead 或者在你的项目根目录中找到这些目录。

添加额外的站点

一旦你的 Homestead 环境已配置并运行,你可以为你的 Laravel 应用添加额外的 Nginx 站点。你能在你希望的单个 Homestead 环境运行多个 Laravel 安装。要添加额外的站点,在你的 Homestead.yaml 文件中添加站点:

1
2
3
4
5
sites:
- map: homestead.test
to: /home/vagrant/code/Laravel/public
- map: another.test
to: /home/vagrant/code/another/public

如果 Vagrant 不能自动管理你的『hosts』文件,你可能还需要添加新的站点到该文件中:

1
2
192.168.10.10  homestead.test
192.168.10.10 another.test

一旦这个站点被添加,从你的 Homestead 目录运行 vagrant reload --provision 命令。

站点类型

Homestead 支持多种类型的站点,允许你轻松运行不是基于 Laravel 的项目。例如,我们可以使用 symfony2 站点类型轻松地添加一个 Symfony 应用到 Homestead:

1
2
3
4
sites:
- map: symfony2.test
to: /home/vagrant/code/Symfony/web
type: "symfony2"

可用的站点类型是:apacheapigilityexpressivelaravel(默认),proxysilverstripestatamicsymfony2symfony4,和 zf

站点参数

你可以通过 params 站点指令添加额外的 Nginx fastcgi_param 值到你的站点。例如,我们添加一个值为 BARFoo 参数:

1
2
3
4
5
6
sites:
- map: homestead.test
to: /home/vagrant/code/Laravel/public
params:
- key: FOO
value: BAR

环境变量

你能通过添加如下的值到 Homestead.yaml 文件来设置全局环境变量:

1
2
3
4
5
variables:
- key: APP_ENV
value: local
- key: FOO
value: bar

更新 Homestead.yaml 文件之后,确保通过运行 vagrant reload --provision 命令重新配置机器。这个将更新所有安装 的 PHP 版本的 PHP-FPM 配置并为 vagrant 用户更新环境。

配置定时计划

Laravel 提供了一种通过单个计划将每分钟运行 schedule:run Artisan 命令 schedule Cron jobs 的便捷方式。schedule:run 命令将检查在你的 App\Console\Kernel 类中定义的计划来决定哪个工作应当被运行。

如果你想为一个 Homestead 站点的 schedule:run 命令去运行,当定义站点时,你可以设置 schedule 选项为 true

1
2
3
4
sites:
- map: homestead.test
to: /home/vagrant/code/Laravel/public
schedule: true

站点的 Cron 工作将被定义在虚机的 /etc/cron.d 文件夹下。

配置 Mailhog

Mailhog 允许你轻松地捕获外发的电子邮件并进行检查它,而实际上没有将发送邮件给收件人。开始使用时,更新你的 .env 文件以使用以下的邮件设置:

1
2
3
4
5
6
MAIL_DRIVER=smtp
MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

配置 Minio

Minio 是一个开源的对象存储服务器,具有与 Amazon S3 兼容的 API。要安装 Minio,用以下的配置选项更新你的 Homestead.yaml 文件:

1
minio: true

默认情况下,Minio 为端口 9600 上可用。你可以访问 Minio 控制面板通过访问 http://homestead:9600。默认访问的键名是 homestead,同时默认的密钥是 secretkey。当访问 Minio,你应当总是使用 us-east-1

为了使用 Minio,你将需要在你的 config/filesystems.php 配置文件中调整 S3 磁盘配置。你将需要添加 use_path_style_endpoint 选项到磁盘配置,并将 url 键更改为 endpoint

1
2
3
4
5
6
7
8
9
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'endpoint' => env('AWS_URL'),
'use_path_style_endpoint' => true
]

最后,确保你的 .env 文件有如下的选项:

1
2
3
4
AWS_ACCESS_KEY_ID=homestead
AWS_SECRET_ACCESS_KEY=secretkey
AWS_DEFAULT_REGION=us-east-1
AWS_URL=http://homestead:9600

端口

默认情况下,如下的端口将转发到你的 Homestead 环境:

  • SSH:2222 -> 22
  • ngrok UI:4040 -> 4040
  • HTTP:8000 -> 80
  • HTTPS:44300 -> 443
  • MySQL:33060 -> 3306
  • PostgreSQL:54320 -> 5432
  • MongoDB:27017 -> 27017
  • Mailhog:8025 -> 8025
  • Minio:9600 -> 9600

转发额外的端口

如果你愿意,你可以转发额外的端口到 Vagrant 盒子,同时也指定他们的协议:

1
2
3
4
5
6
ports:
- send: 50000
to: 5000
- send: 7777
to: 777
protocol: udp

共享你的环境

有时你希望共享你当前工作的内容跟同事或客户。Vagrant 有内置的方法通过 vagrant share 去支持这个;然而,如果你有多个站点在你的 Homestead.yaml 文件中配置过,这个将不会工作。

为了解决这个问题,Homestead 包含它自己的 share 命令。开始,通过 SSH 即 vagrant ssh 命令进入到你的 Homestead 机器并运行 share homestead.test。这个将从你的 Homestead.yaml 配置文件中分享 homestead.test 站点。当然,你可以将任何其它配置的站点替换为 homestead.test

1
share homestead.test

运行此命令之后,你将看到一个 Ngrok 屏幕出现,其中包含了活动日志和共享站点的可访问的 URL。如果你想指定一个自定义的区域,子域,或者其它 Ngrok 运行时选项,你可以添加他们到你的 share 命令:

1
share homestead.test -region=eu -subdomain=laravel

记住,Vagrant 本质上是不安全的,并且在运行 share 时将虚拟机显露给互联网。

多版本 PHP

这个功能仅兼容 Nginx。

Homestead 6 在同一个虚拟机上引入了对多个 PHP 版本的支持。你可以在你的 Homestead.yaml 文件中指定要用于给定站点的 PHP 版本。可用的 PHP 版本是:『5.6』,『7.0』,『7.1』和『7.2』(默认):

1
2
3
4
sites:
- map: homestead.test
to: /home/vagrant/code/Laravel/public
php: "5.6"

另外,你可以通过 CLI 使用任何 PHP 支持的版本:

1
2
3
4
php5.6 artisan list
php7.0 artisan list
php7.1 artisan list
php7.2 artisan list

设置 Cli 下默认的 PHP 版本:

1
2
3
4
5
// 查看所有 php 版本和当前版本
update-alternatives --display php

// 执行后,会列出当前 php 所有版本和编号,输入编号,切换到执行的版本
update-alternatives --config php

Web 服务器

默认情况下,Homestead 使用 Nginx Web 服务器。然而,如果 apache 是指定的一个站点类型,它能安装 Apache。同时两个 Web 服务器在同时被安装,他们不能同时运行。flip 脚本命令可用来易于处理 Web 服务器之间的切换。flip 命令自动确定正在运行的 Web 服务器,将其关闭。然后启动别一台服务器。要使用这个命令,SSH 进入到你的 Homestead 机器并在终端运行命令:

1
flip

邮件

Homestead 包括 Postfix 邮件传输代理,默认监听 1025 端口。因此,你可以指示你的应用程序在 localhost 端口 1025 上使用 smtp 邮件驱动。所有发送的邮件将由 Postfix 处理并由 Mailhog 捕获。要查看已发送的邮件,在 Web 浏览器中打开 http://localhost:8025

网络接口

Homestead.yaml 中的 networks 属性为你的 Homestead 环境配置网络接口。你可以根据需要配置多个接口:

1
2
3
networks:
- type: "private_network"
ip: "192.168.10.20"

要开启一个 bridged 接口,配置 bridge 设置并改变 public_network 网络类型:

1
2
3
4
networks:
- type: "public_network"
ip: "192.168.10.20"
bridge: "en1: Wi-Fi (AirPort)"

要开启 DHCP,仅从你的配置中移除 ip 选项:

1
2
3
networks:
- type: "public_network"
bridge: "en1: Wi-Fi (AirPort)"

更新 Homestead

你能通过两个简单的步骤更新 Homestead。首先,你应当更新 Vagrant 盒子使用 vagrant box update 命令:

1
$ vagrant box update

接下来,你需要去更新 Homestead 源代码。如果你克隆过仓库,你能在最初克隆仓库的位置 git pull origin master

如果你通过你的项目的 composer.json 安装 Homestead,你应当确保你的 composer.json 包含 "laravel/homestead": "^7" 并更新你的依赖:

1
$ composer update

提供指定的设置

VirtualBox

默认情况下,Homestead 将 natdnshostresolver 配置设置为 on。这允许 Homestead 去使用你的主机操作系统的 DNS 设置。如果你不想覆盖这个行为,添加如下的行到你的 Homestead.yaml 文件:

1
2
provider: virtualbox
natdnshostresolver: off

符号链接在 Windows

如果符号链接在你的 Windows 机器上无法正常工作,你可能需要添加以下的块到 Vagrantfile 文件:

1
2
3
config.vm.provider "virtualbox" do |v|
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
end
本笔记是笔者在学习和工作中的一些整理,如对您有用,请鼓励我继续写作