laravel
10. 软件包
Laravel Homestead(Laravel 家园)

介绍

Laravel 致力于使整个 PHP 开发体验令人愉快,包括您的本地开发环境。Laravel Homestead (opens in a new tab) 是一个官方预打包的 Vagrant 盒子,为您提供了一个出色的开发环境,无需在本地机器上安装 PHP、Web 服务器或任何其他服务器软件。

Vagrant (opens in a new tab) 提供了一种简单、优雅的方式来管理和配置虚拟机。Vagrant 盒子是完全可丢弃的。如果出现问题,您可以在几分钟内销毁并重新创建盒子!

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 实用工具

安装与设置

初步步骤

在启动 Homestead 环境之前,您必须安装Vagrant (opens in a new tab)以及以下支持的提供程序之一:

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

要使用 Parallels 提供程序,您需要安装Parallels Vagrant 插件 (opens in a new tab)。它是免费的。

安装 Homestead

您可以通过将 Homestead 存储库克隆到主机上来安装 Homestead。考虑将存储库克隆到您的“家”目录中的“Homestead”文件夹中,因为 Homestead 虚拟机将作为您所有 Laravel 应用程序的主机。在整个文档中,我们将此目录称为您的“Homestead 目录”:

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

克隆 Laravel Homestead 存储库后,您应该检出“release”分支。此分支始终包含 Homestead 的最新稳定版本:

cd ~/Homestead
 
git checkout release

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

# macOS / Linux...
bash init.sh
 
# Windows...
init.bat

配置 Homestead

设置您的提供程序

“Homestead.yaml”文件中的“provider”键指示应使用哪个 Vagrant 提供程序:“virtualbox”或“parallels”:

provider: virtualbox

[!警告]
如果您使用的是 Apple Silicon,则需要 Parallels 提供程序。

配置共享文件夹

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

folders:
    - map: ~/code/project1
      to: /home/vagrant/project1

[!警告]
Windows 用户不应使用“~/”路径语法,而应使用项目的完整路径,例如“C:\Users\user\Code\project1”。

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

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

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

要启用NFS (opens in a new tab),您可以在文件夹映射中添加一个“type”选项:

folders:
    - map: ~/code/project1
      to: /home/vagrant/project1
      type: "nfs"

[!警告]
在 Windows 上使用 NFS 时,您应该考虑安装vagrant-winnfsd (opens in a new tab)插件。此插件将为 Homestead 虚拟机中的文件和目录维护正确的用户/组权限。

您还可以通过在“options”键下列出它们来传递 Vagrant 的同步文件夹 (opens in a new tab)支持的任何选项:

folders:
    - map: ~/code/project1
      to: /home/vagrant/project1
      type: "rsync"
      options:
          rsync__args: ["--verbose", "--archive", "--delete", "-zz"]
          rsync__exclude: ["node_modules"]

配置 Nginx 站点

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

sites:
    - map: homestead.test
      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 (opens in a new tab)

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

192.168.56.56  homestead.test

确保列出的 IP 地址是您在“Homestead.yaml”文件中设置的那个。一旦您将域添加到“hosts”文件并启动 Vagrant 盒子,您就可以通过您的 Web 浏览器访问该站点:

http://homestead.test

配置服务

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

services:
    - enabled:
        - "postgresql"
    - disabled:
        - "mysql"

根据“enabled”和“disabled”指令中的顺序,将启动或停止指定的服务。

启动 Vagrant 盒子

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

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

按项目安装

您可以为每个管理的项目配置一个 Homestead 实例,而不是在全局安装 Homestead 并在所有项目中共享同一个 Homestead 虚拟机。如果您希望在项目中附带一个 Vagrantfile,以便项目的其他参与者在克隆项目仓库后可以立即 vagrant up,那么按项目安装 Homestead 可能会很有帮助。

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

composer require laravel/homestead --dev

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

# macOS / Linux...
php vendor/bin/homestead make
 
# Windows...
vendor\\bin\\homestead make

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

安装可选功能

在您的 Homestead.yaml 文件中的 features 选项可用于安装可选软件。大多数功能可以通过布尔值启用或禁用,而一些功能允许多个配置选项:

features:
    - blackfire:
        server_id: "服务器 ID"
        server_token: "服务器值"
        client_id: "客户端 ID"
        client_token: "客户端值"
    - cassandra: true
    - chronograf: true
    - couchdb: true
    - crystal: true
    - dragonflydb: true
    - elasticsearch:
        version: 7.9.0
    - eventstore: true
        version: 21.2.0
    - flyway: true
    - gearman: true
    - golang: true
    - grafana: true
    - influxdb: true
    - logstash: true
    - mariadb: true
    - meilisearch: true
    - minio: true
    - mongodb: true
    - neo4j: true
    - ohmyzsh: true
    - openresty: true
    - pm2: true
    - python: true
    - r-base: true
    - rabbitmq: true
    - rustc: true
    - rvm: true
    - solr: true
    - timescaledb: true
    - trader: true
    - webdriver: true

Elasticsearch

您可以指定一个受支持的 Elasticsearch 版本,必须是确切的版本号(主版本号.次版本号.修订版本号)。默认安装将创建一个名为 'homestead' 的集群。您不应给 Elasticsearch 分配超过操作系统内存的一半,因此请确保您的 Homestead 虚拟机至少有 Elasticsearch 分配量的两倍。

[!NOTE]
查看 Elasticsearch 文档 (opens in a new tab) 以了解如何自定义您的配置。

MariaDB

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

MongoDB

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

Neo4j

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

别名

您可以通过修改 Homestead 目录中的 aliases 文件为您的 Homestead 虚拟机添加 Bash 别名:

alias c='clear'
alias..='cd..'

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

更新 Homestead

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

vagrant destroy

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

git fetch
 
git pull origin release

这些命令从 GitHub 存储库中拉取最新的 Homestead 代码,获取最新的标签,然后检出最新的标记版本。您可以在 Homestead 的 GitHub 发布页面 (opens in a new tab) 上找到最新的稳定版本。

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

composer update

接下来,您应该使用 vagrant box update 命令更新 Vagrant 盒子:

vagrant box update

更新 Vagrant 盒子后,您应该从 Homestead 目录中运行 bash init.sh 命令,以更新 Homestead 的其他配置文件。您将被询问是否希望覆盖您现有的 Homestead.yamlafter.shaliases 文件:

# macOS / Linux...
bash init.sh
 
# Windows...
init.bat

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

vagrant up

日常使用

通过 SSH 连接

您可以通过在您的 Homestead 目录中执行 vagrant ssh 终端命令来 SSH 连接到您的虚拟机。

添加额外的站点

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

sites:
    - map: homestead.test
      to: /home/vagrant/project1/public
    - map: another.test
      to: /home/vagrant/project2/public

[!WARNING]
在添加站点之前,您应该确保已经为项目的目录配置了文件夹映射

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

192.168.56.56  homestead.test
192.168.56.56  another.test

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

站点类型

Homestead 支持几种“类型”的站点,这使您可以轻松地运行非基于 Laravel 的项目。例如,我们可以使用 statamic 站点类型轻松地将一个 Statamic 应用程序添加到 Homestead 中:

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

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

站点参数

您可以通过 params 站点指令为您的站点添加额外的 Nginx fastcgi_param 值:

sites:
    - map: homestead.test
      to: /home/vagrant/project1/public
      params:
          - key: FOO
            value: BAR

环境变量

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

variables:
    - key: APP_ENV
      value: local
    - key: FOO
      value: bar

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

端口

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

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

转发额外的端口

如果您愿意,您可以通过在您的 Homestead.yaml 文件中定义一个 ports 配置项将额外的端口转发到 Vagrant 盒子。更新 Homestead.yaml 文件后,务必通过执行 vagrant reload --provision 命令重新配置机器:

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

以下是您可能希望从您的主机映射到您的 Vagrant 盒子的其他 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"(默认):

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

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

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

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

php56
php70
php71
php72
php73
php74
php80
php81
php82
php83

连接到数据库

Homestead默认已为 MySQL 和 PostgreSQL 配置了数据库。要从主机的数据库客户端连接到您的 MySQL 或 PostgreSQL 数据库,您应该连接到127.0.0.1,端口为33060(MySQL)或54320(PostgreSQL)。两个数据库的用户名和密码均为homestead / secret

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

数据库备份

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

backup: 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

sites:
    - map: homestead.test
      to: /home/vagrant/project1/public
      schedule: true

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

配置 Mailpit

Mailpit (opens in a new tab)允许您拦截您的外发电子邮件并进行检查,而无需实际将邮件发送给收件人。要开始使用,更新您的应用程序的.env文件以使用以下邮件设置:

MAIL_MAILER=smtp
MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

配置好 Mailpit 后,您可以在http://localhost:8025访问 Mailpit 仪表盘。

配置 Minio

Minio (opens in a new tab)是一个具有与 Amazon S3 兼容的 API 的开源对象存储服务器。要安装 Minio,请在Homestead.yaml文件的安装可选功能部分中使用以下配置选项进行更新:

minio: true

默认情况下,Minio 在端口 9600 上可用。您可以通过访问http://localhost:9600访问 Minio 控制面板。默认的访问密钥是homestead,默认的秘密密钥是secretkey。访问 Minio 时,您应始终使用区域us-east-1

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

AWS_USE_PATH_STYLE_ENDPOINT=true
AWS_ENDPOINT=http://localhost:9600
AWS_ACCESS_KEY_ID=homestead
AWS_SECRET_ACCESS_KEY=secretkey
AWS_DEFAULT_REGION=us-east-1

要配置由 Minio 支持的“S3”存储桶,请在您的Homestead.yaml文件中添加一个buckets指令。定义好您的存储桶后,您应该在终端中执行vagrant reload --provision命令:

buckets:
    - name: your-bucket
      policy: public
    - name: your-private-bucket
      policy: none

支持的policy值包括:nonedownloaduploadpublic

Laravel Dusk

为了在 Homestead 中运行Laravel Dusk测试,您应该在 Homestead 配置中启用安装可选功能中的webdriver功能:

features:
    - 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替换为您配置的任何其他站点:

share homestead.test

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

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

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

[!警告]
请记住,Vagrant 本质上是不安全的,当您运行share命令时,您正在将您的虚拟机暴露到互联网上。

调试和分析

使用 Xdebug 调试 Web 请求

Homestead 支持使用Xdebug (opens in a new tab)进行逐步调试。例如,您可以在浏览器中访问一个页面,PHP 将连接到您的 IDE,允许您检查和修改正在运行的代码。

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

[!警告]
Xdebug 会导致 PHP 运行速度明显减慢。要禁用 Xdebug,请在您的 Homestead 虚拟机中运行sudo phpdismod xdebug并重新启动 FPM 服务。

自动启动 Xdebug

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

; 如果 Homestead.yaml 中为 IP 地址包含了不同的子网,此地址可能会有所不同...
xdebug.client_host = 192.168.10.1
xdebug.mode = debug
xdebug.start_with_request = yes

调试 CLI 应用程序

要调试 PHP CLI 应用程序,请在您的 Homestead 虚拟机中使用xphp外壳别名:

xphp /path/to/script

使用 Blackfire 分析应用程序

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

Blackfire Player (opens in a new tab)是一个开源的 Web 爬虫、Web 测试和 Web 抓取应用程序,它可以与 Blackfire 协同工作,以便编写分析场景的脚本。

要启用 Blackfire,请在您的 Homestead 配置文件中使用“features”设置:

features:
    - blackfire:
        server_id: "server_id"
        server_token: "server_value"
        client_id: "client_id"
        client_token: "client_value"

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

网络接口

Homestead.yaml文件的networks属性为您的 Homestead 虚拟机配置网络接口。您可以根据需要配置多个接口:

networks:
    - type: "private_network"
      ip: "192.168.10.20"

要启用桥接 (opens in a new tab)接口,请为网络配置一个bridge设置,并将网络类型更改为public_network

networks:
    - type: "public_network"
      ip: "192.168.10.20"
      bridge: "en1: Wi-Fi (AirPort)"

要启用DHCP (opens in a new tab),只需从您的配置中删除ip选项:

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

要更新网络使用的设备,您可以在网络的配置中添加一个dev选项。默认的dev值是eth0

networks:
    - type: "public_network"
      ip: "192.168.10.20"
      bridge: "en1: Wi-Fi (AirPort)"
      dev: "enp2s0"

扩展 Homestead

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

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

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

用户自定义

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

特定提供程序设置

VirtualBox

natdnshostresolver

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

provider: virtualbox
natdnshostresolver: 'off'