Laravel 致力于讓 PHP 開(kāi)發(fā)體驗(yàn)更愉快,也包含你的本地開(kāi)發(fā)環(huán)境。Vagrant 提供了一個(gè)簡(jiǎn)單、優(yōu)雅的方式來(lái)管理與供應(yīng)虛擬機(jī)。
Laravel Homestead 是一個(gè)官方預(yù)載的 Vagrant「封裝包」,提供你一個(gè)美好的開(kāi)發(fā)環(huán)境,你不需要在你的本機(jī)端安裝 PHP、HHVM、網(wǎng)頁(yè)服務(wù)器或任何服務(wù)器軟件。不用擔(dān)心搞亂你的系統(tǒng)!Vagrant 封裝包可以搞定一切。如果有什么地方出現(xiàn)故障,你可以在幾分鐘內(nèi)快速的銷(xiāo)毀并重建虛擬機(jī)。
Homestead 可以在任何 Windows、Mac 或 Linux 上面運(yùn)行,里面包含了 Nginx 網(wǎng)頁(yè)服務(wù)器、PHP 5.6、MySQL、Postgres、Redis、Memcached 還有所有你要開(kāi)發(fā)精彩的 Laravel 應(yīng)用程序所需的軟件。
附注: 如果您是 Windows 的用戶(hù),您可能需要啟用硬件虛擬化(VT-x)。通常需要通過(guò) BIOS 來(lái)啟用它。
Homestead 目前是構(gòu)建且測(cè)試于 Vagrant 1.7 版本。
Ubuntu 14.04
PHP 5.6
HHVM
Nginx
MySQL
Postgres
Node (With Bower, Grunt, and Gulp)
Redis
Memcached
Beanstalkd
在啟動(dòng)你的 Homestead 環(huán)境之前,你必須先安裝 VirtualBox 和 Vagrant. 兩套軟件在各平臺(tái)都有提供易用的可視化安裝程序。
除了 VirtualBox 之外, Homestead 也支持 VMware. 如果使用 VMware 作為 provider, 你需要購(gòu)買(mǎi) VMware Fusion / Desktop 以及 VMware Vagrant plug-in. VMware 提供了更快、性能更好的共享文件夾。
當(dāng) VirtualBox / VMware 和 Vagrant 安裝完成后,你可以在終端機(jī)以下列命令將 'laravel/homestead' 封裝包安裝進(jìn)你的 Vagrant 安裝程序中。下載封裝包會(huì)花你一點(diǎn)時(shí)間,時(shí)間長(zhǎng)短將依據(jù)你的網(wǎng)絡(luò)速度決定:
vagrant box add laravel/homestead
如果這個(gè)命令失敗了, 你可能安裝的是一個(gè)老版本的 Vagrant 需要指定一個(gè)完整的 URL:
vagrant box add laravel/homestead https://atlas.hashicorp.com/laravel/boxes/homestead
你可以簡(jiǎn)單地通過(guò)手動(dòng)復(fù)制資源庫(kù)的方式來(lái)安裝 Homestead。將資源庫(kù)復(fù)制至你的 "home" 目錄中的 Homestead
文件夾,如此一來(lái) Homestead 封裝包將能提供主機(jī)服務(wù)給你所有的 Laravel(及 PHP)應(yīng)用:
git clone https://github.com/laravel/homestead.git Homestead
一旦你克隆完 Homestead 倉(cāng)庫(kù),從 Homestead 目錄中執(zhí)行 bash init.sh
命令來(lái)創(chuàng)建 Homestead.yaml
配置文件:
bash init.sh
此 Homestead.yaml
文件,將會(huì)被放置在你的 ~/.homestead
目錄中。
在 Homestead.yaml
文件中的 provider
鍵表明需要使用的 Vagrant prodiver:virtualbox
、 vmware_fusion
(Mac OS X)、或者 vmware_workstation
(Windows),你可以根據(jù)自己的喜好設(shè)定 provider 。
provider: virtualbox
然后你需要編輯 Homestead.yaml
。可以在文件中配置你的 SSH 公開(kāi)密鑰,以及主要機(jī)器與 Homestead 虛擬機(jī)之間的共享目錄。
如果沒(méi)有 SSH 密鑰的話(huà), 在 Mac 和 Linux 下,你可以利用下面的命令來(lái)創(chuàng)建一個(gè) SSH 密鑰組:
ssh-keygen -t rsa -C "you@homestead"
在 Windows 下,你需要安裝 Git 并且使用包含在 Git 里的 Git Bash
來(lái)執(zhí)行上述的命令。另外你也可以使用 PuTTY 和 PuTTYgen。
一旦你創(chuàng)建了一個(gè) SSH 密鑰,記得在你的 Homestead.yaml
文件中的 authorize
屬性指明密鑰路徑。
Homestead.yaml
文件中的 folders
屬性列出了所有你想在 Homestead 環(huán)境共享的文件夾列表。這些文件夾中的文件若有變動(dòng),他們將會(huì)同步在你的本機(jī)與 Homestead 環(huán)境里。你可以將你需要的共享文件夾都配置進(jìn)去。
如果要開(kāi)啟 NFS,只需要在 folders
中加入一個(gè)標(biāo)識(shí):
folders: - map: ~/Code to: /home/vagrant/Code type: "nfs"
對(duì) Nginx 不熟悉?沒(méi)關(guān)系。sites
屬性允許你簡(jiǎn)單的對(duì)應(yīng)一個(gè) 域名
到一個(gè) homestead 環(huán)境中的目錄。一個(gè)例子的站點(diǎn)被配置在 Homestead.yaml
文件中。同樣的,你可以加任何你需要的站點(diǎn)到你的 Homestead 環(huán)境中。Homestead 可以為你每個(gè)進(jìn)行中的 Laravel 應(yīng)用提供方便的虛擬化環(huán)境。
你可以通過(guò)配置 hhvm
屬性為 true
來(lái)讓虛擬站點(diǎn)支持 HHVM:
sites: - map: homestead.app to: /home/vagrant/Code/Laravel/public hhvm: true
Each site will be accessible by HTTP via port 8000 and HTTPS via port 44300.
如果要增加 Bash aliases 到你的 Homestead 封裝包中,只要將內(nèi)容添加到 ~/.homestead
目錄最上層的 aliases
文件中即可。
當(dāng)你根據(jù)你的喜好編輯完 Homestead.yaml
后,在終端機(jī)里進(jìn)入你的 Homestead 文件夾并執(zhí)行 vagrant up
命令。
Vagrant 會(huì)將虛擬機(jī)開(kāi)機(jī),并且自動(dòng)配置你的共享目錄和 Nginx 站點(diǎn)。如果要移除虛擬機(jī),可以使用 vagrant destroy --force
命令。
為了你的 Nginx 站點(diǎn),別忘記在你的機(jī)器的 hosts
文件將「域名」加進(jìn)去。hosts
文件會(huì)將你的本地域名的站點(diǎn)請(qǐng)求指向你的 Homestead 環(huán)境中。在 Mac 和 Linux,該文件放在 /etc/hosts
。在 Windows 環(huán)境中,它被放置在 C:\Windows\System32\drivers\etc\hosts
。你要加進(jìn)去的內(nèi)容類(lèi)似如下:
192.168.10.10 homestead.app
務(wù)必確認(rèn) IP 地址與你的 Homestead.yaml
文件中的相同。一旦你將域名加進(jìn)你的 hosts
文件中,你就可以通過(guò)網(wǎng)頁(yè)瀏覽器訪問(wèn)到你的站點(diǎn)。
http://homestead.app
繼續(xù)讀下去,你會(huì)學(xué)到如何連接到數(shù)據(jù)庫(kù)!
要通過(guò) SSH 連接上您的 Homestead 環(huán)境,在終端機(jī)里進(jìn)入你的 Homestead 目錄并執(zhí)行 vagrant ssh
命令。
因?yàn)槟憧赡軙?huì)經(jīng)常需要通過(guò) SSH 進(jìn)入你的 Homestead 虛擬機(jī),可以考慮在你的主要機(jī)器上創(chuàng)建一個(gè)"別名" 用來(lái)快速 SSH 進(jìn)入 Homestead 虛擬機(jī):
alias vm="ssh vagrant@127.0.0.1 -p 2222"
一旦你創(chuàng)建了這個(gè)別名,無(wú)論你在主要機(jī)器的哪個(gè)目錄,都可以簡(jiǎn)單地使用 "vm" 命令來(lái)通過(guò) SSH 進(jìn)入你的 Homestead 虛擬機(jī)。
你也可以在 Homestead 目錄使用 vagrant ssh
命令。
在 Homestead
封裝包中,已經(jīng)預(yù)了 MySQL 與 Postgres 兩種數(shù)據(jù)庫(kù)。為了更簡(jiǎn)便,Laravel 的 local
數(shù)據(jù)庫(kù)配置已經(jīng)默認(rèn)將其配置完成。
如果想要從本機(jī)上通過(guò) Navicat 或者 Sequel Pro 連接 MySQL 或者 Postgres 數(shù)據(jù)庫(kù),你可以連接 127.0.0.1
的端口 33060 (MySQL) 或 54320 (Postgres)。而帳號(hào)密碼分別是 homestead
/ secret
。
附注: 從本機(jī)端你應(yīng)該只能使用這些非標(biāo)準(zhǔn)的連接端口來(lái)連接數(shù)據(jù)庫(kù)。因?yàn)楫?dāng) Laravel 運(yùn)行在虛擬機(jī)時(shí),在 Laravel 的數(shù)據(jù)庫(kù)配置文件中依然是配置使用默認(rèn)的 3306 及 5432 連接端口。
在 Homestead 環(huán)境上架且運(yùn)行后,你可能會(huì)需要為 Laravel 應(yīng)用程序增加更多的 Nginx 站點(diǎn)。你可以在單一個(gè) Homestead 環(huán)境中運(yùn)行非常多 Laravel 安裝程序。有兩種方式可以達(dá)成:第一種,在 Homestead.yaml
文件中增加站點(diǎn)然后在 Homestead 目錄中執(zhí)行 vagrant provision
。
Note: 這個(gè)操作是具有破壞性的,當(dāng)執(zhí)行
provision
命令,你現(xiàn)有的數(shù)據(jù)庫(kù)會(huì)被摧毀并重新創(chuàng)建。
另外,也可以使用存放在 Homestead 環(huán)境中的 serve
命令文件。要使用 serve
命令文件,請(qǐng)先 SSH 進(jìn)入 Homestead 環(huán)境中,并執(zhí)行下列命令:
serve domain.app /home/vagrant/Code/path/to/public/directory 80
附注: 在執(zhí)行
serve
命令過(guò)后,別忘記將新的站點(diǎn)加進(jìn)本機(jī)的hosts
文件中。
以下的端口將會(huì)被轉(zhuǎn)發(fā)至 Homestead 環(huán)境:
SSH: 2222 → Forwards To 22
HTTP: 8000 → Forwards To 80
HTTPS: 44300 → Forwards To 443
MySQL: 33060 → Forwards To 3306
Postgres: 54320 → Forwards To 5432
你也可以自定義轉(zhuǎn)發(fā)額外的端口至 Vagrant box,只需要指定協(xié)議:
ports: - send: 93000 to: 9300 - send: 7777 to: 777 protocol: udp
Blackfire Profiler 是由 SensioLabs 創(chuàng)建的一個(gè)分析工具,它會(huì)自動(dòng)的收集代碼執(zhí)行期間的相關(guān)數(shù)據(jù),比如 RAM, CPU time, 和 disk I/O. 如果你使用 Homestead ,那么使用這個(gè)分析工具會(huì)變得非常簡(jiǎn)單。
blackfire 所需的包已經(jīng)安裝在 Homestead box 中,你只需要在 Homestead.yaml
文件中設(shè)置 Server ID 和 token :
blackfire: - id: your-server-id token: your-server-token client-id: your-client-id client-token: your-client-token
當(dāng)你設(shè)定完 Blackfire 的憑證信息,使用 vagrant provision
令配置生效。當(dāng)然,你也需要通過(guò)閱讀Blackfire 文檔 來(lái)學(xué)習(xí)如何在你的瀏覽器中安裝 Blackfire 擴(kuò)展。
更多建議: