跳到内容

Laravel Homestead

简介

Laravel 致力于使整个 PHP 开发体验令人愉悦,包括你的本地开发环境。Laravel Homestead 是一个官方的、预先打包的 Vagrant box,它为你提供了一个绝佳的开发环境,而无需在你的本地机器上安装 PHP、Web 服务器或任何其他服务器软件。

Vagrant 提供了一种简单、优雅的方式来管理和配置虚拟机。Vagrant box 是完全可抛弃的。如果出现问题,你可以在几分钟内销毁并重新创建 box!

Homestead 可以在任何 Windows、macOS 或 Linux 系统上运行,并包含 Nginx、PHP、MySQL、PostgreSQL、Redis、Memcached、Node 以及开发出色 Laravel 应用程序所需的所有其他软件。

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

包含的软件

  • Ubuntu 22.04
  • Git
  • PHP 8.3
  • PHP 8.2
  • PHP 8.1
  • PHP 8.0
  • PHP 7.4
  • PHP 7.3
  • PHP 7.2
  • PHP 7.1
  • PHP 7.0
  • PHP 5.6
  • Nginx
  • MySQL 8.0
  • lmm
  • Sqlite3
  • PostgreSQL 15
  • Composer
  • Docker
  • Node (包含 Yarn、Bower、Grunt 和 Gulp)
  • Redis
  • Memcached
  • Beanstalkd
  • Mailpit
  • avahi
  • ngrok
  • Xdebug
  • XHProf / Tideways / XHGui
  • wp-cli

可选软件

  • Apache
  • Blackfire
  • Cassandra
  • Chronograf
  • CouchDB
  • Crystal & Lucky Framework
  • Elasticsearch
  • EventStoreDB
  • Flyway
  • Gearman
  • Go
  • Grafana
  • InfluxDB
  • Logstash
  • MariaDB
  • Meilisearch
  • MinIO
  • MongoDB
  • Neo4j
  • Oh My Zsh
  • Open Resty
  • PM2
  • Python
  • R
  • RabbitMQ
  • Rust
  • RVM (Ruby 版本管理器)
  • Solr
  • TimescaleDB
  • Trader (PHP 扩展)
  • Webdriver & Laravel Dusk Utilities

安装与设置

第一步

在启动你的 Homestead 环境之前,你必须安装 Vagrant 以及以下受支持的提供商之一:

所有这些软件包都为所有流行的操作系统提供了易于使用的可视化安装程序。

要使用 Parallels 提供商,你需要安装 Parallels Vagrant 插件。它是免费的。

安装 Homestead

你可以通过将 Homestead 仓库克隆到你的主机上来安装 Homestead。考虑将仓库克隆到你的“home”目录下的 Homestead 文件夹中,因为 Homestead 虚拟机将作为你所有 Laravel 应用程序的主机。在本文档中,我们将把此目录称为你的“Homestead 目录”。

1git clone https://github.com/laravel/homestead.git ~/Homestead

克隆 Laravel Homestead 仓库后,你应该检出 release 分支。此分支始终包含 Homestead 的最新稳定版本。

1cd ~/Homestead
2 
3git checkout release

接下来,从 Homestead 目录执行 bash init.sh 命令以创建 Homestead.yaml 配置文件。Homestead.yaml 文件是你配置 Homestead 安装的所有设置的地方。此文件将放置在 Homestead 目录中。

1# macOS / Linux...
2bash init.sh
3 
4# Windows...
5init.bat

配置 Homestead

设置你的提供商

你的 Homestead.yaml 文件中的 provider 键指示应使用哪个 Vagrant 提供商:virtualboxparallels

1provider: virtualbox

如果你正在使用 Apple Silicon,则必须使用 Parallels 提供商。

配置共享文件夹

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

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

Windows 用户不应使用 ~/ 路径语法,而应使用其项目的完整路径,例如 C:\Users\user\Code\project1

你应该始终将单个应用程序映射到它们自己的文件夹映射,而不是映射包含所有应用程序的单个大型目录。当你映射文件夹时,虚拟机必须跟踪文件夹中每个文件的所有磁盘 IO。如果文件夹中有大量文件,你可能会遇到性能下降。

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

使用 Homestead 时,绝不应挂载 .(当前目录)。这会导致 Vagrant 不会将当前文件夹映射到 /vagrant,并会破坏可选功能,并在配置时导致意外结果。

要启用 NFS,你可以将 type 选项添加到你的文件夹映射中。

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

在 Windows 上使用 NFS 时,你应该考虑安装 vagrant-winnfsd 插件。此插件将维护 Homestead 虚拟机中文件和目录的正确用户/组权限。

你还可以通过在 options 键下罗列 Vagrant 的 Synced Folders 支持的任何选项。

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

配置 Nginx 站点

不熟悉 Nginx?没问题。你的 Homestead.yaml 文件的 sites 属性允许你轻松地将“域名”映射到 Homestead 环境中的文件夹。示例站点配置包含在 Homestead.yaml 文件中。同样,你可以根据需要向你的 Homestead 环境添加任意数量的站点。Homestead 可以作为你正在处理的每个 Laravel 应用程序的便捷虚拟化环境。

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

如果在配置 Homestead 虚拟机后更改了 sites 属性,则应在终端中执行 vagrant reload --provision 命令,以更新虚拟机上的 Nginx 配置。

Homestead 脚本的构建尽可能地是幂等的。但是,如果你在配置时遇到问题,则应通过执行 vagrant destroy && vagrant up 命令来销毁并重建机器。

主机名解析

Homestead 使用 mDNS 发布主机名以实现自动主机解析。如果你在 Homestead.yaml 文件中设置 hostname: homestead,则主机将在 homestead.local 上可用。macOS、iOS 和 Linux 桌面发行版默认包含 mDNS 支持。如果你正在使用 Windows,则必须安装 Bonjour Print Services for Windows

使用自动主机名最适合 Homestead 的每个项目安装。如果你在单个 Homestead 实例上托管多个站点,则可以将你的网站的“域名”添加到你机器上的 hosts 文件中。hosts 文件会将对你的 Homestead 站点的请求重定向到你的 Homestead 虚拟机中。在 macOS 和 Linux 上,此文件位于 /etc/hosts。在 Windows 上,它位于 C:\Windows\System32\drivers\etc\hosts。你添加到此文件中的行将如下所示:

1192.168.56.56 homestead.test

确保列出的 IP 地址是你的 Homestead.yaml 文件中设置的地址。将域名添加到你的 hosts 文件并启动 Vagrant box 后,你将能够通过 Web 浏览器访问该站点。

1http://homestead.test

配置服务

Homestead 默认启动多个服务;但是,你可以自定义在配置期间启用或禁用的服务。例如,你可以通过修改 Homestead.yaml 文件中的 services 选项来启用 PostgreSQL 并禁用 MySQL。

1services:
2 - enabled:
3 - "postgresql"
4 - disabled:
5 - "mysql"

指定的服务将根据它们在 enableddisabled 指令中的顺序启动或停止。

启动 Vagrant Box

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

要销毁机器,你可以使用 vagrant destroy 命令。

每个项目的安装

你可以为自己管理的每个项目配置一个 Homestead 实例,而不是全局安装 Homestead 并在所有项目之间共享同一个 Homestead 虚拟机。如果你希望在你的项目中附带一个 Vagrantfile,从而允许其他在该项目上工作的人员在克隆项目仓库后立即 vagrant up,则每个项目安装 Homestead 可能是有益的。

你可以使用 Composer 包管理器将 Homestead 安装到你的项目中。

1composer require laravel/homestead --dev

安装 Homestead 后,调用 Homestead 的 make 命令来为你的项目生成 VagrantfileHomestead.yaml 文件。这些文件将放置在你的项目的根目录中。make 命令将自动配置 Homestead.yaml 文件中的 sitesfolders 指令。

1# macOS / Linux...
2php vendor/bin/homestead make
3 
4# Windows...
5vendor\\bin\\homestead make

接下来,在你的终端中运行 vagrant up 命令,并在你的浏览器中访问 http://homestead.test 上的项目。请记住,如果你不使用自动主机名解析,你仍然需要为 homestead.test 或你选择的域名添加一个 /etc/hosts 文件条目。

安装可选功能

可选软件是使用 Homestead.yaml 文件中的 features 选项安装的。大多数功能可以使用布尔值启用或禁用,而某些功能允许多个配置选项。

1features:
2 - blackfire:
3 server_id: "server_id"
4 server_token: "server_value"
5 client_id: "client_id"
6 client_token: "client_value"
7 - cassandra: true
8 - chronograf: true
9 - couchdb: true
10 - crystal: true
11 - dragonflydb: true
12 - elasticsearch:
13 version: 7.9.0
14 - eventstore: true
15 version: 21.2.0
16 - flyway: true
17 - gearman: true
18 - golang: true
19 - grafana: true
20 - influxdb: true
21 - logstash: true
22 - mariadb: true
23 - meilisearch: true
24 - minio: true
25 - mongodb: true
26 - neo4j: true
27 - ohmyzsh: true
28 - openresty: true
29 - pm2: true
30 - python: true
31 - r-base: true
32 - rabbitmq: true
33 - rustc: true
34 - rvm: true
35 - solr: true
36 - timescaledb: true
37 - trader: true
38 - webdriver: true

Elasticsearch

你可以指定受支持的 Elasticsearch 版本,该版本必须是精确的版本号(major.minor.patch)。默认安装将创建一个名为“homestead”的集群。你永远不应为 Elasticsearch 提供超过操作系统内存一半的内存,因此请确保你的 Homestead 虚拟机至少具有 Elasticsearch 分配的两倍内存。

查看 Elasticsearch 文档 以了解如何自定义你的配置。

MariaDB

启用 MariaDB 将删除 MySQL 并安装 MariaDB。MariaDB 通常用作 MySQL 的直接替代品,因此你仍然应该在应用程序的数据库配置中使用 mysql 数据库驱动程序。

MongoDB

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

Neo4j

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

别名

你可以通过修改 Homestead 目录中的 aliases 文件,将 Bash 别名添加到你的 Homestead 虚拟机。

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

更新 aliases 文件后,你应该使用 vagrant reload --provision 命令重新配置 Homestead 虚拟机。这将确保你的新别名在机器上可用。

更新 Homestead

在开始更新 Homestead 之前,你应该通过在你的 Homestead 目录中运行以下命令来确保你已删除当前的虚拟机:

1vagrant destroy

接下来,你需要更新 Homestead 源代码。如果你克隆了仓库,则可以在最初克隆仓库的位置执行以下命令:

1git fetch
2 
3git pull origin release

这些命令从 GitHub 仓库拉取最新的 Homestead 代码,获取最新的标签,然后检出最新的标记版本。你可以在 Homestead 的 GitHub 发布页面 上找到最新的稳定版本。

如果你已通过你的项目的 composer.json 文件安装了 Homestead,则应确保你的 composer.json 文件包含 "laravel/homestead": "^12" 并更新你的依赖项。

1composer update

接下来,你应该使用 vagrant box update 命令更新 Vagrant box。

1vagrant box update

更新 Vagrant box 后,你应该从 Homestead 目录运行 bash init.sh 命令,以便更新 Homestead 的其他配置文件。系统将询问你是否要覆盖现有的 Homestead.yamlafter.shaliases 文件。

1# macOS / Linux...
2bash init.sh
3 
4# Windows...
5init.bat

最后,你将需要重新生成你的 Homestead 虚拟机,以利用最新的 Vagrant 安装。

1vagrant up

日常使用

通过 SSH 连接

你可以通过从你的 Homestead 目录执行 vagrant ssh 终端命令来 SSH 进入你的虚拟机。

添加额外的站点

一旦你的 Homestead 环境配置并运行,你可能希望为你的其他 Laravel 项目添加额外的 Nginx 站点。你可以在单个 Homestead 环境上运行任意数量的 Laravel 项目。要添加额外的站点,请将该站点添加到你的 Homestead.yaml 文件中。

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

在添加站点之前,你应该确保已为项目的目录配置了文件夹映射

如果 Vagrant 没有自动管理你的“hosts”文件,你可能还需要将新站点添加到该文件中。在 macOS 和 Linux 上,此文件位于 /etc/hosts。在 Windows 上,它位于 C:\Windows\System32\drivers\etc\hosts

1192.168.56.56 homestead.test
2192.168.56.56 another.test

添加站点后,从你的 Homestead 目录执行 vagrant reload --provision 终端命令。

站点类型

Homestead 支持多种“类型”的站点,这些站点允许你轻松运行非基于 Laravel 的项目。例如,我们可以使用 statamic 站点类型轻松地将 Statamic 应用程序添加到 Homestead。

1sites:
2 - map: statamic.test
3 to: /home/vagrant/my-symfony-project/web
4 type: "statamic"

可用的站点类型有:apacheapache-proxyapigilityexpressivelaravel(默认)、proxy(用于 nginx)、silverstripestatamicsymfony2symfony4zf

站点参数

你可以通过 params 站点指令将额外的 Nginx fastcgi_param 值添加到你的站点。

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

环境变量

你可以通过将全局环境变量添加到你的 Homestead.yaml 文件中来定义它们。

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

更新 Homestead.yaml 文件后,请务必通过执行 vagrant reload --provision 命令来重新配置机器。这将更新所有已安装 PHP 版本的 PHP-FPM 配置,并更新 vagrant 用户的环境。

端口

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

  • HTTP: 8000 → 转发到 80
  • HTTPS: 44300 → 转发到 443

转发其他端口

如果需要,你可以通过在你的 Homestead.yaml 文件中定义 ports 配置条目,将其他端口转发到 Vagrant box。更新 Homestead.yaml 文件后,请务必通过执行 vagrant reload --provision 命令来重新配置机器。

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

以下是你可能希望从主机映射到 Vagrant box 的其他 Homestead 服务端口的列表:

  • SSH: 2222 → 到 22
  • ngrok UI: 4040 → 到 4040
  • MySQL: 33060 → 到 3306
  • PostgreSQL: 54320 → 到 5432
  • MongoDB: 27017 → 到 27017
  • Mailpit: 8025 → 到 8025
  • Minio: 9600 → 到 9600

PHP 版本

Homestead 支持在同一虚拟机上运行多个 PHP 版本。你可以在你的 Homestead.yaml 文件中指定要用于给定站点的 PHP 版本。可用的 PHP 版本有:"5.6"、"7.0"、"7.1"、"7.2"、"7.3"、"7.4"、"8.0"、"8.1"、"8.2" 和 "8.3"(默认)。

1sites:
2 - map: homestead.test
3 to: /home/vagrant/project1/public
4 php: "7.1"

在你的 Homestead 虚拟机中,你可以通过 CLI 使用任何受支持的 PHP 版本。

1php5.6 artisan list
2php7.0 artisan list
3php7.1 artisan list
4php7.2 artisan list
5php7.3 artisan list
6php7.4 artisan list
7php8.0 artisan list
8php8.1 artisan list
9php8.2 artisan list
10php8.3 artisan list

你可以通过从你的 Homestead 虚拟机中发出以下命令来更改 CLI 使用的默认 PHP 版本:

1php56
2php70
3php71
4php72
5php73
6php74
7php80
8php81
9php82
10php83

连接到数据库

一个 homestead 数据库已为 MySQL 和 PostgreSQL 开箱即用配置。要从你的主机数据库客户端连接到你的 MySQL 或 PostgreSQL 数据库,你应该连接到端口 33060 (MySQL) 或 54320 (PostgreSQL) 上的 127.0.0.1。两个数据库的用户名和密码均为 homestead / secret

从你的主机连接到数据库时,你应仅使用这些非标准端口。你将在你的 Laravel 应用程序的 database 配置文件中使用默认的 3306 和 5432 端口,因为 Laravel 运行在虚拟机内部

数据库备份

当你的 Homestead 虚拟机被销毁时,Homestead 可以自动备份你的数据库。要使用此功能,你必须使用 Vagrant 2.1.0 或更高版本。或者,如果你使用的是旧版本的 Vagrant,则必须安装 vagrant-triggers 插件。要启用自动数据库备份,请将以下行添加到你的 Homestead.yaml 文件中:

1backup: true

配置完成后,当执行 vagrant destroy 命令时,Homestead 会将你的数据库导出到 .backup/mysql_backup.backup/postgres_backup 目录。这些目录可以在你安装 Homestead 的文件夹中找到,或者如果你使用每个项目安装方法,则可以在项目的根目录中找到。

配置 Cron 计划

Laravel 提供了一种便捷的方式来调度 cron 作业,方法是调度一个 schedule:run Artisan 命令每分钟运行一次。schedule:run 命令将检查你的 routes/console.php 文件中定义的作业计划,以确定要运行的计划任务。

如果你希望为 Homestead 站点运行 schedule:run 命令,你可以在定义站点时将 schedule 选项设置为 true

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

该站点的 cron 作业将在 Homestead 虚拟机的 /etc/cron.d 目录中定义。

配置 Mailpit

Mailpit 允许你拦截你的传出电子邮件并对其进行检查,而无需实际将邮件发送给收件人。要开始使用,请更新你的应用程序的 .env 文件以使用以下邮件设置:

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

配置 Mailpit 后,你可以访问 https://127.0.0.1:8025 上的 Mailpit 仪表板。

配置 Minio

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

1minio: true

默认情况下,Minio 在端口 9600 上可用。你可以通过访问 https://127.0.0.1:9600 来访问 Minio 控制面板。默认访问密钥为 homestead,而默认密钥为 secretkey。访问 Minio 时,应始终使用区域 us-east-1

为了使用 Minio,请确保你的 .env 文件具有以下选项:

1AWS_USE_PATH_STYLE_ENDPOINT=true
2AWS_ENDPOINT=https://127.0.0.1:9600
3AWS_ACCESS_KEY_ID=homestead
4AWS_SECRET_ACCESS_KEY=secretkey
5AWS_DEFAULT_REGION=us-east-1

要配置 Minio 驱动的“S3”存储桶,请将 buckets 指令添加到你的 Homestead.yaml 文件中。定义存储桶后,你应该在终端中执行 vagrant reload --provision 命令。

1buckets:
2 - name: your-bucket
3 policy: public
4 - name: your-private-bucket
5 policy: none

支持的 policy 值包括:nonedownloaduploadpublic

Laravel Dusk

为了在 Homestead 中运行 Laravel Dusk 测试,你应该在你的 Homestead 配置中启用 webdriver 功能

1features:
2 - webdriver: true

启用 webdriver 功能后,你应该在终端中执行 vagrant reload --provision 命令。

共享你的环境

有时你可能希望与同事或客户共享你当前正在处理的内容。Vagrant 通过 vagrant share 命令内置了对此的支持;但是,如果你的 Homestead.yaml 文件中配置了多个站点,这将不起作用。

为了解决这个问题,Homestead 包含了它自己的 share 命令。要开始使用,请通过 vagrant ssh SSH 进入你的 Homestead 虚拟机,然后执行 share homestead.test 命令。此命令将共享你的 Homestead.yaml 配置文件中的 homestead.test 站点。你可以将你的任何其他配置站点替换为 homestead.test

1share homestead.test

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

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

如果你需要通过 HTTPS 而不是 HTTP 共享内容,则使用 sshare 命令而不是 share 将使你能够这样做。

请记住,Vagrant 本质上是不安全的,并且在运行 share 命令时,你正在将你的虚拟机暴露于 Internet。

调试和性能分析

使用 Xdebug 调试 Web 请求

Homestead 包含使用 Xdebug 进行步进调试的支持。例如,你可以在浏览器中访问页面,PHP 将连接到你的 IDE,以允许检查和修改正在运行的代码。

默认情况下,Xdebug 已经运行并准备好接受连接。如果你需要在 CLI 上启用 Xdebug,请在你的 Homestead 虚拟机中执行 sudo phpenmod xdebug 命令。接下来,按照你的 IDE 的说明启用调试。最后,配置你的浏览器以使用扩展程序或 书签小程序 触发 Xdebug。

Xdebug 会导致 PHP 运行速度显着降低。要禁用 Xdebug,请在你的 Homestead 虚拟机中运行 sudo phpdismod xdebug 并重启 FPM 服务。

自动启动 Xdebug

在调试向 Web 服务器发送请求的功能测试时,自动启动调试比修改测试以传递自定义标头或 Cookie 来触发调试更容易。要强制 Xdebug 自动启动,请修改 Homestead 虚拟机内的 /etc/php/7.x/fpm/conf.d/20-xdebug.ini 文件并添加以下配置

1; If Homestead.yaml contains a different subnet for the IP address, this address may be different...
2xdebug.client_host = 192.168.10.1
3xdebug.mode = debug
4xdebug.start_with_request = yes

调试 CLI 应用程序

要调试 PHP CLI 应用程序,请使用 Homestead 虚拟机内的 xphp shell 别名

1xphp /path/to/script

使用 Blackfire 分析应用程序

Blackfire 是一项用于分析 Web 请求和 CLI 应用程序的服务。它提供了一个交互式用户界面,以调用图和时间线的形式显示分析数据。它专为在开发、暂存和生产环境中使用而构建,对最终用户没有额外开销。此外,Blackfire 还提供对代码和 php.ini 配置文件设置的性能、质量和安全检查。

Blackfire Player 是一款开源的 Web 爬取、Web 测试和 Web 抓取应用程序,可以与 Blackfire 协同工作,以便编写分析场景脚本。

要启用 Blackfire,请在 Homestead 配置文件中使用 "features" 设置

1features:
2 - blackfire:
3 server_id: "server_id"
4 server_token: "server_value"
5 client_id: "client_id"
6 client_token: "client_value"

Blackfire 服务器凭据和客户端凭据 需要一个 Blackfire 帐户。Blackfire 提供了多种分析应用程序的选项,包括 CLI 工具和浏览器扩展。请查阅 Blackfire 文档以获取更多详细信息

网络接口

Homestead.yaml 文件的 networks 属性配置 Homestead 虚拟机的网络接口。您可以根据需要配置任意数量的接口

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

要启用桥接接口,请为网络配置 bridge 设置,并将网络类型更改为 public_network

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

要启用 DHCP,只需从您的配置中删除 ip 选项

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

要更新网络正在使用的设备,您可以向网络的配置添加 dev 选项。默认的 dev 值为 eth0

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

扩展 Homestead

您可以使用 Homestead 目录根目录中的 after.sh 脚本扩展 Homestead。在此文件中,您可以添加任何必要的 shell 命令,以正确配置和自定义您的虚拟机。

在自定义 Homestead 时,Ubuntu 可能会询问您是否要保留软件包的原始配置,还是使用新的配置文件覆盖它。为避免这种情况,您应该在安装软件包时使用以下命令,以避免覆盖 Homestead 先前编写的任何配置

1sudo apt-get -y \
2 -o Dpkg::Options::="--force-confdef" \
3 -o Dpkg::Options::="--force-confold" \
4 install package-name

用户自定义

当与您的团队一起使用 Homestead 时,您可能希望调整 Homestead 以更好地适应您的个人开发风格。为此,您可以在 Homestead 目录的根目录(与包含 Homestead.yaml 文件的目录相同)中创建一个 user-customizations.sh 文件。在此文件中,您可以进行任何您想要的自定义;但是,user-customizations.sh 不应进行版本控制。

提供商特定设置

VirtualBox

natdnshostresolver

默认情况下,Homestead 将 natdnshostresolver 设置配置为 on。这允许 Homestead 使用您主机操作系统的 DNS 设置。如果您想覆盖此行为,请将以下配置选项添加到您的 Homestead.yaml 文件中

1provider: virtualbox
2natdnshostresolver: 'off'

Laravel 是最高效的方式来
构建、部署和监控软件。