Laravel Homestead
- 介绍
- 安装和设置
- 更新 Homestead
- 日常使用
- Debugging and Profiling
- Network Interfaces
- Extending Homestead
- Provider Specific Settings
介绍
Laravel 致力于打造愉悦的 PHP 开发体验,包括您的本地开发环境。Laravel Homestead是一个官方预打包的 Vagrant 开发盒,它为您提供了一个出色的开发环境,无需您在本地计算机上安装 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
- 嗯
- SQLite3
- PostgreSQL 15
- 作曲家
- Docker
- Node(使用 Yarn、Bower、Grunt 和 Gulp)
- Redis
- Memcached
- Beanstalkd
- 邮件坑
- 阿瓦希
- 恩格罗克
- Xdebug
- XHProf / Tideways / XHGui
- wp-cli
可选软件
- 阿帕奇
- 黑火
- 卡桑德拉
- Chronograf
- CouchDB
- 水晶与幸运框架
- Elasticsearch
- 事件存储数据库
- 迁徙路线
- 吉曼
- 去
- 格拉法纳
- InfluxDB
- Logstash
- MariaDB
- 美丽搜索
- MinIO
- MongoDB
- Neo4j
- 哦我的天啊
- 打开 Resty
- PM2
- Python
- R
- RabbitMQ
- 锈
- RVM(Ruby 版本管理器)
- Solr
- 时间尺度数据库
- 交易者(PHP扩展)
- Webdriver 和 Laravel Dusk 实用程序
安装和设置
第一步
在启动 Homestead 环境之前,您必须安装Vagrant以及以下支持的提供程序之一:
所有这些软件包都为所有流行的操作系统提供了易于使用的可视化安装程序。
要使用 Parallels 提供程序,您需要安装Parallels Vagrant 插件。它是免费的。
安装 Homestead
您可以通过将 Homestead 仓库克隆到主机上来安装 Homestead。建议您将仓库克隆到Homestead
“home”目录下的某个文件夹中,因为 Homestead 虚拟机将作为所有 Laravel 应用程序的宿主。在本文档中,我们将此目录称为“Homestead 目录”。
1git clone https://github.com/laravel/homestead.git ~/Homestead
克隆 Laravel Homestead 仓库后,你应该检出该release
分支。此分支始终包含 Homestead 的最新稳定版本:
1cd ~/Homestead2 3git checkout release
bash init.sh
接下来,从 Homestead 目录执行以下命令来创建Homestead.yaml
配置文件。该Homestead.yaml
文件用于配置 Homestead 安装的所有设置。该文件将放置在 Homestead 目录中:
1# macOS / Linux...2bash init.sh3 4# Windows...5init.bat
配置 Homestead
设置你的提供商
provider
文件中的键指示Homestead.yaml
应使用哪个 Vagrant 提供程序:virtualbox
或parallels
:
1provider: virtualbox
如果您使用的是 Apple Silicon,则需要 Parallels 提供程序。
配置共享文件夹
folders
该文件的属性列出Homestead.yaml
了您希望与 Homestead 环境共享的所有文件夹。当这些文件夹中的文件发生更改时,它们将在您的本地计算机和 Homestead 虚拟环境之间保持同步。您可以根据需要配置任意数量的共享文件夹:
1folders:2 - map: ~/code/project13 to: /home/vagrant/project1
Windows 用户不应使用~/
路径语法,而应使用其项目的完整路径,例如C:\Users\user\Code\project1
。
您应该始终将各个应用程序映射到其各自的文件夹映射,而不是映射包含所有应用程序的单个大型目录。映射文件夹时,虚拟机必须跟踪文件夹中每个文件的所有磁盘 IO。如果文件夹中包含大量文件,则可能会遇到性能下降的情况:
1folders:2 - map: ~/code/project13 to: /home/vagrant/project14 - map: ~/code/project25 to: /home/vagrant/project2
使用 Homestead 时,切勿挂载.
(当前目录)。这会导致 Vagrant 无法将当前文件夹映射到当前目录/vagrant
,从而破坏可选功能,并在配置时导致意外结果。
要启用NFS,您可以type
向文件夹映射添加一个选项:
1folders:2 - map: ~/code/project13 to: /home/vagrant/project14 type: "nfs"
在 Windows 上使用 NFS 时,建议安装vagrant-winnfsd插件。该插件将维护 Homestead 虚拟机中文件和目录的正确用户/组权限。
您还可以通过在键下列出Vagrant 的同步文件夹options
支持的任何选项来传递它们:
1folders:2 - map: ~/code/project13 to: /home/vagrant/project14 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.test3 to: /home/vagrant/project1/public
如果在配置 Homestead 虚拟机后更改了sites
属性,则应vagrant reload --provision
在终端中执行命令来更新虚拟机上的 Nginx 配置。
Homestead 脚本尽可能地幂等。但是,如果您在配置过程中遇到问题,请执行以下vagrant destroy && vagrant up
命令来销毁并重建机器。
主机名解析
Homestead 使用 发布主机名,用于mDNS
自动主机解析。如果您在文件hostname: homestead
中设置Homestead.yaml
,主机将在 处可用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
。您添加到此文件的行将如下所示:
1192.168.56.56 homestead.test
确保列出的 IP 地址与文件中设置的一致Homestead.yaml
。将域名添加到hosts
文件并启动 Vagrant 后,您将能够通过 Web 浏览器访问该网站:
1http://homestead.test
配置服务
Homestead 默认启动了几个服务;但是,您可以在配置过程中自定义启用或禁用哪些服务。例如,您可以通过修改文件services
中的选项来启用 PostgreSQL 并禁用 MySQL Homestead.yaml
:
1services:2 - enabled:3 - "postgresql"4 - disabled:5 - "mysql"
指定的服务将根据enabled
和disabled
指令中的顺序启动或停止。
启动 Vagrant Box
编辑Homestead.yaml
好你喜欢的内容后,vagrant up
从 Homestead 目录运行该命令。Vagrant 将启动虚拟机并自动配置共享文件夹和 Nginx 站点。
要摧毁机器,您可以使用该vagrant destroy
命令。
每个项目安装
您可以为每个管理的项目配置一个 Homestead 实例,而不是全局安装 Homestead 并在所有项目中共享同一个 Homestead 虚拟机。如果您希望将项目随附的 Homestead 版本库一起发布,那么为每个项目安装 Homestead 可能会很有帮助Vagrantfile
,这样其他参与该项目的人员vagrant up
在克隆项目仓库后就可以立即使用 Homestead 版本库。
您可以使用 Composer 包管理器将 Homestead 安装到您的项目中:
1composer require laravel/homestead --dev
安装 Homestead 后,调用 Homestead 的make
命令为你的项目生成Vagrantfile
和Homestead.yaml
文件。这些文件将放置在项目的根目录中。该make
命令将自动配置文件中的sites
和指令:folders
Homestead.yaml
1# macOS / Linux...2php vendor/bin/homestead make3 4# Windows...5vendor\\bin\\homestead make
vagrant up
接下来,在终端中运行该命令,并在浏览器中访问你的项目。请记住,如果你不使用自动主机名解析http://homestead.test
,你仍然需要添加/etc/hosts
文件条目homestead.test
或你选择的域名。
安装可选功能
features
使用文件中的选项安装可选软件Homestead.yaml
。大多数功能可以通过布尔值启用或禁用,而某些功能允许多个配置选项:
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: true10 - crystal: true11 - dragonflydb: true12 - elasticsearch:13 version: 7.9.014 - eventstore: true15 version: 21.2.016 - flyway: true17 - gearman: true18 - golang: true19 - grafana: true20 - influxdb: true21 - logstash: true22 - mariadb: true23 - meilisearch: true24 - minio: true25 - mongodb: true26 - neo4j: true27 - ohmyzsh: true28 - openresty: true29 - pm2: true30 - python: true31 - r-base: true32 - rabbitmq: true33 - rustc: true34 - rvm: true35 - solr: true36 - timescaledb: true37 - trader: true38 - 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 浏览器,请http://homestead.test:7474
通过 Web 浏览器访问。端口7687
(Bolt)、7474
(HTTP) 和7473
(HTTPS) 已准备好处理来自 Neo4j 客户端的请求。
别名
aliases
您可以通过修改Homestead 目录中的文件来将 Bash 别名添加到 Homestead 虚拟机:
1alias c='clear'2alias ..='cd ..'
更新aliases
文件后,您应该使用以下命令重新配置 Homestead 虚拟机vagrant reload --provision
。这将确保您的新别名在机器上可用。
更新 Homestead
在开始更新 Homestead 之前,您应该通过在 Homestead 目录中运行以下命令来确保已删除当前虚拟机:
1vagrant destroy
接下来,您需要更新 Homestead 源代码。如果您克隆了仓库,则可以在最初克隆仓库的位置执行以下命令:
1git fetch2 3git pull origin release
这些命令会从 GitHub 仓库拉取最新的 Homestead 代码,获取最新的标签,然后检出最新的带标签的版本。您可以在 Homestead 的GitHub 发布页面上找到最新的稳定版本。
如果您已经通过项目composer.json
文件安装了 Homestead,则应确保您的composer.json
文件包含"laravel/homestead": "^12"
并更新您的依赖项:
1composer update
接下来,您应该使用以下命令更新 Vagrant 框vagrant box update
:
1vagrant box update
更新 Vagrant 框后,您应该bash init.sh
从 Homestead 目录运行命令来更新 Homestead 的其他配置文件。系统将询问您是否要覆盖现有的Homestead.yaml
、after.sh
和aliases
文件:
1# macOS / Linux...2bash init.sh3 4# Windows...5init.bat
最后,您需要重新生成 Homestead 虚拟机以使用最新的 Vagrant 安装:
1vagrant up
日常使用
通过 SSH 连接
vagrant ssh
您可以通过从 Homestead 目录执行终端命令通过 SSH 进入您的虚拟机。
添加其他站点
您的 Homestead 环境配置完毕并运行后,您可能需要为其他 Laravel 项目添加额外的 Nginx 站点。您可以在一个 Homestead 环境中运行任意数量的 Laravel 项目。要添加其他站点,请将其添加到您的Homestead.yaml
文件中。
1sites:2 - map: homestead.test3 to: /home/vagrant/project1/public4 - map: another.test5 to: /home/vagrant/project2/public
在添加站点之前,您应该确保已经为项目目录配置了文件夹映射。
如果 Vagrant 没有自动管理你的“hosts”文件,你可能还需要将新站点添加到该文件中。在 macOS 和 Linux 上,此文件位于/etc/hosts
。在 Windows 上,它位于C:\Windows\System32\drivers\etc\hosts
:
1192.168.56.56 homestead.test2192.168.56.56 another.test
添加站点后,vagrant reload --provision
从 Homestead 目录执行终端命令。
站点类型
Homestead 支持多种“类型”的站点,让您可以轻松运行非基于 Laravel 的项目。例如,我们可以使用以下statamic
站点类型轻松地将 Statamic 应用程序添加到 Homestead:
1sites:2 - map: statamic.test3 to: /home/vagrant/my-symfony-project/web4 type: "statamic"
可用的站点类型有:、、、、apache
(默认)、apache-proxy
(对于nginx )、、、、、和。apigility
expressive
laravel
proxy
silverstripe
statamic
symfony2
symfony4
zf
站点参数
您可以fastcgi_param
通过站点指令向您的网站添加额外的 Nginx 值params
:
1sites:2 - map: homestead.test3 to: /home/vagrant/project1/public4 params:5 - key: FOO6 value: BAR
环境变量
您可以通过将全局环境变量添加到Homestead.yaml
文件中来定义它们:
1variables:2 - key: APP_ENV3 value: local4 - key: FOO5 value: bar
更新Homestead.yaml
文件后,请务必通过执行命令重新配置计算机vagrant reload --provision
。这将更新所有已安装 PHP 版本的 PHP-FPM 配置,并更新vagrant
用户的环境。
端口
默认情况下,以下端口将转发到您的 Homestead 环境:
- HTTP: 8000 → 转发至 80
- HTTPS: 44300 → 转发至 443
转发其他端口
如果需要,可以通过在文件ports
中定义配置条目来将其他端口转发到 Vagrant 主机Homestead.yaml
。更新Homestead.yaml
文件后,请务必执行以下命令重新配置机器vagrant reload --provision
:
1ports:2 - send: 500003 to: 50004 - send: 77775 to: 7776 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。您可以在文件中指定站点使用的 PHP 版本Homestead.yaml
。可用的 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.test3 to: /home/vagrant/project1/public4 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 list10php8.3 artisan list
您可以通过在 Homestead 虚拟机中发出以下命令来更改 CLI 使用的 PHP 默认版本:
1php56 2php70 3php71 4php72 5php73 6php74 7php80 8php81 9php8210php83
连接数据库
数据库homestead
已配置为 MySQL 和 PostgreSQL,开箱即用。要从主机的数据库客户端连接到 MySQL 或 PostgreSQL 数据库,您应该连接到127.0.0.1
端口33060
(MySQL) 或54320
(PostgreSQL)。这两个数据库的用户名和密码均为homestead
/ secret
。
仅当从主机连接到数据库时才应使用这些非标准端口。由于 Laravel 在虚拟机中database
运行,因此您将在 Laravel 应用程序的配置文件中使用默认的 3306 和 5432 端口。
数据库备份
当您的 Homestead 虚拟机被销毁时,Homestead 可以自动备份您的数据库。要使用此功能,您必须使用 Vagrant 2.1.0 或更高版本。或者,如果您使用的是旧版本的 Vagrant,则必须安装该vagrant-triggers
插件。要启用自动数据库备份,请在文件中添加以下行Homestead.yaml
:
1backup: true
配置完成后,Homestead 会在执行命令时将数据库导出到.backup/mysql_backup
和.backup/postgres_backup
目录vagrant destroy
。这些目录可以在 Homestead 的安装文件夹中找到,或者如果您使用按项目安装的方法,则位于项目的根目录中。
配置 Cron 计划
Laravel 提供了一种便捷的cron 任务调度方法,即每分钟运行一个schedule:run
Artisan 命令。该schedule:run
命令会检查你文件中定义的任务计划,routes/console.php
以确定要运行哪些计划任务。
如果您希望schedule:run
为 Homestead 站点运行该命令,您可以在定义站点时将schedule
选项设置为:true
1sites:2 - map: homestead.test3 to: /home/vagrant/project1/public4 schedule: true
/etc/cron.d
该站点的 cron 作业将在Homestead 虚拟机的目录中定义。
配置 Mailpit
Mailpit允许您拦截外发邮件并进行检查,而无需实际将邮件发送给收件人。首先,请更新您的应用程序.env
文件以使用以下邮件设置:
1MAIL_MAILER=smtp2MAIL_HOST=localhost3MAIL_PORT=10254MAIL_USERNAME=null5MAIL_PASSWORD=null6MAIL_ENCRYPTION=null
配置 Mailpit 后,您可以访问 Mailpit 仪表板http://localhost:8025
。
配置 Minio
Minio是一个开源对象存储服务器,具有与 Amazon S3 兼容的 API。要安装 Minio,请在featuresHomestead.yaml
部分使用以下配置选项更新文件:
1minio: true
Minio 默认在 9600 端口运行。您可以通过 访问 Minio 控制面板http://localhost:9600
。默认访问密钥为homestead
,默认密钥为secretkey
。访问 Minio 时,请务必使用 region us-east-1
。
为了使用 Minio,请确保您的.env
文件具有以下选项:
1AWS_USE_PATH_STYLE_ENDPOINT=true2AWS_ENDPOINT=http://localhost:96003AWS_ACCESS_KEY_ID=homestead4AWS_SECRET_ACCESS_KEY=secretkey5AWS_DEFAULT_REGION=us-east-1
要配置 Minio 支持的“S3”存储桶,请在文件buckets
中添加一条指令Homestead.yaml
。定义存储桶后,请vagrant reload --provision
在终端中执行以下命令:
1buckets:2 - name: your-bucket3 policy: public4 - name: your-private-bucket5 policy: none
支持的值policy
包括:none
、、和。download
upload
public
Laravel Dusk
为了在 Homestead 中运行Laravel Dusk测试,您应该在 Homestead 配置中启用webdriver 功能:
1features:2 - webdriver: true
启用该webdriver
功能后,您应该vagrant reload --provision
在终端中执行该命令。
共享您的环境
有时您可能希望与同事或客户分享您正在处理的内容。Vagrant 通过命令内置了此功能vagrant share
;但是,如果您在文件中配置了多个站点,此功能将无法使用Homestead.yaml
。
为了解决这个问题,Homestead 提供了自己的share
命令。首先,通过 SSH连接到你的 Homestead 虚拟机vagrant ssh
并执行以下share homestead.test
命令。此命令将从homestead.test
你的配置文件中共享站点Homestead.yaml
。你可以将任何其他已配置的站点替换为homestead.test
:
1share homestead.test
运行该命令后,您将看到一个 Ngrok 屏幕,其中包含Events日志和共享站点的可公开访问的 URL。如果您想指定自定义区域、子域或其他 Ngrok 运行时选项,您可以将它们添加到share
命令中:
1share homestead.test -region=eu -subdomain=laravel
如果您需要通过 HTTPS 而不是 HTTP 共享内容,使用sshare
命令而不是share
将能够实现这一点。
请记住,Vagrant 本质上是不安全的,并且在运行命令时您会将您的虚拟机暴露给互联网share
。
调试和分析
使用 Xdebug 调试 Web 请求
Homestead 支持使用Xdebug进行分步调试。例如,您可以在浏览器中访问某个页面,PHP 会连接到您的 IDE,以便检查和修改正在运行的代码。
默认情况下,Xdebug 已运行并准备好接受连接。如果您需要在 CLI 上启用 Xdebug,请在 Homestead 虚拟机中执行以下命令。接下来,按照 IDE 的说明启用调试。最后,配置您的浏览器以使用扩展程序或书签小程序sudo phpenmod xdebug
触发 Xdebug 。
Xdebug 会导致 PHP 运行速度显著下降。要禁用 Xdebug,请sudo phpdismod xdebug
在 Homestead 虚拟机中运行并重启 FPM 服务。
自动启动 Xdebug
在调试向 Web 服务器发出请求的功能测试时,自动启动调试比修改测试以传递自定义标头或 Cookie 来触发调试更容易。要强制 Xdebug 自动启动,请修改/etc/php/7.x/fpm/conf.d/20-xdebug.ini
Homestead 虚拟机内的文件并添加以下配置:
1; If Homestead.yaml contains a different subnet for the IP address, this address may be different...2xdebug.client_host = 192.168.10.13xdebug.mode = debug4xdebug.start_with_request = yes
调试 CLI 应用程序
要调试 PHP CLI 应用程序,请使用xphp
Homestead 虚拟机内的 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 文档。
网络接口
networks
该文件的属性用于Homestead.yaml
配置 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)"
要启用DHCPip
,只需从配置中删除该选项:
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
after.sh
您可以使用Homestead 根目录下的脚本来扩展 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 以使其更适合您的个人开发风格。为此,您可以user-customizations.sh
在 Homestead 目录的根目录(与包含您的Homestead.yaml
文件的目录相同)中创建一个文件。在此文件中,您可以进行任何您想要的自定义;但是,该文件user-customizations.sh
不应受版本控制。
提供商特定设置
VirtualBox
natdnshostresolver
默认情况下,Homestead 将此natdnshostresolver
设置配置为on
。这允许 Homestead 使用主机操作系统的 DNS 设置。如果您想覆盖此行为,请将以下配置选项添加到您的Homestead.yaml
文件:
1provider: virtualbox2natdnshostresolver: 'off'