Homestead
Homestead
Laravel Homestead
簡(jiǎn)介
Laravel 致力于讓整個(gè) PHP 開發(fā)體驗(yàn)變的更愉快,包括你的本地開發(fā)環(huán)境。 Vagrant 提供了一種簡(jiǎn)單、優(yōu)雅的方式來管理和配置虛擬主機(jī)。
Laravel Homestead 是一個(gè)官方預(yù)封裝的 Vagrant box ,它為你提供了一個(gè)完美的開發(fā)環(huán)境,你不需要在本地機(jī)器安裝 PHP、 web 服務(wù)器和其他的服務(wù)器軟件。你再也不用擔(dān)心會(huì)弄亂你的操作系統(tǒng)了! Vagrant boxes 是一次性的。 如果出現(xiàn)問題, 你可以在幾分鐘內(nèi)銷毀并重新創(chuàng)建 box !
Homestead 可以運(yùn)行在任何 Windows、 Mac、 或 Linux 系統(tǒng), 它包括了 Nginx web 服務(wù)器, PHP 7.3、 PHP 7.2、 PHP 7.1、 MySQL、PostgreSQL、Redis、 Memcached、 Node 以及你開發(fā) Laravel 所需要的東西。
{note} 如果你使用的是 Windows, 你可能需要通過 BIOS 來啟用硬件虛擬化 (VT-x)。如果你在 Hyper-V 系統(tǒng)上使用 UEFI 你可能還需要禁用 Hyper-V 以便訪問 VT-x.
內(nèi)置軟件
- Ubuntu 18.04
- Git
- PHP 7.3
- PHP 7.2
- PHP 7.1
- Nginx
- Apache (Optional)
- MySQL
- MariaDB (Optional)
- Sqlite3
- PostgreSQL
- Composer
- Node (With Yarn, Bower, Grunt, and Gulp)
- Redis
- Memcached
- Beanstalkd
- Mailhog
- Neo4j (Optional)
- MongoDB (Optional)
- Elasticsearch (Optional)
- ngrok
- wp-cli
- Zend Z-Ray
- Go
- Minio
安裝 & 設(shè)置
第一步
在你啟動(dòng) Homestead 環(huán)境之前,你必須安裝 VirtualBox, VMWare, Parallels 或 Hyper-V 以及 Vagrant. 以上所有軟件均針對(duì)不同的操作系統(tǒng)提供了易于使用的可視化安裝包。
若要使用 VMware 提供器, 你需要購(gòu)買 VMware Fusion / Workstation 和 VMware Vagrant plug-in. 雖然它不是免費(fèi)的,但是 VMware 可以提供更快的共享文件夾性能。
若要使用 Parallels 提供器, 你需要安裝 Parallels Vagrant plug-in。它是免費(fèi)的哦。
由于受到 Vagrant 限制 , Hyper-V 提供程序會(huì)忽略所有的網(wǎng)絡(luò)設(shè)置。
安裝 Homestead Vagrant Box
一旦將 VirtualBox / VMware 和 Vagrant 都安裝好之后,你可以在終端執(zhí)行下面的命令將 laravel/homestead
box 添加到 Vagrant 中安裝。你可能需要幾分鐘的時(shí)間來下載 box , 因?yàn)樗Q于你的網(wǎng)絡(luò)連接速度:
vagrant box add laravel/homestead
如果這個(gè)命令失敗了,請(qǐng)確保你安裝的是最新版的 Vagrant。
安裝 Homestead
你可以通過克隆代碼來安裝 Homestead。 建議將代碼克隆到你的 "home" 目錄下的 Homestead
文件夾中, 這樣 Homestead box 就可以作為你的所有 Laravel 項(xiàng)目的主機(jī):
git clone https://github.com/laravel/homestead.git ~/Homestead
因?yàn)?Homestead 的 master 分支并不是穩(wěn)定的,你應(yīng)該使用打過標(biāo)簽的穩(wěn)定版本。你可以在 GitHub 發(fā)行頁: 上找到最新的穩(wěn)定版本:
cd ~/Homestead// 克隆期望的發(fā)行版本...git checkout v8.0.1
一旦克隆 Homestead 代碼完成以后,在 Homestead 目錄中使用 bash init.sh
命令來創(chuàng)建 Homestead.yaml
配置文件。 Homestead.yaml
文件將被放在 Homestead 目錄中:
// Mac / Linux...bash init.sh// Windows...init.bat
配置 Homestead
設(shè)置提供器
Homestead.yaml
文件中的 provider
參數(shù)決定了你用的是哪一個(gè) Vagrant 提供器 : virtualbox
, vmware_fusion
, vmware_workstation
, parallels
以及 hyperv
。 你可以根據(jù)你的喜好來設(shè)置他們:
provider: virtualbox
配置共享文件夾
Homestead.yaml 文件的 folders 屬性里列出了所有與 Homestead 環(huán)境共享的文件夾。 這些文件夾中的文件如果發(fā)生變更,它們會(huì)保持本地機(jī)器與 Homestead 環(huán)境之間同步。 你可以根據(jù)需要配置多個(gè)共享文件夾:
folders: - map: ~/code to: /home/vagrant/code
如果你只創(chuàng)建幾個(gè)網(wǎng)站,這種通用的映射將運(yùn)行的很好。但是,隨著網(wǎng)站數(shù)量的不斷增加,你可能會(huì)開始遇到性能問題。在包含大量文件的低性能機(jī)器或項(xiàng)目中,這個(gè)問題會(huì)非常明顯。如果遇到此問題,請(qǐng)嘗試將每個(gè)項(xiàng)目映射到自己的 Vagrant 文件夾:
folders: - map: ~/code/project1 to: /home/vagrant/code/project1 - map: ~/code/project2 to: /home/vagrant/code/project2
若要開啟 NFS, 你只需要在共享的文件夾配置中添加一個(gè)簡(jiǎn)單的標(biāo)志:
folders: - map: ~/code to: /home/vagrant/code type: "nfs"
{note} 當(dāng)使用 NFS 時(shí),你最好使用 vagrant-winnfsd 擴(kuò)展插件。 這個(gè)插件會(huì)替你處理 Homestead box 中的文件或目錄權(quán)限的問題。
你也可以通過在 options
中列出 Vagrant's 的共享文件夾 支持的任何選項(xiàng):
folders: - map: ~/code to: /home/vagrant/code type: "rsync" options: rsync__args: ["--verbose", "--archive", "--delete", "-zz"] rsync__exclude: ["node_modules"]
配置 Nginx 站點(diǎn)
對(duì) Nginx 不熟悉?沒關(guān)系。 sites
功能可以讓你在 Homestead 上輕松的映射一個(gè) "域名" 到一個(gè)文件夾。在 Homestead.yaml
文件中包含了一個(gè)簡(jiǎn)單的站點(diǎn)配置示例。同樣,您可以根據(jù)需要為您的 Homestead 環(huán)境添加很多的站點(diǎn)。Homestead 可以為你正在開發(fā)的每個(gè) Laravel 項(xiàng)目提供一個(gè)方便的虛擬化環(huán)境:
sites: - map: homestead.test to: /home/vagrant/code/my-project/public
如果你在配置 Homestead 虛擬機(jī)后更改了 sites
選項(xiàng),你需要再次運(yùn)行 vagrant reload --provision
命令去更新虛擬機(jī)上的 Nginx 配置.
Hosts 文件
你必須將 Nginx 站點(diǎn)中所添加的域名添加到你本機(jī)的 hosts
文件中。 hosts
文件會(huì)將把訪問你 Homestead 站點(diǎn)的請(qǐng)求重定向到你的 Homestead 虛擬機(jī)上。在 Mac 和 Linux 中,該文件的地址在 /etc/hosts
,在 Windows 中位于 C:\Windows\System32\drivers\etc\hosts
。添加新站點(diǎn)的格式如下所示:
192.168.10.10 homestead.test
確保監(jiān)聽的 IP 地址是你在 Homestead.yaml
文件中所設(shè)置的。一旦你將將域名添加到 hosts
文件中并啟動(dòng) Vagrant Box 后,你就可以通過瀏覽器訪問該站點(diǎn)了:
http://homestead.test
啟動(dòng) Vagrant Box
根據(jù)你的需求編輯完成 Homestead.yaml
,在你的 Homestead 文件夾中運(yùn)行 vagrant up
命令。Vagrant 將啟動(dòng)虛擬機(jī)并自動(dòng)配置你的共享文件夾和 Nginx 站點(diǎn)。
若要?jiǎng)h除虛擬機(jī),只需要運(yùn)行 vagrant destroy --force
命令。
根據(jù)項(xiàng)目安裝
除了全局安裝 Homestead 并且在所有項(xiàng)目共享相同的 Homestead box 之外, 你可以為每個(gè)項(xiàng)目配置 Homestead 實(shí)例。 通過在項(xiàng)目下創(chuàng)建 Vagrantfile
,其他的項(xiàng)目成員只需運(yùn)行 vagrant up
就能擁有相同的開發(fā)環(huán)境。
要將 Homestead 直接安裝到項(xiàng)目中,需要使用 Composer 命令:
composer require laravel/homestead --dev
Homestead 安裝之后, 使用 make
命令在項(xiàng)目根目錄中生成 Vagrantfile
和 Homestead.yaml
文件。 make
命令會(huì)自動(dòng)配置 Homestead.yaml
文件中 sites
和 folders
指令。
Mac / Linux:
php vendor/bin/homestead make
Windows:
vendor\\bin\\homestead make
接下來,在命令行中運(yùn)行 vagrant up
命令,然后在瀏覽器中訪問 http://homestead.test
。 記住,在訪問之前你仍然需要在 /etc/hosts
文件中添加你的 homestead.test
記錄或者其他的域名。
安裝 MariaDB
如果你喜歡使用 MariaDB 而不是 MySQL, 你可以在 Homestead.yaml
文件中增加一個(gè) mariadb
的選項(xiàng)。這個(gè)選項(xiàng)會(huì)刪除 MySQL 并安裝 MariaDB。 MariaDB 只是作為 MySQL 的旁支替代品,因此你還是可以在應(yīng)用的數(shù)據(jù)庫(kù)配置中使用 mysql
數(shù)據(jù)庫(kù)驅(qū)動(dòng):
box: laravel/homestead ip: "192.168.10.10"memory: 2048cpus: 4provider: virtualbox mariadb: true
安裝 MongoDB
如果你需要安裝 MongoDB 社區(qū)版, 你可以在 Homestead.yaml
文件中將配置修改為:
mongodb: true
MongoDB 默認(rèn)的安裝方式會(huì)把數(shù)據(jù)庫(kù)的用戶名設(shè)置為 homestead
,默認(rèn)密碼為 secret
。
安裝 Elasticsearch
如果你要安裝 Elasticsearch,你可以在 Homestead.yaml
文件中添加 elasticsearch
選項(xiàng)并指定支持的版本號(hào)。可以僅包含主版本,也可以是某個(gè)具體的版本號(hào)(major.minor.patch)。默認(rèn)安裝會(huì)創(chuàng)建一個(gè)名為 'homestead' 的集群。 注意永遠(yuǎn)不要賦予 Elasticsearch 超過操作系統(tǒng)一半的內(nèi)存,因此請(qǐng)保證你的 Homestead 至少分配了兩倍于 Elasticsearch 的內(nèi)存:
box: laravel/homestead ip: "192.168.10.10"memory: 4096cpus: 4provider: virtualbox elasticsearch: 6
{tip} 你可以查看 Elasticsearch documentation 文檔學(xué)習(xí)如何自定義你的配置。
安裝 Neo4j
Neo4j 是一個(gè)圖形數(shù)據(jù)庫(kù)管理系統(tǒng)。要安裝 Neo4j 社區(qū)版,需要更新 Homestead.yaml
配置項(xiàng)如下:
neo4j: true
默認(rèn)安裝的 Neo4j 會(huì)將數(shù)據(jù)庫(kù)用戶名設(shè)置為 homestead
,對(duì)應(yīng)的密碼設(shè)置為 secret
。 要查看 Neo4j 可以在瀏覽器中訪問 http://homestead.test:7474
。 Neo4j 對(duì)外提供了三個(gè)端口: 7687
(Bolt)、 7474
(HTTP)、 7473
(HTTPS) 用于從客戶端訪問。
別名
你可以通過編輯 Homestead 目錄下的 aliases
文件為 Homestead 虛擬機(jī)添加 Bash 別名:
alias c='clear'alias ..='cd ..'
更新完 aliases
文件后, 你應(yīng)該使用 vagrant reload --provision
命令重啟 Homestead 虛擬機(jī), 以確保新的別名在機(jī)器上可用。
日常使用
全局可用的 Homestead
有時(shí)你可能想在文件系統(tǒng)的任意路徑都能運(yùn)行 vagrant up
命令啟動(dòng) Homestead 虛擬機(jī)。在 Mac / Linux 系統(tǒng)上可以在 Bash 配置文件( ~/.bash_profile
)中添加 Bash 函數(shù) 。在 Windows 上, 你可以添加「批處理」文件到 PATH
。這些腳本允許你在系統(tǒng)的任何位置運(yùn)行 Vagrant 命令并自動(dòng)將該命令指向 Homestead 的安裝路徑:
Mac / Linux
function homestead() { ( cd ~/Homestead && vagrant $* ) }
確保將該函數(shù)中的 ~/Homestead
路徑調(diào)整為實(shí)際的 Homestead 安裝路徑。這樣你就可以在系統(tǒng)的任意位置運(yùn)行 homestead up
或 homestead ssh
等命令。
Windows
在系統(tǒng)的任意位置創(chuàng)建一個(gè)批處理文件 homestead.bat
,內(nèi)容如下:
@echo off set cwd=%cd% set homesteadVagrant=C:\Homestead cd /d %homesteadVagrant% && vagrant %* cd /d %cwd% set cwd= set homesteadVagrant=
一定要將腳本中 C:\Homestead
路徑調(diào)整為 Homestead 的實(shí)際安裝路徑。創(chuàng)建文件后,將文件路徑添加到 PATH
。然后你就可以在系統(tǒng)任意位置運(yùn)行 homestead up
或 homestead ssh
等命令。
通過 SSH 連接
你可以通過在 Homestead 目錄下運(yùn)行 vagrant ssh
終端命令以 SSH 的方式連接到虛擬機(jī)。
但是,你可能需要頻繁連接 Homestead 虛擬機(jī),因此請(qǐng)考慮將上面的「函數(shù)」添加到主機(jī)以便快速地以 SSH 方式連接到 Homestead 虛擬機(jī)。
連接數(shù)據(jù)庫(kù)
homestead
默認(rèn)已經(jīng)在虛擬機(jī)中為 MySQL 和 PostgreSQL 數(shù)據(jù)庫(kù)做好了配置。為了方便起見, Laravel 中的 .env
文件將框架配置成默認(rèn)使用此數(shù)據(jù)庫(kù)。
要從主機(jī)的數(shù)據(jù)庫(kù)客戶端連接到 MySQL 或 PostgreSQL ,應(yīng)該連接到 127.0.0.1
,端口 33060
(MySQL) 或 54320
(PostgreSQL)。用戶名和密碼分別是 homestead
/ secret
。
{note} 只有從本地連接 Hoemstead 的數(shù)據(jù)庫(kù)時(shí)才能使用這些非標(biāo)準(zhǔn)的端口。而 Laravel 在虛擬機(jī)中 運(yùn)行時(shí)還是應(yīng)該使用默認(rèn)的 3306 和 5432 端口進(jìn)行數(shù)據(jù)庫(kù)連接。
數(shù)據(jù)庫(kù)備份
當(dāng)你的 Vagrant 盒子銷毀時(shí),Homestead 能自動(dòng)備份你的數(shù)據(jù)庫(kù)。為了利用這個(gè)功能,你必須使用 Vagrant 2.1.0 或者更高的版本。或者,如果你使用一個(gè)舊版本的 Vagrant,你必須安裝 vagrant-triggers
插件。為了開啟自動(dòng)數(shù)據(jù)庫(kù)備份,添加如下的行到你的 Homestead.yaml
文件:
backup: true
一旦配置了,當(dāng) vagrant destroy
命令被執(zhí)行時(shí),Homestead 將導(dǎo)出你的數(shù)據(jù)庫(kù)到 mysql_backup
和 postgres_backup
目錄。如果你使用 每個(gè)項(xiàng)目安裝 方法,則可以在克隆的 Homestead 或者在你的項(xiàng)目根目錄中找到這些目錄。
添加額外的站點(diǎn)
一旦你的 Homestead 環(huán)境已配置并運(yùn)行,你可以為你的 Laravel 應(yīng)用添加額外的 Nginx 站點(diǎn)。你可能希望在單個(gè) Homestead 環(huán)境運(yùn)行多個(gè) Laravel 安裝。要添加額外的站點(diǎn),到 Homestead.yaml
文件中添加站點(diǎn):
sites: - map: homestead.test to: /home/vagrant/code/my-project/public - map: another.test to: /home/vagrant/code/another/public
如果 Vagrant 不能自動(dòng)管理你的『hosts』文件,你可能還需要添加新的站點(diǎn)到該文件中:
192.168.10.10 homestead.test 192.168.10.10 another.test
一旦這個(gè)站點(diǎn)被添加,從你的 Homestead 目錄運(yùn)行 vagrant reload --provision
命令。
站點(diǎn)類型
Homestead 支持多種類型的站點(diǎn),允許你輕松運(yùn)行不是基于 Laravel 的項(xiàng)目。例如,我們可以使用 symfony2
站點(diǎn)類型輕松地添加一個(gè) Symfony 應(yīng)用到 Homestead:
sites: - map: symfony2.test to: /home/vagrant/code/my-symfony-project/web type: "symfony2"
可用的站點(diǎn)類型是:apache
,apigility
,expressive
,laravel
(默認(rèn)),proxy
,silverstripe
,statamic
,symfony2
,symfony4
,和 zf
。
站點(diǎn)參數(shù)
你可以通過 params
站點(diǎn)指令添加額外的 Nginx fastcgi_param
值到你的站點(diǎn)。例如,我們添加一個(gè)值為 BAR
的 Foo
參數(shù):
sites: - map: homestead.test to: /home/vagrant/code/my-project/public params: - key: FOO value: BAR
環(huán)境變量
你能通過添加如下的值到 Homestead.yaml
文件來設(shè)置全局環(huán)境變量:
variables: - key: APP_ENV value: local - key: FOO value: bar
更新 Homestead.yaml
文件之后,確保通過運(yùn)行 vagrant reload --provision
命令重新配置機(jī)器。這個(gè)將更新所有安裝 的 PHP 版本的 PHP-FPM 配置并為 vagrant
用戶更新環(huán)境。
配置定時(shí)計(jì)劃
Laravel 提供了一種 計(jì)劃定時(shí)作業(yè) 的方式,通過安排單個(gè) schedule:run
Artisan 命令去每分鐘運(yùn)行。schedule:run
命令將檢查在你在 App\Console\Kernel
類中定義的計(jì)劃來決定運(yùn)行哪個(gè)作業(yè)。
如果你想為一個(gè) Homestead 站點(diǎn)的 schedule:run
命令運(yùn)行起來,在定義站點(diǎn)時(shí),你可以設(shè)置 schedule
選項(xiàng)為 true
:
sites: - map: homestead.test to: /home/vagrant/code/my-project/public schedule: true
站點(diǎn)的 Cron 作業(yè)將被定義在虛擬機(jī)的 /etc/cron.d
目錄中。
Configuring Mailhog
Mailhog 允許你輕松地捕獲外發(fā)的電子郵件并進(jìn)行檢查它,而實(shí)際上沒有將發(fā)送郵件給收件人。開始使用時(shí),使用以下的郵件設(shè)置更新你的 .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 是一個(gè)開源的對(duì)象存儲(chǔ)服務(wù)器,具有與 Amazon S3 兼容的 API。要安裝 Minio,用以下的配置選項(xiàng)更新你的 Homestead.yaml
文件:
minio: true
默認(rèn)情況下,Minio 在端口 9600
上是可用的。你可以訪問 Minio 控制面板通過訪問 http://homestead:9600
。默認(rèn)訪問的鍵名是 homestead
,同時(shí)默認(rèn)的密鑰是 secretkey
。當(dāng)訪問 Minio 時(shí),你應(yīng)當(dāng)總是使用 us-east-1
。
為了使用 Minio,你將需要在你的 config/filesystems.php
配置文件中調(diào)整 S3 磁盤配置。你將需要添加 use_path_style_endpoint
選項(xiàng)到磁盤配置,并將 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
文件有如下的選項(xiàng):
AWS_ACCESS_KEY_ID=homestead AWS_SECRET_ACCESS_KEY=secretkey AWS_DEFAULT_REGION=us-east-1 AWS_URL=http://homestead:9600
為了配置存儲(chǔ)桶,在 Homestead 配置文件中添加一個(gè) buckets
指令:
buckets: - name: your-bucket policy: public - name: your-private-bucket policy: none
支持的 policy
值包括:none
,download
,upload
和 public
。
端口
默認(rèn)情況下,如下的端口將轉(zhuǎn)發(fā)到你的 Homestead 環(huán)境:
- SSH:2222 -> 轉(zhuǎn)發(fā)到 22
- ngrok UI:4040 -> 轉(zhuǎn)發(fā)到 4040
- HTTP:8000 -> 轉(zhuǎn)發(fā)到 80
- HTTPS:44300 -> 轉(zhuǎn)發(fā)到 443
- MySQL:33060 -> 轉(zhuǎn)發(fā)到 3306
- PostgreSQL:54320 -> 轉(zhuǎn)發(fā)到 5432
- MongoDB:27017 -> 轉(zhuǎn)發(fā)到 27017
- Mailhog:8025 -> 轉(zhuǎn)發(fā)到 8025
- Minio:9600 -> 轉(zhuǎn)發(fā)到 9600
轉(zhuǎn)發(fā)額外的端口
如果你愿意,你可以轉(zhuǎn)發(fā)額外的端口到 Vagrant 盒子,同時(shí)也指定他們的協(xié)議:
ports: - send: 50000 to: 5000 - send: 7777 to: 777 protocol: udp
共享你的環(huán)境
有時(shí)你希望共享你當(dāng)前工作的內(nèi)容跟同事或客戶。Vagrant 有內(nèi)置的方法通過 vagrant share
去支持這個(gè);然而,如果在 Homestead.yaml
文件中有多個(gè)站點(diǎn)配置,這個(gè)將不會(huì)工作。
為了解決這個(gè)問題,Homestead 包含它自己的 share
命令。開始時(shí),SSH 通過 vagrant ssh
進(jìn)入你的 Homestead 機(jī)器并運(yùn)行 share homestead.test
。這個(gè)將從你的 Homestead.yaml
配置文件中分享 homestead.test
站點(diǎn)。當(dāng)然,你可以將任何其它配置的站點(diǎn)替換為 homestead.test
:
share homestead.test
運(yùn)行此命令之后,你將看到一個(gè) Ngrok 屏幕出現(xiàn),其中包含了活動(dòng)日志和共享站點(diǎn)的可訪問的 URLs。如果你想指定一個(gè)自定義的區(qū)域,子域,或者其它 Ngrok 運(yùn)行時(shí)選項(xiàng),你可以添加他們到你的 share
命令:
share homestead.test -region=eu -subdomain=laravel
{note} 記住,Vagrant 本質(zhì)上是不安全的,并且在運(yùn)行
share
命令時(shí)將虛擬機(jī)顯露到互聯(lián)網(wǎng)。
多版本 PHP
Homestead 6 在同一個(gè)虛擬機(jī)上引入了對(duì)多個(gè) PHP 版本的支持。你可以在你的 Homestead.yaml
文件中指定要用于給定站點(diǎn)的 PHP 版本??捎玫?PHP 版本是:『7.1』,『7.2』和『7.3』(默認(rèn)):
sites: - map: homestead.test to: /home/vagrant/code/my-project/public php: "7.1"
另外,你可以通過 CLI 使用任何支持的 PHP 版本:
php7.1 artisan list php7.2 artisan list php7.3 artisan list
Web 服務(wù)器
默認(rèn)情況下,Homestead 使用 Nginx web 服務(wù)器。然而,如果 apache
是指定的一個(gè)站點(diǎn)類型,它能安裝 Apache。同時(shí)兩個(gè) web 服務(wù)器在同時(shí)被安裝,他們不能同時(shí)運(yùn)行。flip
腳本命令可用來輕松處理 web 服務(wù)器之間的切換。flip
命令自動(dòng)確定正在運(yùn)行的 web 服務(wù)器,將其關(guān)閉。然后啟動(dòng)其它服務(wù)器。要使用這個(gè)命令,SSH 進(jìn)入到你的 Homestead 機(jī)器并在終端運(yùn)行命令:
flip
郵件
Homestead 包括 Postfix 郵件傳輸代理,默認(rèn)監(jiān)聽 1025
端口。因此,你可以指示你的應(yīng)用程序在 localhost
端口 1025
上使用 smtp
郵件驅(qū)動(dòng)。所有發(fā)送的郵件將由 Postfix 處理并由 Mailhog 捕獲。要查看已發(fā)送的郵件,在 web 瀏覽器中打開 http://localhost:8025
。
網(wǎng)絡(luò)接口
Homestead.yaml
中的 networks
屬性為 Homestead 環(huán)境配置網(wǎng)絡(luò)接口。你可以根據(jù)需要配置多個(gè)接口:
networks: - type: "private_network" ip: "192.168.10.20"
要開啟一個(gè) 橋接 接口,配置 bridge
設(shè)置并改變 public_network
網(wǎng)絡(luò)類型:
networks: - type: "public_network" ip: "192.168.10.20" bridge: "en1: Wi-Fi (AirPort)"
要開啟 DHCP,僅從你的配置中移除 ip
選項(xiàng):
networks: - type: "public_network" bridge: "en1: Wi-Fi (AirPort)"
擴(kuò)展 Homestead
你能在 Homestead 根目錄下使用 after.sh
腳本擴(kuò)展 Homestead。在這個(gè)文件中,你可以添加正確配置和自定義虛擬機(jī)所需的任何 shell 命令。
當(dāng)自定義 Homestead 時(shí),Ubuntu 可能會(huì)詢問你是否要保留程序包的原始配置或者用一個(gè)新的配置文件覆蓋它。為了避免這種情況,你應(yīng)該在安裝軟件包時(shí)使用以下的命令,以避免覆蓋之前由 Homestead 編寫的任何配置:
sudo apt-get -y \ -o Dpkg::Options::="--force-confdef" \ -o Dpkg::Options::="--force-confold" \ install your-package
更新 Homestead
你能通過一些簡(jiǎn)單的步驟更新 Homestead。首先,你應(yīng)當(dāng)使用 vagrant box update
命令更新 Vagrant 盒子:
vagrant box update
接下來,你需要去更新 Homestead 源代碼。如果你克隆過倉(cāng)庫(kù),你能在最初克隆倉(cāng)庫(kù)的位置運(yùn)行如下的命令:
git fetchgit checkout v8.0.1
這些命令從 GitHub 倉(cāng)庫(kù)拉取最新的 Homestead 代碼,獲取最新的標(biāo)記,然后檢出最新的標(biāo)記版本。你能在 GitHub 版本頁面 找到最新穩(wěn)定的版本。
如果你通過你的項(xiàng)目的 composer.json
安裝 Homestead,你應(yīng)當(dāng)確保你的 composer.json
包含 "laravel/homestead": "^8"
并更新你的依賴項(xiàng):
composer update
最后,你將需要銷毀和重新生成你的 Homestead 盒子去利用最新的 Vagrant 安裝。為了實(shí)現(xiàn)這個(gè),在你的 Homestead 目錄運(yùn)行如下的命令:
vagrant destroy vagrant up
提供特殊設(shè)置
VirtualBox
natdnshostresolver
默認(rèn)情況下,Homestead 將 natdnshostresolver
配置設(shè)置為 on
。這允許 Homestead 去使用你的主機(jī)操作系統(tǒng)的 DNS 設(shè)置。如果你不想覆蓋這個(gè)行為,添加如下的行到你的 Homestead.yaml
文件:
provider: virtualbox natdnshostresolver: off
Windows 上的符號(hào)鏈接
如果符號(hào)鏈接在你的 Windows 機(jī)器上無法正常工作,你可能需要添加以下的塊到 Vagrantfile
文件:
config.vm.provider "virtualbox" do |v| v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"] end