简介

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 (With Yarn, Bower, Grunt, and 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 Version Manager)
Solr
TimescaleDB
Trader (PHP extension)
Webdriver & Laravel Dusk Utilities

安装与设置

第一步

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

VirtualBox 6.1.x
Parallels
所有这些软件包都为所有常用操作系统提供了易于使用的可视化安装程序。

如果要使用 Parallels 提供虚拟机服务, 你需要安装 Parallels Vagrant plug-in。这个插件是免费的。

安装 Homestead
你可以通过将 Homestead 仓库克隆到你的主机上来安装 Homestead。建议将仓库克隆到php home下的php Homestead 文件夹中,因为 Homestead 虚拟机将作为你所有 Laravel 应用程序的主机。在本文档中,我们将这个目录称为你的「Homestead 目录」:

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

克隆 Laravel Homestead 仓库后,你应该切换到php release 分支。 这个分支总是包含 Homestead 的最新稳定版本:

  1. cd ~/Homestead
  2. git checkout release

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

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

配置 Homestead

设置提供服务的虚拟机程序
php Homestead.yaml 文件中的 php provider键的值用来配置使用哪个 Vagrant 提供虚拟机服务: php virtualboxphp parallels:

  1. provider: virtualbox


[!注意]
如果你使用的是 Apple Silicon,那么你需要使用 Parallels 虚拟机。

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

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


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


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

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


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


要启用 NFS,你可以在文件夹映射中添加一个 php type 选项:

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


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


你还可以通过配置php options属性列出它们来传递 Vagrant 的 同步文件夹 支持的任何选项:

  1. folders:
  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? 没问题。 你的 php Homestead.yaml 文件的 php sites 属性允许你轻松地将「域」映射到 Homestead 环境中的文件夹。 php Homestead.yaml 文件中包含一个示例站点配置。 同样,你可以根据需要向 Homestead 环境添加任意数量的站点。 Homestead 可以为你正在开发的每个 Laravel 应用程序提供方便的虚拟化环境:

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

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


[!注意]
脚本被设计得尽可能具有幂等性。但是,如果你在配置过程中遇到问题,你应该通过执行 php vagrant destroy && vagrant up 命令来销毁和重建机器。

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

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

  1. 192.168.56.56 homestead.test

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

  1. http://homestead.test

配置服务

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

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

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

启动 The Vagrant Box

你根据自己的需求修改 php Homestead.yaml 后,你可以通过在 php Homestead 目录运行 php vagrant up 命令来启动 Vagrant 虚拟机。 Vagrant 将启动虚拟机并自动配置你的共享文件夹和 Nginx 站点。

要销毁虚拟机实例,你可以使用 php vagrant destroy 命令。

为项目单独安装

你可以为你管理的每个项目配置一个 php Homestead 实例,而不是全局安装 php Homestead 并在所有项目中共享相同的 Homestead 虚拟机。 如果你希望随项目一起提供 php Vagrantfile,允许其他人在克隆项目的存储库后立即 php vagrant up,则为每个项目安装 Homestead 可能会有所帮助。

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

  1. composer require laravel/homestead --dev

安装 Homestead 后,调用 Homestead 的 php make 命令为你的项目生成 php Vagrantfilephp Homestead.yaml 文件。 这些文件将放置在项目的根目录中。 php make 命令将自动配置 php Homestead.yaml 文件中的站点和文件夹指令:

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

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

安装可选功能

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

  1. features:
  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 版本,版本号必须是一个确切的版本号(主版本号.次版本号.补丁版本号)。默认安装将创建一个名为 ‘homestead’ 的集群。你不应该给 Elasticsearch 分配超过操作系统内存的一半,所以请确保你的 Homestead 虚拟机至少有 Elasticsearch 分配量的两倍内存。


[!注意]
点击查看 Elasticsearch documentation 学习如何自定义你的配置。

MariaDB
启用 MariaDB 将会移除 MySQL 并安装 MariaDB。MariaDB 通常是用于替代 MySQL ,完全兼容 MySQL,所以在应用数据库配置中你仍然可以使用 php mysql 驱动。

MongoDB
默认安装的 MongoDB 将会设置数据库用户名为 php homestead 及对应的密码为 php secret

Neo4j
Neo4j 是一个图形数据库,默认安装的 Neo4j 会设置数据库用户名为 php homestead 及对应的密码 php secret。要通过浏览器访问 Neo4j ,请通过 Web 浏览器访问 php http://homestead.test:7474。默认情况下,服务预设了端口 php 7687(Bolt)、php 7474(HTTP)和 php 7473(HTTPS)为来自 Neo4j 客户端的请求提供服务。

系统命令别名

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

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

当你更新完 php aliases 文件后,你需要通过 php vagrant reload --provision 命令重启 Homestead 机器,以确保新的别名在机器上生效。

更新 Homestead

更新 Homestead 之前确保你已经在 Homestead 目录下通过如下命令移除了当前的虚拟机:

  1. vagrant destroy

接下来,需要更新 Homestead 源码,如果你已经克隆仓库到本地,可以在项目根目录下运行如下命令进行更新:

  1. git fetch
  2. git pull origin release

这些命令会从 Github 存储库中拉取最新的 Homestead 仓库代码到本地,包括最新的标签版本。你可以在 Homestead 的 GitHub 发布页面 上找到最新的稳定版本。

如果你是通过 Composer 在指定 Laravel 项目中安装的 Homestead,需要确保 php composer.json 中包含了 php "laravel/homestead": "^12",然后更新这个依赖:

  1. composer update

之后,你需要通过 php vagrant box update 命令更新 Vagrant:

  1. vagrant box update

接下来,你可以从 Homestead 目录下运行 php bash init.sh 命令来更新 Homestead 额外的配置文件,你会被询问是否覆盖已存在的 php Homestead.yamlphp after.sh 以及 php aliases 文件:

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

最后,你需要重新生成新的 Homestead 虚拟机来使用最新安装的 Vagrant:

  1. vagrant up

日常使用方法

通过 SSH 连接

你可以在 Homestead 目录下通过运行 php vagrant ssh 以 SSH 方式连接到虚拟机。如果你设置了全部访问 Homestead,也可以在任意路径下通过 homestead ssh 登录到虚拟机。

添加其他站点

Homestead 虚拟机在运行时,可能需要添加多个 Laravel 应用到 Nginx 站点。如果是在单个 Homestead 环境中运行多个 Laravel 应用,添加站点很简单,只需将站点添加到 php Homestead.yaml 文件:

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


[!注意]
在添加站点之前,你应该确保已经为项目的目录配置了 配置共享文件夹。


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

  1. 192.168.56.56 homestead.test
  2. 192.168.56.56 another.test

添加站点后,你需要在 Homestead 目录运行 php vagrant reload --provision 命令才可以加载新的站点。

站点类型
Homestead 支持多种「类型」的站点,让你可以轻松运行不是基于 Laravel 的项目。 例如,我们可以使用 php statamic 站点类型轻松地将 Statamic 应用程序添加到 Homestead:

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

可用的站点类型有:php apache, php apache-proxy, php apigility, php expressive, php laravel (默认), php proxy (用于 nginx ), php silverstripe, php statamic, php symfony2, php symfony4, 和 php zf

站点参数
你可以通过 php params 站点指令向你的站点添加额外的 Nginx php fastcgi_param 值:

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

环境变量

你可以 php Homestead.yaml 文件来定义全局环境变量:

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

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

端口

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

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

转发额外的端口
如你所愿,你可以通过在你的 php Homestead.yaml 文件中定义一个 php ports 配置项来将额外的端口转发到 Vagrant 虚拟机。 更新 php Homestead.yaml 文件后,请务必通过执行 php vagrant reload --provision 命令重新载入虚拟机配置:

  1. ports:
  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」(默认):

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

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

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

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

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

连接到数据库

php Homestead 开箱即用地为 MySQL 和 PostgreSQL 配置了一个 homestead 数据库。如果你想用宿主机的数据库客户端连接到 MySQL 或 PostgreSQL 数据库,你可以通过连接 php 127.0.0.1 (本地网络)的 33060 端口(MySQL) 或 54320 端口(PostgreSQL)。 两个数据库的用户名和密码都是 php homestead/php secret


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

数据库备份

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

  1. backup: true

配置完成后,当执行 php vagrant destroy 命令时,Homestead 会将你的数据库导出到 php .backup/mysql_backupphp .backup/postgres_backup 目录。 如果你选择了 为项目单独安装 Homestead,你可以在项目安装 Homestead 的文件夹中找到这些目录,或者在你的项目根目录中找到它们。

配置 Cron 计划任务

Laravel 提供了一种便捷方式来满足 任务调度 ,通过 Artisan 命令 php schedule:run 实现了定时运行(每分钟执行一次)。 php schedule:run 命令将检查在 php App\Console\Kernel 类中定义的作业计划,以确定要运行哪些计划任务。

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

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

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

配置Mailpit

Mailpit 会在你本地开发的过程中拦截应用程序发送的电子邮件,而不是将邮件实际发送给收件人。如果要使用 Mailpit,你需要参考以下邮件配置并更新应用程序的 php .env 文件:

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

配置 Mailpit 后,你可以通过 php http://localhost:8025访问 Mailpit 看板。

配置 Minio

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

  1. minio: true

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

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

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

要配置 Minio 支持的「S3」存储桶,请在你的 php Homestead.yaml 文件中添加 php buckets 指令。 定义存储桶后,你应该在终端中执行 php vagrant reload --provision 命令重载虚拟机:

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

支持的 php policy 值包括: php none, php download, php upload, 和 php public.

Laravel Dusk 测试工具

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

  1. features:
  2. - webdriver: true

启用 php webdriver 功能后,你应该在终端中执行 php vagrant reload --provision 命令重载虚拟机。

共享你的环境

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

为了解决这个问题,Homestead 包含了自己的 php share 命令。 首先,通过 php vagrant ssh SSH 到你的 Homestead 虚拟机 并执行 php share homestead.test 命令。 此命令将从你的 php Homestead.yaml 配置文件中共享 php homestead.test 站点。 你可以将任何其他配置的站点替换为 php homestead.test

  1. share homestead.test

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

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

如果你需要通过HTTPS而不是HTTP来分享内容,使用php sshare命令而不是php share命令。


[!注意]
请记住,Vagrant 本质上是不安全的,并且你在运行 php share 命令时会将虚拟机暴露在互联网上。

调试和分析

使用 Xdebug 调试 Web 请求

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

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


[!注意]
Xdebug 导致 PHP 运行速度明显变慢。要禁用 Xdebug,请在 Homestead 虚拟机中运行 php sudo phpdismod xdebug 并重新启动 FPM 服务。

自动启动 Xdebug
在调试对 Web 服务器发出请求的功能测试时,自动启动调试通常比修改测试以通过自定义头或 Cookie 触发调试更为方便。要强制 Xdebug 自动启动,您需要在 Homestead 虚拟机中的php /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...
  2. xdebug.client_host = 192.168.10.1
  3. xdebug.mode = debug
  4. xdebug.start_with_request = yes

调试 CLI 应用程序

要调试 PHP CLI 应用程序,请在 Homestead 虚拟机中使用 php xphp shell 别名:

  1. xphp /path/to/script

使用 Blackfire 分析应用程序

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

Blackfire Player是一个开源的 Web 爬行、Web 测试和 Web 抓取应用程序,可以与 Blackfire 联合使用以编写分析场景的脚本。

要启用 Blackfire,请使用 Homestead 配置文件中的「features」配置项:

  1. features:
  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 文档以获取更多详细信息。

网络接口

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

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

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

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

要启用 DHCP 功能,你只需从配置中删除 php ip 选项:

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

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

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

扩展 Homestead

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

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

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

用户自定义

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

针对虚拟机软件的特殊设置

VirtualBox

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

  1. provider: virtualbox
  2. natdnshostresolver: 'off'