系統要求php
window 7 及以上。laravel
安裝包列表git
virtualbox 5.*版本github
vagrantshell
Homestead Box 虛擬機盒子數據庫
gitjson
安裝包資源下載windows
連接:https://pan.baidu.com/s/1DFZpvn5H0Sg2KEu32DrWJA
提取碼:fcwv 數組
Homestead.yaml
文件
VirtualBox 是 Oracle 公司的開源虛擬機軟件。VirtualBox 號稱是最強的免費虛擬機軟件,它不只功能齊全,並且性能也很優異!VirtualBox 支持大部分流行的系統,如:Mac, Windows, Linux 等。瀏覽器
安裝包資源下載完成以後,雙擊安裝包進行安裝。以後按照提示操做一步一步進行安裝便可。
Vagrant 是用來管理虛擬機的工具,支持當前主流的虛擬機系統如 VirtualBox、VMware、AWS 等。Vagrant 的主要做用是提供一個可配置、可移植和複用的軟件環境。Vagrant 讓你經過編寫一個 Vagrantfile 文件來控制虛擬機的啓動、虛擬機網絡環境的配置、虛擬機與主機間的文件共享,以及啓動後自動執行一些配置腳本,如自動執行一個 Shell Script 來安裝一些必備的開發工具,如安裝配置 MySQL、PHP,甚至是自動配置 Nginx 站點。這意味着,在一個多人開發的項目中,你只須要同步 Vagrantfile 文件,就能夠保證參與項目的每一個人各自的機器上擁有一致的開發環境。
Homestead 利用 Vagrantfile 提供的便利,定製了一整套的可配置、可移植和複用的 Laravel 開發環境。Homestead 虛擬機裏面包含了 Nginx Web 服務器、PHP 七、MySQL、Postgres、Redis、Memcached、Node,以及全部你在使用 Laravel 開發時須要用到的各類軟件。
Homestead 包含了兩個東西:
接下來獨自說明下。
Homestead 腳本使用 Ruby 和 Shell 腳本編寫而成。原理是對 Vagrantfile 文件作定製。將從 ~/Homestead/Homestead.yaml
讀取的配置信息,在 provision 時,解析爲 Vagrant 命令並進行對虛擬機的配置。Homestead 腳本的做用在於,提供了極其簡單易用的接口,使咱們只須要經過傻瓜化配置,便可完成複雜的任務。如下是幾個經常使用的任務:
全部 Homestead 的版本歷史在 此處 能夠找到。在本書中,爲了提升操做的效率,咱們將會使用定製版本的 Homestead。
homestead.box
虛擬機盒子是提早打包好的 Vagrant Box 虛擬機盒子,裏面預裝了 Nginx Web 服務器、PHP 七、MySQL、Postgres、Redis、Memcached、Node,以及全部你在使用 Laravel 開發時所須要用到的各類軟件。
全部虛擬機盒子版本歷史 在此。
打不開的用戶,下圖是截屏:
能夠看出 Homestead Box 虛擬機盒子有不少版本。不過,如 Homestead 腳本,爲了學習的流暢性,咱們接下來將會使用定製版本的虛擬機盒子,你不須要太擔憂版本的事情。
接下來,咱們會講解:
因爲國內的網絡環境緣由,咱們特地爲你們定製了適用於國情的 Homestead 安裝包,該安裝包提供瞭如下內容:
接下來讓咱們開始進行 Homestead 的安裝,首先咱們須要下載 Homestead 虛擬機盒子,建議你們使用迅雷離線下載或者其餘離線下載方式下載此盒子。
下載後的文件爲 lc-homestead-6.4.1-2019072300.zip
,請對其進行 zip 解壓操做,解壓成功後能夠看到目錄 lc-homestead-6.4.1-2019072300
,此目錄下包含兩個文件:
在解壓目錄中 lc-homestead-6.4.1-2019072300
運行如下命令導入 Box:
> vagrant box add metadata.json
注意:請必須解壓到 非中文路徑,有同窗反饋中文路徑會出現不可預知問題。
以下圖所示:
若是你使用的 Windows 系統在安裝 Homestead 的時候報錯:The box 'laravel/homestead' could not be found or
could not be accessed in the remote catalog.,請下載 MS Visual C++ 2010 x86 Redistributables 並進行安裝便可修復。
至此完成 Homestead Vagrant 盒子的導入。
注:導入成功後,
lc-homestead-6.4.1-2019072300
文件夾可任意刪除。
若是你先前已使用過 Git for Windows 來做爲你進行 Laravel 項目開發時的默認命令行工具,則該工具將會默認爲你安裝好 Git。
使用如下命令來檢測是否成功安裝:
> git --version git version 2.12.2.windows.2
注:不須要擔憂你的版本與我不一樣。
因國內網絡限制,爲方便下載和後續管理腳本的流暢使用,本書中將使用定製版本的 Homestead 腳本,定製版有如下優點:
provision
時 composer self-update
的卡頓。接下來,使用 Git 下載定製版的 Homestead:
> cd ~ > git clone https://git.coding.net/summerblue/homestead.git Homestead
Windows 下,~
目錄表明着 C:\Users\你的用戶名
,而 ~/Homestead
表明着 C:\Users\你的用戶名\Homestead
目錄,相似:
注:咱們把 Homestead 放在
~/Homestead
路徑下,爲方便後面的講解,請保持一致。
下載完成以後咱們使用命令行進入 Homestead
目錄,再使用 Git 檢出咱們須要的 Homestead 版本:
> cd ~/Homestead > git checkout v7.8.0
注:爲了保證後續講解的流暢性,請注意版本的一致性,這裏咱們使用
v7.8.0
。
接下來咱們須要初始化 Homestead:
> init.bat
運行以上命令後,會在 ~/Homestead
目錄下生成如下三個文件:
~/.bash_aliases
文件中,aliases
裏能夠放一些快捷命令的定義。接下來咱們將會對 Homestead.yaml
文件的各項配置信息進行詳細講解。
Homestead.yaml
文件在 ~/Homestead
文件夾裏,在 Git-Bash 裏,你可使用如下命令使用文件夾打開當前命令行所在目錄:
> cd ~/Homestead/ > explorer .
可經過運行下面命令快速打開 Homestead.yaml
文件:
> subl ~/Homestead/Homestead.yaml
爲了行文方便,後面若是沒有提示的話,
Homestead.yaml
指的是~/Homestead/Homestead.yaml
文件。
Homestead.yaml
裏的配置大體能夠分爲如下幾種:
接下來咱們逐個講解。
Homestead 支持咱們對虛擬機的 IP,內存,CPU,虛擬機的默認提供者進行配置。這裏咱們基本不須要作任何配置,所以能夠跳過。
ip: "192.168.10.10" memory: 2048 cpus: 1 provider: virtualbox
authorize
選項是指派登陸虛擬機受權鏈接的公鑰文件,此文件填寫的是主機上的公鑰文件地址,虛擬機初始化時,此文件裏的內容會被複制存儲到虛擬機的 /home/vagrant/.ssh/authorized_keys
文件中,從而實現 SSH 免密碼登陸。在這裏咱們默認填寫便可。
authorize: ~/.ssh/id_rsa.pub
keys
是數組選項,填寫的是本機的 SSH 私鑰文件地址。虛擬機初始化時,會將此處填寫的全部 SSH 私鑰文件複製到虛擬機的 /home/vagrant/.ssh/
文件夾中,從而使虛擬機能共享主機上的 SSH 私鑰文件,使虛擬機具有等同於主機的身份認證。此功能爲 SSH 受權提供了便利,例如在後面章節中,咱們只須要在 GitHub 上配置一個 SSH 公鑰,便可實現 GitHub 對虛擬機和主機共同認證。
此處咱們將公鑰和私鑰一塊兒同步到虛擬機中:
keys: - ~/.ssh/id_rsa - ~/.ssh/id_rsa.pub
接下來咱們來生成 SSH Key,開始以前,咱們先使用如下命令來檢查主機上是否已經生成過 SSH Key:
> ls -al ~/.ssh
若是存在 id_rsa
和 id_rsa.pub
的話,請跳過如下生成 SSH 的步驟繼續閱讀剩下內容。
不然使用如下方法來生成 SSH Key,請將 your_email@example.com
替換爲你的郵箱:
> ssh-keygen -t rsa -C "your_email@example.com" Generating public/private rsa key pair.
命令行會提示讓你指定祕鑰的名稱,按回車鍵將 SSH Key 保存到默認文件名便可:
Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
接下來會詢問你爲 SSH Key 設置密碼,按回車鍵便可,默認爲空密碼:
Enter passphrase (empty for no passphrase): [Type a passphrase] Enter same passphrase again: [Type passphrase again]
能夠都選擇默認,一路 Enter
鍵便可,大體以下:
這個時候若是咱們再使用:
> ls -al ~/.ssh
查看的話,會出現:
SSH 祕鑰的兩個文件:
id_rsa
—— SSH 祕鑰的 私鑰 (Private Key)id_rsa.pub
—— SSH 祕鑰的 公鑰 (Public Key)咱們能夠經過 folders
來指明本機要映射到 Homestead 虛擬機上的文件夾。
map
對應的是咱們本機的文件夾,格式例如:E:/Homestead/Code,以開發者實際項目目錄爲準。to
對應的是 Homestead 上的文件夾。爲了後續課程講解,請統一配置以下:
folders: - map: ~/code to: /home/vagrant/code
默認 Homestead
會將咱們本機的 ~/Code
文件夾映射到 /home/vagrant/Code
文件夾上。如今咱們本機尚未 ~/Code
文件夾,讓咱們來建立一個:
> cd ~ > mkdir code
執行成功後,一樣的,咱們能夠經過 explorer .
命令在文件夾中打開此目錄:
在後面的章節中,咱們將會在該文件夾下放置咱們全部的 Laravel 項目,Homestead 會把該文件夾下的項目自動映射到虛擬機的 /home/vagrant/code
文件夾上。
站點配置容許你在主機裏,經過域名來訪問虛擬機裏的 Laravel 應用。以下面 sites
配置所示,將 homestead.test
映射到一個 Laravel 項目的 public
目錄上。這一行配置,會命令 Homestead 爲咱們新建一個 Nginx 站點,而且把 Web Root 配置到指定目錄下。Laravel 應用的 Nginx 站點 Web Root 配置,默認就是在根目錄下的 public
目錄。
sites: - map: homestead.test to: /home/vagrant/code/Laravel/public
目前 Laravel
項目並不存在。這裏先統一配置爲以上,請不用着急,在後續的章節中,咱們會建立該 Laravel
項目。
另外,主機裏直接訪問虛擬機站點,必須經過綁定 hosts
來實現。接下來咱們利用 hosts
文件綁定 homestead.test
到虛擬機 IP 192.168.10.10
上。hosts
文件的完整路徑爲 C:\Windows\System32\Drivers\etc\hosts
,可以使用下面命令打開:
> subl C:/Windows/System32/Drivers/etc/hosts
若是你沒有集成
subl
命令的話, 請使用編輯器直接打開文件,文件路徑在C:\Windows\System32\Drivers\etc\hosts
。
在 hosts
文件的最後面加入如下一行:
192.168.10.10 homestead.test
至此站點就配置好了,等咱們在本地系統 ~/code/ 目錄下建立 名爲Laravel
的項目後,便可經過瀏覽器訪問 homestead.test
站點。
如需建立多站點只需繼續添加 虛擬域名和虛擬機目錄(以下所示):
sites: - map: homestead.test to: /home/vagrant/code/Laravel/public
- map: blog.test to: /home/vagrant/code/blog/public
而後執行以下命令重載vagrant便可:
vagrant reload --provision
咱們能夠爲 Homestead 指定數據庫名稱,這裏使用默認設置便可。
databases: - homestead
最後,若是你須要自定義一些在虛擬機上可使用的自定義變量,則能夠在 variables
中進行定義。
variables: - key: APP_ENV value: local
Homestead 自定義變量在本書中並未使用,知悉有此功能便可。
完成了 Homestead 的配置,接下來咱們要開始啓動虛擬機了。
在命令中輸入 vagrant
,能看到 Vagrant 爲咱們提供了一些便利的命令行,下面簡單介紹一下 Vagrant 經常使用的一些命令行的使用:
命令行 | 說明 |
---|---|
vagrant init | 初始化 vagrant |
vagrant up | 啓動 vagrant |
vagrant halt | 關閉 vagrant |
vagrant ssh | 經過 SSH 登陸 vagrant(須要先啓動 vagrant) |
vagrant provision | 從新應用更改 vagrant 配置 |
vagrant destroy | 刪除 vagrant |
讓咱們開始啓動 Homestead:
> cd ~/Homestead && vagrant up
第一次啓動時,Vagrant 會作如下這幾件事情:
Homestead.yaml
裏的配置信息,對這臺新建的虛擬機進行配置;成功啓動後,仍是在 ~/Homestead
目錄中,經過如下命令來 SSH 登陸 Homestead 虛擬機中:
> vagrant ssh
在咱們登陸成功後,你能看到相似於以下圖的界面,如今咱們在該終端界面中輸入的全部命令都將運行在 Homestead 虛擬機上。
在虛擬機界面下能夠輸入退出虛擬機:
$ exit
最後嘗試關閉 Homestead:
> vagrant halt
注意:本文中由於虛擬機的存在,咱們會有兩個運行命令行的環境,一個是主機,另外一個是 Homestead 虛擬機。咱們會在命令的前面使用『命令行提示符』來區分主機和 Homestead。請記住以
>
開頭的命令是運行在主機裏,$
開頭的命令是運行在 Homestead 虛擬機裏。詳見 寫做約定 - 命令行提示符。
使用 Homestead 開發時常常遇到站點龜速響應的問題,解決方案請見: Wiki:Laravel Homestead:開啓 NFS 解決站點響應緩慢
如下是環境部署的常見問題蒐集,方便遇到問題的同窗查閱。若是你一切正常,請無視如下。