Laravel Homestead

2018-12-17 10:40 更新

介紹

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 版本。

           

內(nèi)置軟件

           

安裝與配置

安裝 VirtualBox / VMWare 與 Vagrant

在啟動(dòng)你的 Homestead 環(huán)境之前,你必須先安裝 VirtualBoxVagrant. 兩套軟件在各平臺(tái)都有提供易用的可視化安裝程序。

VMware

除了 VirtualBox 之外, Homestead 也支持 VMware. 如果使用 VMware 作為 provider, 你需要購(gòu)買(mǎi) VMware Fusion / Desktop 以及 VMware Vagrant plug-in. VMware 提供了更快、性能更好的共享文件夾。

增加 Vagrant 封裝包

當(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

           

安裝 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 目錄中。

配置你的 Provider

Homestead.yaml 文件中的 provider 鍵表明需要使用的 Vagrant prodiver:virtualbox 、 vmware_fusion (Mac OS X)、或者 vmware_workstation (Windows),你可以根據(jù)自己的喜好設(shè)定 provider 。

provider: virtualbox

           

配置你的 SSH 密鑰

然后你需要編輯 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í)行上述的命令。另外你也可以使用 PuTTYPuTTYgen。

一旦你創(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"

           

配置你的 Nginx 站點(diǎn)

對(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

如果要增加 Bash aliases 到你的 Homestead 封裝包中,只要將內(nèi)容添加到 ~/.homestead 目錄最上層的 aliases 文件中即可。

啟動(dòng) Vagrant 封裝包

當(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ù)!

           

常見(jiàn)用法

通過(guò) SSH 連接

要通過(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 命令。

連接數(shù)據(jù)庫(kù)

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 連接端口。

增加更多的站點(diǎn)

在 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

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ò)展。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)