LaravelDocs(中文)

Homestead

Laravel Homestead 是一個官方預封裝的 Vagrant box

簡介 (Introduction)

[!WARNING] Laravel Homestead 是一個不再積極維護的舊版套件。Laravel Sail 可作為現代化的替代方案。

Laravel 致力於讓整個 PHP 開發體驗變得愉快,包括你的本地開發環境。Laravel Homestead 是一個官方預封裝的 Vagrant box,它為你提供了一個極佳的開發環境,而無需你在本地機器上安裝 PHP、Web 伺服器或任何其他伺服器軟體。

Vagrant 提供了一種簡單、優雅的方式來管理和配置虛擬機器。Vagrant boxes 是完全可拋棄的。如果出現問題,你可以在幾分鐘內銷毀並重新建立 box!

Homestead 可以在任何 Windows、macOS 或 Linux 系統上運行,並包含 Nginx、PHP、MySQL、PostgreSQL、Redis、Memcached、Node 以及開發精彩 Laravel 應用程式所需的所有其他軟體。

[!WARNING] 如果你使用的是 Windows,你可能需要啟用硬體虛擬化 (VT-x)。通常可以透過 BIOS 啟用。如果你在 UEFI 系統上使用 Hyper-V,你可能還需要停用 Hyper-V 才能存取 VT-x。

包含的軟體 (Included Software)

  • 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

可選軟體 (Optional Software)

  • 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

安裝與設定 (Installation and Setup)

第一步 (First Steps)

在啟動 Homestead 環境之前,你必須安裝 Vagrant 以及下列其中一個支援的供應商:

所有這些軟體套件都為所有流行的作業系統提供了易於使用的視覺化安裝程式。

要使用 Parallels 供應商,你需要安裝 Parallels Vagrant plug-in。它是免費的。

安裝 Homestead (Installing Homestead)

你可以透過將 Homestead 儲存庫複製到你的主機機器上來安裝 Homestead。建議將儲存庫複製到你的「home」目錄下的 Homestead 資料夾中,因為 Homestead 虛擬機器將作為你所有 Laravel 應用程式的主機。在整份文件中,我們將稱此目錄為你的「Homestead 目錄」:

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

複製 Laravel Homestead 儲存庫後,你應該 checkout 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 (Configuring Homestead)

設定你的供應商 (Setting Your Provider)

你的 Homestead.yaml 檔案中的 provider 鍵表示應該使用哪個 Vagrant 供應商:virtualboxparallels

provider: virtualbox

[!WARNING] 如果你使用的是 Apple Silicon,則必須使用 Parallels 供應商。

設定共享資料夾 (Configuring Shared Folders)

Homestead.yaml 檔案的 folders 屬性列出了你希望與 Homestead 環境共享的所有資料夾。當這些資料夾中的檔案發生變更時,它們將在你的本地機器和 Homestead 虛擬環境之間保持同步。你可以根據需要設定任意數量的共享資料夾:

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

[!WARNING] Windows 使用者不應使用 ~/ 路徑語法,而應使用專案的完整路徑,例如 C:\Users\user\Code\project1

你應該始終將個別應用程式映射到它們自己的資料夾映射,而不是映射包含所有應用程式的單一大型目錄。當你映射資料夾時,虛擬機器必須追蹤資料夾中每個檔案的所有磁碟 IO。如果資料夾中有大量檔案,你可能會遇到效能降低的情況:

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

[!WARNING] 使用 Homestead 時,你永遠不應掛載 .(當前目錄)。這會導致 Vagrant 無法將當前資料夾映射到 /vagrant,並會破壞可選功能並在配置時導致意外結果。

要啟用 NFS,你可以將 type 選項新增至你的資料夾映射:

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

[!WARNING] 在 Windows 上使用 NFS 時,你應該考慮安裝 vagrant-winnfsd 外掛程式。此外掛程式將維護 Homestead 虛擬機器內檔案和目錄的正確使用者 / 群組權限。

你也可以透過在 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 網站 (Configuring Nginx Sites)

不熟悉 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 設定。

[!WARNING] Homestead 指令碼旨在盡可能具有等冪性。但是,如果你在配置時遇到問題,你應該透過執行 vagrant destroy && vagrant up 指令來銷毀並重建機器。

主機名稱解析 (Hostname Resolution)

Homestead 使用 mDNS 發佈主機名稱以進行自動主機解析。如果你在 Homestead.yaml 檔案中設定 hostname: homestead,則主機將可透過 homestead.local 存取。macOS、iOS 和 Linux 桌面發行版預設包含 mDNS 支援。如果你使用的是 Windows,則必須安裝 Bonjour Print Services for Windows

使用自動主機名稱最適合 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 檔案中設定的 IP 位址。將網域新增至 hosts 檔案並啟動 Vagrant box 後,你將能夠透過網頁瀏覽器存取該網站:

http://homestead.test

設定服務 (Configuring Services)

Homestead 預設會啟動數個服務;但是,你可以在配置期間自訂啟用或停用哪些服務。例如,你可以透過修改 Homestead.yaml 檔案中的 services 選項來啟用 PostgreSQL 並停用 MySQL:

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

指定的服務將根據它們在 enableddisabled 指令中的順序啟動或停止。

啟動 Vagrant Box (Launching the Vagrant Box)

一旦你根據自己的喜好編輯了 Homestead.yaml,請從你的 Homestead 目錄執行 vagrant up 指令。Vagrant 將啟動虛擬機器並自動設定你的共享資料夾和 Nginx 網站。

要銷毀機器,你可以使用 vagrant destroy 指令。

各專案獨立安裝 (Per Project Installation)

你可以為你管理的每個專案設定一個 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 檔案項目。

安裝可選功能 (Installing Optional Features)

可選軟體是使用 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: true

Elasticsearch

你可以指定支援的 Elasticsearch 版本,該版本必須是確切的版本號(major.minor.patch)。預設安裝將建立一個名為 'homestead' 的叢集。你永遠不應給 Elasticsearch 超過作業系統記憶體的一半,因此請確保你的 Homestead 虛擬機器至少有兩倍於 Elasticsearch 分配的記憶體。

[!NOTE] 查看 Elasticsearch 文件 以了解如何自訂你的設定。

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 客戶端的請求。

Aliases

你可以透過修改 Homestead 目錄中的 aliases 檔案來將 Bash aliases 新增至你的 Homestead 虛擬機器:

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

更新 aliases 檔案後,你應該使用 vagrant reload --provision 指令重新配置 Homestead 虛擬機器。這將確保你的新 aliases 在機器上可用。

更新 Homestead (Updating Homestead)

在開始更新 Homestead 之前,你應該確保已透過在 Homestead 目錄中執行以下指令來移除目前的虛擬機器:

vagrant destroy

接下來,你需要更新 Homestead 原始碼。如果你複製了儲存庫,你可以在最初複製儲存庫的位置執行以下指令:

git fetch

git pull origin release

這些指令從 GitHub 儲存庫拉取最新的 Homestead 程式碼,獲取最新的標籤,然後 checkout 最新的標記版本。你可以在 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.yamlafter.shaliases 檔案:

# macOS / Linux...
bash init.sh

# Windows...
init.bat

最後,你需要重新產生 Homestead 虛擬機器以利用最新的 Vagrant 安裝:

vagrant up

日常使用 (Daily Usage)

透過 SSH 連線 (Connecting via SSH)

你可以透過從你的 Homestead 目錄執行 vagrant ssh 終端機指令來 SSH 進入你的虛擬機器。

新增額外網站 (Adding Additional Sites)

一旦你的 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 終端機指令。

網站類型 (Site Types)

Homestead 支援數種「類型」的網站,允許你輕鬆運行非基於 Laravel 的專案。例如,我們可以使用 statamic 網站類型輕鬆地將 Statamic 應用程式新增至 Homestead:

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

可用的網站類型有:apacheapache-proxyapigilityexpressivelaravel(預設)、proxy(用於 nginx)、silverstripestatamicsymfony2symfony4zf

網站參數 (Site Parameters)

你可以透過 params 網站指令將額外的 Nginx fastcgi_param 值新增至你的網站:

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

環境變數 (Environment Variables)

你可以透過將全域環境變數新增至你的 Homestead.yaml 檔案來定義它們:

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

更新 Homestead.yaml 檔案後,請務必執行 vagrant reload --provision 指令重新配置機器。這將更新所有已安裝 PHP 版本的 PHP-FPM 設定,並更新 vagrant 使用者的環境。

連接埠 (Ports)

預設情況下,以下連接埠會轉發到你的 Homestead 環境:

  • HTTP: 8000 → 轉發至 80
  • HTTPS: 44300 → 轉發至 443

轉發額外連接埠 (Forwarding Additional Ports)

如果願意,你可以透過在 Homestead.yaml 檔案中定義 ports 設定項目來將額外連接埠轉發到 Vagrant box。更新 Homestead.yaml 檔案後,請務必執行 vagrant reload --provision 指令重新配置機器:

ports:
  - send: 50000
    to: 5000
  - send: 7777
    to: 777
    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 版本 (PHP Versions)

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

連線至資料庫 (Connecting to Databases)

homestead 資料庫已針對 MySQL 和 PostgreSQL 進行了開箱即用的設定。要從主機機器的資料庫客戶端連線到你的 MySQL 或 PostgreSQL 資料庫,你應該連線到 127.0.0.1 的連接埠 33060 (MySQL) 或 54320 (PostgreSQL)。這兩個資料庫的使用者名稱和密碼皆為 homestead / secret

[!WARNING] 當從你的主機機器連線到資料庫時,你應該只使用這些非標準連接埠。由於 Laravel 是在虛擬機器內部運行,因此你將在 Laravel 應用程式的 database 設定檔中使用預設的 3306 和 5432 連接埠。

資料庫備份 (Database Backups)

當你的 Homestead 虛擬機器被銷毀時,Homestead 可以自動備份你的資料庫。要利用此功能,你必須使用 Vagrant 2.1.0 或更高版本。或者,如果你使用的是舊版 Vagrant,則必須安裝 vagrant-triggers 外掛程式。要啟用自動資料庫備份,請將以下行新增至你的 Homestead.yaml 檔案:

backup: true

設定完成後,當執行 vagrant destroy 指令時,Homestead 會將你的資料庫匯出到 .backup/mysql_backup.backup/postgres_backup 目錄。這些目錄可以在你安裝 Homestead 的資料夾中找到,或者如果你使用 各專案獨立安裝 方法,則可以在專案的根目錄中找到。

設定 Cron 排程 (Configuring Cron Schedules)

Laravel 透過排程一個每分鐘執行一次的 schedule:run Artisan 指令,提供了一種方便的方式來 排程 cron jobsschedule:run 指令將檢查你的 routes/console.php 檔案中定義的作業排程,以決定要執行哪些排程任務。

如果你希望為 Homestead 網站執行 schedule:run 指令,你可以在定義網站時將 schedule 選項設定為 true

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

該網站的 cron job 將定義在 Homestead 虛擬機器的 /etc/cron.d 目錄中。

設定 Mailpit (Configuring Mailpit)

Mailpit 允許你攔截外發電子郵件並進行檢查,而無需實際將郵件發送給收件人。要開始使用,請更新你的應用程式的 .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 (Configuring Minio)

Minio 是一個具有 Amazon S3 相容 API 的開源物件儲存伺服器。要安裝 Minio,請在 features 區段中使用以下設定選項更新你的 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」儲存桶,請將 buckets 指令新增至你的 Homestead.yaml 檔案。定義儲存桶後,你應該在終端機中執行 vagrant reload --provision 指令:

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

支援的 policy 值包括:nonedownloaduploadpublic

Laravel Dusk

為了在 Homestead 內執行 Laravel Dusk 測試,你應該在你的 Homestead 設定中啟用 webdriver feature

features:
  - webdriver: true

啟用 webdriver 功能後,你應該在終端機中執行 vagrant reload --provision 指令。

分享你的環境 (Sharing Your Environment)

有時你可能希望與同事或客戶分享你目前正在進行的工作。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 將使你能夠這樣做。

[!WARNING] 請記住,Vagrant 本質上是不安全的,當執行 share 指令時,你將你的虛擬機器暴露在網際網路上。

除錯與分析 (Debugging and Profiling)

使用 Xdebug 對 Web 請求進行除錯 (Debugging Web Requests With Xdebug)

Homestead 包含使用 Xdebug 進行逐步除錯的支援。例如,你可以在瀏覽器中存取頁面,PHP 將連線到你的 IDE 以允許檢查和修改正在運行的程式碼。

預設情況下,Xdebug 已經在運行並準備好接受連線。如果你需要在 CLI 上啟用 Xdebug,請在你的 Homestead 虛擬機器內執行 sudo phpenmod xdebug 指令。接下來,按照你的 IDE 的說明啟用除錯。最後,設定你的瀏覽器以使用擴充功能或 bookmarklet 觸發 Xdebug。

[!WARNING] Xdebug 會導致 PHP 運行速度顯著變慢。要停用 Xdebug,請在你的 Homestead 虛擬機器內執行 sudo phpdismod xdebug 並重新啟動 FPM 服務。

自動啟動 Xdebug (Autostarting 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 應用程式 (Debugging CLI Applications)

要除錯 PHP CLI 應用程式,請在你的 Homestead 虛擬機器內使用 xphp shell alias:

xphp /path/to/script

使用 Blackfire 分析應用程式 (Profiling Applications With Blackfire)

Blackfire 是一個用於分析 Web 請求和 CLI 應用程式的服務。它提供了一個互動式使用者介面,可在呼叫圖和時間軸中顯示分析資料。它是為開發、預備和生產環境而建構的,對終端使用者沒有開銷。此外,Blackfire 還提供程式碼和 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 帳戶。Blackfire 提供各種選項來分析應用程式,包括 CLI 工具和瀏覽器擴充功能。請 查看 Blackfire 文件以獲取更多詳細資訊

網路介面 (Network Interfaces)

Homestead.yaml 檔案的 networks 屬性配置你的 Homestead 虛擬機器的網路介面。你可以根據需要配置任意數量的介面:

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

要啟用 bridged 介面,請為網路配置 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 (Extending 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

使用者自訂 (User Customizations)

當與團隊一起使用 Homestead 時,你可能希望調整 Homestead 以更符合你的個人開發風格。為此,你可以在 Homestead 目錄(包含 Homestead.yaml 檔案的同一目錄)的根目錄中建立一個 user-customizations.sh 檔案。在此檔案中,你可以進行任何你想要的自訂;但是,user-customizations.sh 不應受到版本控制。

供應商特定設定 (Provider Specific Settings)

VirtualBox

natdnshostresolver

預設情況下,Homestead 將 natdnshostresolver 設定配置為 on。這允許 Homestead 使用你的主機作業系統的 DNS 設定。如果你想覆蓋此行為,請將以下設定選項新增至你的 Homestead.yaml 檔案:

provider: virtualbox
natdnshostresolver: "off"