Laravel Homestead
介绍
Laravel 致力于让整个 PHP 开发体验变得愉快,包括您的本地开发环境。Vagrant 提供了一种简单、优雅的方式来管理和配置虚拟机。
Laravel Homestead 是一个官方的、预打包的 Vagrant box,它为您提供了一个出色的开发环境,而无需在本地机器上安装 PHP、Web 服务器和其他服务器软件。再也不用担心弄乱您的操作系统了!Vagrant box 是完全可丢弃的。如果出现问题,您可以在几分钟内销毁并重新创建 box!
Homestead 可以在任何 Windows、Mac 或 Linux 系统上运行,并包括 Nginx、PHP、MySQL、PostgreSQL、Redis、Memcached、Node 以及您开发出色 Laravel 应用程序所需的所有其他工具。
如果您使用的是 Windows,您可能需要启用硬件虚拟化(VT-x)。通常可以通过 BIOS 启用。如果您在 UEFI 系统上使用 Hyper-V,您可能还需要禁用 Hyper-V 以访问 VT-x。
包含的软件
- Ubuntu 18.04
- Git
- PHP 7.3
- PHP 7.2
- PHP 7.1
- PHP 7.0
- PHP 5.6
- Nginx
- MySQL
- lmm 用于 MySQL 或 MariaDB 数据库快照
- Sqlite3
- PostgreSQL
- Composer
- Node(带有 Yarn、Bower、Grunt 和 Gulp)
- Redis
- Memcached
- Beanstalkd
- Mailhog
- avahi
- ngrok
- Xdebug
- XHProf / Tideways / XHGui
- wp-cli
可选软件
- Apache
- Blackfire
- Cassandra
- Chronograf
- CouchDB
- Crystal & Lucky Framework
- Docker
- Elasticsearch
- Gearman
- Go
- Grafana
- InfluxDB
- MariaDB
- MinIO
- MongoDB
- MySQL 8
- Neo4j
- Oh My Zsh
- Open Resty
- PM2
- Python
- RabbitMQ
- Solr
- Webdriver & Laravel Dusk Utilities
安装与设置
第一步
在启动 Homestead 环境之前,您必须安装 VirtualBox 6.x、VMWare、Parallels 或 Hyper-V 以及 Vagrant。所有这些软件包都为所有流行的操作系统提供了易于使用的可视化安装程序。
要使用 VMware 提供商,您需要购买 VMware Fusion / Workstation 和 VMware Vagrant 插件。尽管它不是免费的,但 VMware 可以提供开箱即用的更快的共享文件夹性能。
要使用 Parallels 提供商,您需要安装 Parallels Vagrant 插件。它是免费的。
由于 Vagrant 的限制,Hyper-V 提供商会忽略所有网络设置。
安装 Homestead Vagrant Box
安装 VirtualBox / VMware 和 Vagrant 后,您应该使用以下命令将 laravel/homestead
box 添加到您的 Vagrant 安装中。根据您的互联网连接速度,下载 box 可能需要几分钟:
vagrant box add laravel/homestead
如果此命令失败,请确保您的 Vagrant 安装是最新的。
Homestead 定期发布用于测试的“alpha”/“beta” box,这可能会干扰 vagrant box add
命令。如果您在运行 vagrant box add
时遇到问题,可以运行 vagrant up
命令,当 Vagrant 尝试启动虚拟机时,将下载正确的 box。
安装 Homestead
您可以通过将存储库克隆到主机上来安装 Homestead。考虑将存储库克隆到“home”目录中的 Homestead
文件夹中,因为 Homestead box 将作为您所有 Laravel 项目的主机:
git clone https://github.com/laravel/homestead.git ~/Homestead
您应该检出 Homestead 的标记版本,因为 master
分支可能并不总是稳定的。您可以在 GitHub 发布页面 上找到最新的稳定版本。或者,您可以检出始终包含最新稳定版本的 release
分支:
cd ~/Homestead
git checkout release
克隆 Homestead 存储库后,从 Homestead 目录运行 bash init.sh
命令以创建 Homestead.yaml
配置文件。Homestead.yaml
文件将放置在 Homestead 目录中:
// Mac / Linux...
bash init.sh
// Windows...
init.bat
配置 Homestead
设置您的提供商
Homestead.yaml
文件中的 provider
键指示应使用哪个 Vagrant 提供商:virtualbox
、vmware_fusion
、vmware_workstation
、parallels
或 hyperv
。您可以将其设置为您喜欢的提供商:
provider: virtualbox
配置共享文件夹
Homestead.yaml
文件的 folders
属性列出了您希望与 Homestead 环境共享的所有文件夹。随着这些文件夹中的文件发生更改,它们将在本地计算机和 Homestead 环境之间保持同步。您可以根据需要配置任意数量的共享文件夹:
folders:
- map: ~/code/project1
to: /home/vagrant/project1
Windows 用户不应使用 ~/
路径语法,而应使用项目的完整路径,例如 C:\Users\user\Code\project1
。
您应该始终将单个项目映射到自己的文件夹映射,而不是映射整个 ~/code
文件夹。当您映射一个文件夹时,虚拟机必须跟踪该文件夹中每个文件的所有磁盘 IO。如果文件夹中有大量文件,这会导致性能问题。
folders:
- map: ~/code/project1
to: /home/vagrant/project1
- map: ~/code/project2
to: /home/vagrant/project2
使用 Homestead 时,您不应挂载 .
(当前目录)。这会导致 Vagrant 不将当前文件夹映射到 /vagrant
,并会破坏可选功能并在配置时导致意外结果。
要启用 NFS,您只需在同步文件夹配置中添加一个简单的标志:
folders:
- map: ~/code/project1
to: /home/vagrant/project1
type: "nfs"
在 Windows 上使用 NFS 时,您应该考虑安装 vagrant-winnfsd 插件。此插件将维护 Homestead box 中文件和目录的正确用户/组权限。
您还可以通过在 options
键下列出它们来传递 Vagrant 的 Synced Folders 支持的任何选项:
folders:
- map: ~/code/project1
to: /home/vagrant/project1
type: "rsync"
options:
rsync__args: ["--verbose", "--archive", "--delete", "-zz"]
rsync__exclude: ["node_modules"]
配置 Nginx 站点
不熟悉 Nginx?没问题。sites
属性允许您轻松地将“域”映射到 Homestead 环境中的文件夹。Homestead.yaml
文件中包含了一个示例站点配置。同样,您可以根据需要向 Homestead 环境添加任意数量的站点。Homestead 可以作为您正在处理的每个 Laravel 项目的便捷虚拟化环境:
sites:
- map: homestead.test
to: /home/vagrant/project1/public
如果在配置 Homestead box 后更改 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 机器。在 Mac 和 Linux 上,此文件位于 /etc/hosts
。在 Windows 上,它位于 C:\Windows\System32\drivers\etc\hosts
。您添加到此文件的行将如下所示:
192.168.10.10 homestead.test
确保列出的 IP 地址是您在 Homestead.yaml
文件中设置的地址。将域添加到 hosts
文件并启动 Vagrant box 后,您将能够通过 Web 浏览器访问该站点:
http://homestead.test
启动 Vagrant Box
编辑 Homestead.yaml
后,从 Homestead 目录运行 vagrant up
命令。Vagrant 将启动虚拟机并自动配置您的共享文件夹和 Nginx 站点。
要销毁机器,您可以使用 vagrant destroy --force
命令。
每个项目的安装
您可以为您管理的每个项目配置一个 Homestead 实例,而不是全局安装 Homestead 并在所有项目中共享同一个 Homestead box。如果您希望随项目一起提供 Vagrantfile
,以便其他人可以 vagrant up
,则每个项目安装 Homestead 可能会有所帮助。
要将 Homestead 直接安装到您的项目中,请使用 Composer 进行安装:
composer require laravel/homestead --dev
安装 Homestead 后,使用 make
命令在项目根目录中生成 Vagrantfile
和 Homestead.yaml
文件。make
命令将自动配置 Homestead.yaml
文件中的 sites
和 folders
指令。
Mac / Linux:
php vendor/bin/homestead make
Windows:
vendor\\bin\\homestead make
接下来,在终端中运行 vagrant up
命令,并在浏览器中访问 http://homestead.test
项目。请记住,如果您不使用自动 主机名解析,您仍然需要为 homestead.test
或您选择的域添加 /etc/hosts
文件条目。
安装可选功能
可选软件是使用 Homestead 配置文件中的“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
- docker: true
- elasticsearch:
version: 7
- gearman: true
- golang: true
- grafana: true
- influxdb: true
- mariadb: true
- minio: true
- mongodb: true
- mysql8: true
- neo4j: true
- ohmyzsh: true
- openresty: true
- pm2: true
- python: true
- rabbitmq: true
- solr: true
- webdriver: true
MariaDB
启用 MariaDB 将删除 MySQL 并安装 MariaDB。MariaDB 作为 MySQL 的替代品,因此您仍应在应用程序的数据库配置中使用 mysql
数据库驱动程序。
MongoDB
默认的 MongoDB 安装将数据库用户名设置为 homestead
,相应的密码为 secret
。
Elasticsearch
您可以指定受支持的 Elasticsearch 版本,可以是主要版本或确切的版本号(major.minor.patch)。默认安装将创建一个名为“homestead”的集群。您永远不应为 Elasticsearch 分配超过操作系统内存的一半,因此请确保您的 Homestead 机器至少有两倍于 Elasticsearch 分配的内存。
查看 Elasticsearch 文档 以了解如何自定义配置。
Neo4j
默认的 Neo4j 安装将数据库用户名设置为 homestead
,相应的密码为 secret
。要访问 Neo4j 浏览器,请通过 Web 浏览器访问 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
有时您可能希望从文件系统的任何位置 vagrant up
您的 Homestead 机器。您可以通过将 Bash 函数添加到 Bash 配置文件来在 Mac / Linux 系统上执行此操作。在 Windows 上,您可以通过将“批处理”文件添加到 PATH
来实现。这些脚本将允许您从系统的任何位置运行任何 Vagrant 命令,并将该命令自动指向您的 Homestead 安装:
Mac / Linux
function homestead() {
( cd ~/Homestead && vagrant $* )
}
确保在函数中调整 ~/Homestead
路径以匹配您实际的 Homestead 安装位置。安装函数后,您可以从系统的任何位置运行 homestead up
或 homestead ssh
等命令。
Windows
在计算机上的任何位置创建一个 homestead.bat
批处理文件,内容如下:
@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 机器,请考虑将上面描述的“函数”添加到主机,以快速 SSH 进入 Homestead box。
连接到数据库
默认情况下,MySQL 和 PostgreSQL 都配置了一个 homestead
数据库。要从主机的数据库客户端连接到 MySQL 或 PostgreSQL 数据库,您应连接到 127.0.0.1
和端口 33060
(MySQL)或 54320
(PostgreSQL)。两个数据库的用户名和密码都是 homestead
/ secret
。
连接到数据库时,您应该仅使用这些非标准端口。由于 Laravel 在虚拟机内运行,因此在 Laravel 数据库配置文件中将使用默认的 3306 和 5432 端口。
数据库备份
Homestead 可以在 Vagrant box 被销毁时自动备份您的数据库。要使用此功能,您必须使用 Vagrant 2.1.0 或更高版本。或者,如果您使用的是旧版本的 Vagrant,则必须安装 vagrant-triggers
插件。要启用自动数据库备份,请将以下行添加到 Homestead.yaml
文件中:
backup: true
配置后,Homestead 将在执行 vagrant destroy
命令时将您的数据库导出到 mysql_backup
和 postgres_backup
目录。这些目录可以在您克隆 Homestead 的文件夹中找到,或者如果您使用 每个项目安装 方法,则可以在项目的根目录中找到。
数据库快照
Homestead 支持冻结 MySQL 和 MariaDB 数据库的状态并在它们之间分支,使用 Logical MySQL Manager。例如,想象一下处理一个多千兆字节的数据库。您可以导入数据库并拍摄快照。进行一些工作并在本地创建一些测试内容后,您可以快速恢复到原始状态。
在后台,LMM 使用 LVM 的精简快照功能和写时复制支持。实际上,这意味着更改表中的单行只会导致您所做的更改被写入磁盘,从而在恢复期间节省大量时间和磁盘空间。
由于 lmm
与 LVM 交互,因此必须以 root
身份运行。要查看所有可用命令,请在 Vagrant box 内运行 sudo lmm
。常见的工作流程如下所示:
- 将数据库导入到默认的
master
lmm 分支。 - 使用
sudo lmm branch prod-YYYY-MM-DD
保存未更改数据库的快照。 - 修改数据库。
- 运行
sudo lmm merge prod-YYYY-MM-DD
以撤消所有更改。 - 运行
sudo lmm delete <branch>
删除不需要的分支。
添加额外站点
一旦您的 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”文件,您可能还需要将新站点添加到该文件中:
192.168.10.10 homestead.test
192.168.10.10 another.test
添加站点后,从 Homestead 目录运行 vagrant reload --provision
命令。
站点类型
Homestead 支持多种类型的站点,允许您轻松运行不基于 Laravel 的项目。例如,我们可以轻松地使用 symfony2
站点类型将 Symfony 应用程序添加到 Homestead:
sites:
- map: symfony2.test
to: /home/vagrant/my-symfony-project/web
type: "symfony2"
可用的站点类型有:apache
、apigility
、expressive
、laravel
(默认)、proxy
、silverstripe
、statamic
、symfony2
、symfony4
和 zf
。
站点参数
您可以通过 params
站点指令向站点添加额外的 Nginx fastcgi_param
值。例如,我们将添加一个值为 BAR
的 FOO
参数:
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
用户的环境。
配置 Cron 计划
Laravel 提供了一种方便的方法来 计划 Cron 作业,通过每分钟运行一次 schedule:run
Artisan 命令。schedule:run
命令将检查 App\Console\Kernel
类中定义的作业计划,以确定应运行哪些作业。
如果您希望为 Homestead 站点运行 schedule:run
命令,可以在定义站点时将 schedule
选项设置为 true
:
sites:
- map: homestead.test
to: /home/vagrant/project1/public
schedule: true
站点的 Cron 作业将在虚拟机的 /etc/cron.d
文件夹中定义。
配置 Mailhog
Mailhog 允许您轻松捕获传出的电子邮件并检查它,而无需实际将邮件发送给收件人。要开始使用,请更新您的 .env
文件以使用以下邮件设置:
MAIL_DRIVER=smtp
MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
配置 Mailhog 后,您可以通过 http://localhost:8025
访问 Mailhog 仪表板。
配置 Minio
Minio 是一个开源对象存储服务器,具有与 Amazon S3 兼容的 API。要安装 Minio,请在 features 部分中使用以下配置选项更新 Homestead.yaml
文件:
minio: true
默认情况下,Minio 在端口 9600 上可用。您可以通过访问 http://homestead:9600/
访问 Minio 控制面板。默认访问密钥是 homestead
,默认密钥是 secretkey
。访问 Minio 时,您应始终使用区域 us-east-1
。
为了使用 Minio,您需要调整 config/filesystems.php
配置文件中的 S3 磁盘配置。您需要将 use_path_style_endpoint
选项添加到磁盘配置中,并将 url
键更改为 endpoint
:
'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
文件具有以下选项:
AWS_ACCESS_KEY_ID=homestead
AWS_SECRET_ACCESS_KEY=secretkey
AWS_DEFAULT_REGION=us-east-1
AWS_URL=http://homestead:9600
要配置存储桶,请在 Homestead 配置文件中添加 buckets
指令:
buckets:
- name: your-bucket
policy: public
- name: your-private-bucket
policy: none
支持的 policy
值包括:none
、download
、upload
和 public
。
端口
默认情况下,以下端口转发到您的 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 box,并指定它们的协议:
ports:
- send: 50000
to: 5000
- send: 7777
to: 777
protocol: udp
共享您的环境
有时您可能希望与同事或客户共享您当前正在处理的内容。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
请记住,Vagrant 本质上是不安全的,运行 share
命令时,您正在将虚拟机暴露给互联网。
多 PHP 版本
Homestead 6 引入了在同一虚拟机上支持多个 PHP 版本的功能。您可以在 Homestead.yaml
文件中指定要为给定站点使用的 PHP 版本。可用的 PHP 版本有:“5.6”、“7.0”、“7.1”、“7.2”和“7.3”(默认):
sites:
- map: homestead.test
to: /home/vagrant/project1/public
php: "7.1"
此外,您可以通过 CLI 使用任何支持的 PHP 版本:
php5.6 artisan list
php7.0 artisan list
php7.1 artisan list
php7.2 artisan list
php7.3 artisan list
您还可以通过在 Homestead 虚拟机内发出以下命令来更新默认的 CLI 版本:
php56
php70
php71
php72
php73
Web 服务器
Homestead 默认使用 Nginx Web 服务器。但是,如果指定 apache
作为站点类型,它可以安装 Apache。虽然可以同时安装两个 Web 服务器,但它们不能同时运行。flip
shell 命令可用于简化在 Web 服务器之间切换的过程。flip
命令会自动确定哪个 Web 服务器正在运行,关闭它,然后启动另一个服务器。要使用此命令,请 SSH 进入您的 Homestead 机器并在终端中运行命令:
flip
邮件
Homestead 包含 Postfix 邮件传输代理,默认监听端口 1025
。因此,您可以指示应用程序在 localhost
端口 1025
上使用 smtp
邮件驱动程序。然后,所有发送的邮件将由 Postfix 处理并由 Mailhog 捕获。要查看已发送的电子邮件,请在 Web 浏览器中打开 http://localhost:8025。
调试与分析
使用 Xdebug 调试 Web 请求
Homestead 支持使用 Xdebug 进行步骤调试。例如,您可以从浏览器加载网页,PHP 将连接到您的 IDE 以允许检查和修改正在运行的代码。
默认情况下,Xdebug 已经在运行并准备好接受连接。如果需要在 CLI 上启用 Xdebug,请在 Vagrant box 内运行 sudo phpenmod xdebug
命令。接下来,按照 IDE 的说明启用调试。最后,配置浏览器以使用扩展或 书签 触发 Xdebug。
Xdebug 会导致 PHP 运行显著变慢。要禁用 Xdebug,请在 Vagrant box 内运行 sudo phpdismod xdebug
并重新启动 FPM 服务。
调试 CLI 应用程序
要调试 PHP CLI 应用程序,请在 Vagrant box 内使用 xphp
shell 别名:
xphp path/to/script
自动启动 Xdebug
在调试向 Web 服务器发出请求的功能测试时,自动启动调试比修改测试以通过自定义标头或 cookie 触发调试更容易。要强制 Xdebug 自动启动,请在 Vagrant box 内修改 /etc/php/7.#/fpm/conf.d/20-xdebug.ini
并添加以下配置:
; 如果 Homestead.yml 包含不同子网的 IP 地址,此地址可能不同...
xdebug.remote_host = 192.168.10.1
xdebug.remote_autostart = 1
使用 Blackfire 分析应用程序
Blackfire 是一个用于分析 Web 请求和 CLI 应用程序并编写性能断言的 SaaS 服务。它提供了一个交互式用户界面,显示调用图和时间线中的配置文件数据。它专为在开发、暂存和生产中使用而构建,对最终用户没有开销。它提供对代码和 php.ini
配置设置的性能、质量和安全性检查。
Blackfire Player 是一个开源的 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 提供多种选项来分析应用程序,包括 CLI 工具和浏览器扩展。请 查看 Blackfire 文档以获取更多详细信息。
使用 XHGui 分析 PHP 性能
XHGui 是一个用于探索 PHP 应用程序性能的用户界面。要启用 XHGui,请在站点配置中添加 xhgui: 'true'
:
sites:
-
map: your-site.test
to: /home/vagrant/your-site/public
type: "apache"
xhgui: 'true'
如果站点已存在,请确保在更新配置后运行 vagrant provision
。
要分析 Web 请求,请将 xhgui=on
作为查询参数添加到请求中。XHGui 将自动将 cookie 附加到响应中,以便后续请求不需要查询字符串值。您可以通过浏览到 http://your-site.test/xhgui
查看应用程序配置文件结果。
要使用 XHGui 分析 CLI 请求,请在命令前加上 XHGUI=on
:
XHGUI=on path/to/script
CLI 配置文件结果可以与 Web 配置文件结果以相同方式查看。
请注意,分析会减慢脚本执行速度,绝对时间可能是实际请求的两倍。因此,请始终比较百分比改进而不是绝对数字。此外,请注意执行时间包括在调试器中暂停的时间。
由于性能配置文件占用大量磁盘空间,因此它们会在几天后自动删除。
网络接口
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)"
扩展 Homestead
您可以使用 Homestead 目录根目录中的 after.sh
脚本扩展 Homestead。在此文件中,您可以添加任何必要的 shell 命令,以正确配置和自定义虚拟机。
自定义 Homestead 时,Ubuntu 可能会询问您是否要保留软件包的原始配置或用新配置文件覆盖它。为避免这种情况,您在安装软件包时应使用以下命令,以避免覆盖 Homestead 先前写入的任何配置:
sudo apt-get -y \
-o Dpkg::Options::="--force-confdef" \
-o Dpkg::Options::="--force-confold" \
install your-package
用户自定义
在团队环境中使用 Homestead 时,您可能希望调整 Homestead 以更好地适应您的个人开发风格。您可以在 Homestead 目录的根目录中创建一个 user-customizations.sh
文件(与 Homestead.yaml
位于同一目录)。在此文件中,您可以进行任何自定义;但是,user-customizations.sh
不应进行版本控制。
更新 Homestead
在开始更新 Homestead 之前,请确保通过在 Homestead 目录中运行以下命令删除当前虚拟机:
vagrant destroy
接下来,您需要更新 Homestead 源代码。如果您克隆了存储库,可以在最初克隆存储库的位置运行以下命令:
git fetch
git pull origin release
这些命令从 GitHub 存储库中提取最新的 Homestead 代码,获取最新的标签,然后检出最新的标记版本。您可以在 GitHub 发布页面 上找到最新的稳定版本。
如果您通过项目的 composer.json
文件安装了 Homestead,您应该确保 composer.json
文件包含 "laravel/homestead": "^9"
并更新您的依赖项:
composer update
然后,您应该使用 vagrant box update
命令更新 Vagrant box:
vagrant box update
最后,您需要重新生成 Homestead box 以利用最新的 Vagrant 安装:
vagrant up
特定提供商设置
VirtualBox
natdnshostresolver
默认情况下,Homestead 将 natdnshostresolver
设置配置为 on
。这允许 Homestead 使用主机操作系统的 DNS 设置。如果您想覆盖此行为,请将以下行添加到 Homestead.yaml
文件中:
provider: virtualbox
natdnshostresolver: 'off'
Windows 上的符号链接
如果符号链接在您的 Windows 机器上无法正常工作,您可能需要将以下块添加到 Vagrantfile
中:
config.vm.provider "virtualbox" do |v|
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
end