简介
Laravel Homestead 是一个已停止积极维护的旧版包。Laravel Sail 可作为现代替代方案使用。
Laravel 致力于让整个 PHP 开发体验变得愉悦,包括您的本地开发环境。Laravel Homestead 是一个官方的、预打包的 Vagrant 盒子,它为您提供了一个出色的开发环境,无需您在本地机器上安装 PHP、Web 服务器或任何其他服务器软件。
Vagrant 提供了一种简单、优雅的方式来管理和配置虚拟机。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 以及以下受支持的提供程序之一:
所有这些软件包都为所有主流操作系统提供了易于使用的可视化安装程序。
若要使用 Parallels 提供程序,您需要安装 Parallels Vagrant 插件。它是免费的。
安装 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。
您应始终将单个应用程序映射到其各自的文件夹映射,而不是映射包含所有应用程序的单个大目录。当您映射文件夹时,虚拟机必须跟踪文件夹内每个文件的所有磁盘 IO。如果文件夹中有大量文件,您可能会遇到性能下降的情况:
folders:
- map: ~/code/project1
to: /home/vagrant/project1
- map: ~/code/project2
to: /home/vagrant/project2 在使用 Homestead 时,切勿挂载 .(当前目录)。这会导致 Vagrant 无法将当前文件夹映射到 /vagrant,从而破坏可选功能,并在配置过程中导致意外结果。
要启用 NFS,您可以在文件夹映射中添加 type 选项:
folders:
- map: ~/code/project1
to: /home/vagrant/project1
type: "nfs" 在 Windows 上使用 NFS 时,建议安装 vagrant-winnfsd 插件。该插件将维护 Homestead 虚拟机内文件和目录的正确用户/组权限。
您还可以通过在 options 键下列出选项,传递 Vagrant 同步文件夹 支持的任何选项:
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,则必须安装 适用于 Windows 的 Bonjour 打印服务。
对于每个项目的 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 盒子后,您将能够通过浏览器访问该站点:
http://homestead.test配置服务
Homestead 默认会启动多个服务;不过,你可以在初始化配置期间自定义启用或禁用哪些服务。例如,你可以通过修改 Homestead.yaml 文件中的 services 选项来启用 PostgreSQL 并禁用 MySQL:
services:
- enabled:
- "postgresql"
- disabled:
- "mysql"指定的服务将根据其在 enabled 和 disabled 指令中的顺序来启动或停止。
启动 Vagrant Box
在你按喜好编辑好 Homestead.yaml 后,在 Homestead 目录中运行 vagrant up 命令。Vagrant 将启动虚拟机,并自动配置共享文件夹和 Nginx 站点。
若要销毁该机器,你可以使用 vagrant destroy 命令。
按项目安装
除了全局安装 Homestead 并在所有项目中共享同一个 Homestead 虚拟机外,你也可以为管理的每个项目配置一个 Homestead 实例。如果你希望随项目一起发布 Vagrantfile,让其他参与项目的人在克隆项目仓库后能立即使用 vagrant up 启动环境,按项目安装 Homestead 将非常有益。
你可以使用 Composer 包管理器将 Homestead 安装到你的项目中:
composer require laravel/homestead --devHomestead 安装完成后,调用 Homestead 的 make 命令,即可为项目生成 Vagrantfile 和 Homestead.yaml 文件。这些文件会放置在项目根目录中。make 命令会自动配置 Homestead.yaml 文件中的 sites 和 folders 指令:
# macOS / Linux...
php vendor/bin/homestead make
# Windows...
vendor\\bin\\homestead make接下来,在终端中运行 vagrant up 命令,然后在浏览器中通过 http://homestead.test 访问你的项目。请记住,如果你未启用自动主机名解析,仍然需要在 /etc/hosts 文件中为 homestead.test 或你选择的域名添加一条记录。
安装可选功能
可选软件是通过 Homestead.yaml 文件中的 features 选项安装的。大多数功能可以通过布尔值启用或禁用,而部分功能支持多种配置选项:
features:
- blackfire:
server_id: "server_id"
server_token: "server_value"
client_id: "client_id"
client_token: "client_value"
- 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: trueElasticsearch
你可以指定一个受支持的 Elasticsearch 版本,且必须是确切的版本号(主版本.次版本.补丁版本)。默认安装会创建一个名为 'homestead' 的集群。你切勿为 Elasticsearch 分配超过操作系统内存一半的内存,因此请确保你的 Homestead 虚拟机内存至少是 Elasticsearch 分配量的两倍。
请查阅Elasticsearch 文档,了解如何自定义配置。
MariaDB
启用 MariaDB 将移除 MySQL 并安装 MariaDB。你的应用应使用 mariadb 数据库驱动,而非 mysql:两者都能建立连接,但只有 mariadb 驱动会发出 MariaDB 专属的 SQL,例如向量距离查询。
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 发布页面上找到最新的稳定发布版本。
如果你是通过项目的 composer.json 文件安装 Homestead 的,应确保你的 composer.json 文件中包含 "laravel/homestead": "^12",并更新你的依赖项:
composer update接下来,你应该使用 vagrant box update 命令更新 Vagrant box:
vagrant box update更新 Vagrant box 后,你应该在 Homestead 目录中运行 bash init.sh 命令,以更新 Homestead 的附加配置文件。系统会询问你是否要覆盖现有的 Homestead.yaml、after.sh 和 aliases 文件:
# 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 在添加站点之前,应确保已为项目目录配置了文件夹映射。
如果 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"可用的站点类型包括:apache、apache-proxy、apigility、expressive、laravel(默认)、proxy(用于 nginx)、silverstripe、statamic、symfony2、symfony4 和 zf。
站点参数
你可以通过 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连接数据库
开箱即用的 MySQL 和 PostgreSQL 都已配置好 homestead 数据库。若要从主机的数据库客户端连接到 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 文件中添加以下行:
backup: true配置完成后,当执行 vagrant destroy 命令时,Homestead 会将数据库导出到 .backup/mysql_backup 和 .backup/postgres_backup 目录中。这些目录位于你安装 Homestead 的文件夹中;若你采用按项目安装的方式,则位于项目的根目录中。
配置 Cron 定时任务
Laravel 提供了一种便捷的方式,通过调度单个 schedule:run Artisan 命令每分钟运行一次,来调度 cron 任务。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 可让你拦截外发邮件,并在不实际将邮件发送给收件人的情况下查看邮件内容。开始使用前,请更新应用的 .env 文件,使用以下邮件设置:
MAIL_MAILER=smtp
MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=nullMailpit 配置完成后,可通过 http://localhost:8025 访问 Mailpit 仪表板。
配置 Minio
Minio 是一款开源对象存储服务器,提供兼容 Amazon S3 的 API。若要安装 Minio,请在 Homestead.yaml 文件的 features 部分添加以下配置项:
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 取值包括:none、download、upload 和 public。
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 进行单步调试。例如,你可以在浏览器中访问页面,PHP 会连接到你的 IDE,以便检查和修改正在运行的代码。
默认情况下,Xdebug 已处于运行状态,可随时接受连接。若要在 CLI 中启用 Xdebug,请在 Homestead 虚拟机中执行 sudo phpenmod xdebug 命令。接着,按照 IDE 的说明启用调试。最后,配置浏览器,通过扩展程序或bookmarklet(书签小工具)触发 Xdebug。
Xdebug 会显著降低 PHP 的运行速度。若要禁用 Xdebug,可在 Homestead 虚拟机中执行 sudo phpdismod xdebug,并重启 FPM 服务。
自动启动 Xdebug
在调试向 Web 服务器发起请求的功能测试时,自动开启调试会比修改测试用例以传入自定义请求头或 Cookie 来触发调试更加便捷。若要让 Xdebug 自动启动,请修改 Homestead 虚拟机内的 /etc/php/7.x/fpm/conf.d/20-xdebug.ini 文件,并添加以下配置:
; If Homestead.yaml contains a different subnet for the IP address, this address may be different...
xdebug.client_host = 192.168.10.1
xdebug.mode = debug
xdebug.start_with_request = yes调试 CLI 应用
要调试 PHP CLI 应用,请在 Homestead 虚拟机内使用 xphp shell 别名:
xphp /path/to/script使用 Blackfire 对应用进行性能分析
Blackfire 是一款用于对 Web 请求和 CLI 应用进行性能分析的服务。它提供了一个交互式用户界面,能够以调用图和时间轴的形式展示分析数据。该服务专为开发、预发布和生产环境而构建,不会给最终用户带来任何性能开销。此外,Blackfire 还能对代码以及 php.ini 的配置项执行性能、质量和安全性检查。
Blackfire Player 是一款开源的网页抓取、网页测试以及网页数据采集应用,可与 Blackfire 配合使用,用于编写性能分析场景脚本。
要启用 Blackfire,请在 Homestead 配置文件中使用 "features" 设置:
features:
- blackfire:
server_id: "server_id"
server_token: "server_value"
client_id: "client_id"
client_token: "client_value"Blackfire 服务端凭据和客户端凭据需要拥有 Blackfire 账户。Blackfire 提供了多种对应用进行性能分析的选项,包括 CLI 工具和浏览器扩展。请查阅 Blackfire 文档了解详情。
网络接口
Homestead.yaml 文件中的 networks 属性用于配置 Homestead 虚拟机的网络接口。您可以按需配置任意数量的接口:
networks:
- type: "private_network"
ip: "192.168.10.20"要启用 桥接接口,请为该网络配置 bridge 设置,并将网络类型改为 public_network:
networks:
- type: "public_network"
ip: "192.168.10.20"
bridge: "en1: Wi-Fi (AirPort)"要启用 DHCP,只需从配置中移除 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'