系統要求php
window 7 及以上。laravel
安裝包列表git
virtualbox 5.*版本github
vagrantshell
Homestead Box 虛擬機盒子數據庫
gitjson
安裝包資源下載windows
連接:https://pan.baidu.com/s/1DFZpvn5H0Sg2KEu32DrWJA
提取碼:fcwv 數組
步驟
- 安裝 VirtualBox
- 安裝 Vagrant
- 導入 Homestead Box 虛擬機盒子
- 安裝 Git
- 安裝 Homestead 管理腳本
- 配置
Homestead.yaml
文件 - 啓動 Homestead 虛擬機
- 開啓 NFS 掛載模式
安裝 VirtualBox
VirtualBox 是 Oracle 公司的開源虛擬機軟件。VirtualBox 號稱是最強的免費虛擬機軟件,它不只功能齊全,並且性能也很優異!VirtualBox 支持大部分流行的系統,如:Mac, Windows, Linux 等。瀏覽器
安裝包資源下載完成以後,雙擊安裝包進行安裝。以後按照提示操做一步一步進行安裝便可。
安裝 Vagrant
Vagrant 是用來管理虛擬機的工具,支持當前主流的虛擬機系統如 VirtualBox、VMware、AWS 等。Vagrant 的主要做用是提供一個可配置、可移植和複用的軟件環境。Vagrant 讓你經過編寫一個 Vagrantfile 文件來控制虛擬機的啓動、虛擬機網絡環境的配置、虛擬機與主機間的文件共享,以及啓動後自動執行一些配置腳本,如自動執行一個 Shell Script 來安裝一些必備的開發工具,如安裝配置 MySQL、PHP,甚至是自動配置 Nginx 站點。這意味着,在一個多人開發的項目中,你只須要同步 Vagrantfile 文件,就能夠保證參與項目的每一個人各自的機器上擁有一致的開發環境。
Homestead 介紹
Homestead 利用 Vagrantfile 提供的便利,定製了一整套的可配置、可移植和複用的 Laravel 開發環境。Homestead 虛擬機裏面包含了 Nginx Web 服務器、PHP 七、MySQL、Postgres、Redis、Memcached、Node,以及全部你在使用 Laravel 開發時須要用到的各類軟件。
Homestead 包含了兩個東西:
- Homestead 管理腳本;
- Homestead Box 虛擬機盒子。
接下來獨自說明下。
1. Homestead 管理腳本
Homestead 腳本使用 Ruby 和 Shell 腳本編寫而成。原理是對 Vagrantfile 文件作定製。將從 ~/Homestead/Homestead.yaml
讀取的配置信息,在 provision 時,解析爲 Vagrant 命令並進行對虛擬機的配置。Homestead 腳本的做用在於,提供了極其簡單易用的接口,使咱們只須要經過傻瓜化配置,便可完成複雜的任務。如下是幾個經常使用的任務:
- IP 配置,端口映射;
- Nginx Site 建立;
- 數據庫建立;
- 主機文件夾掛載到虛擬機等任務。
全部 Homestead 的版本歷史在 此處 能夠找到。在本書中,爲了提升操做的效率,咱們將會使用定製版本的 Homestead。
2. Homestead Box 虛擬機盒子
homestead.box
虛擬機盒子是提早打包好的 Vagrant Box 虛擬機盒子,裏面預裝了 Nginx Web 服務器、PHP 七、MySQL、Postgres、Redis、Memcached、Node,以及全部你在使用 Laravel 開發時所須要用到的各類軟件。
全部虛擬機盒子版本歷史 在此。
打不開的用戶,下圖是截屏:
能夠看出 Homestead Box 虛擬機盒子有不少版本。不過,如 Homestead 腳本,爲了學習的流暢性,咱們接下來將會使用定製版本的虛擬機盒子,你不須要太擔憂版本的事情。
安裝和使用 Homestead
接下來,咱們會講解:
- 下載和導入 Homestead Box 虛擬機盒子;
- 安裝 Git ,爲下載 Homestead 管理腳本作準備;
- 使用 Git 下載 Homestead 管理腳本;
1. 下載和導入 Homestead Box
因爲國內的網絡環境緣由,咱們特地爲你們定製了適用於國情的 Homestead 安裝包,該安裝包提供瞭如下內容:
- Composer 加速,配置了 Composer 中國全量鏡像 支持;
- 默認集成 Heroku 工具;
- 默認集成 Yarn,併爲 Yarn 加了淘寶鏡像的加速;
- 使用 CNPM 對 NPM 進行加速。
接下來讓咱們開始進行 Homestead 的安裝,首先咱們須要下載 Homestead 虛擬機盒子,建議你們使用迅雷離線下載或者其餘離線下載方式下載此盒子。
下載後的文件爲 lc-homestead-6.4.1-2019072300.zip
,請對其進行 zip 解壓操做,解壓成功後能夠看到目錄 lc-homestead-6.4.1-2019072300
,此目錄下包含兩個文件:
- virtualbox.box(教程定製化過的 Homestead 盒子)
- metadata.json(盒子的導入配置文件)
在解壓目錄中 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
文件夾可任意刪除。
2. 安裝 Git
若是你先前已使用過 Git for Windows 來做爲你進行 Laravel 項目開發時的默認命令行工具,則該工具將會默認爲你安裝好 Git。
使用如下命令來檢測是否成功安裝:
> git --version git version 2.12.2.windows.2
注:不須要擔憂你的版本與我不一樣。
3. 下載 Homestead 管理腳本
因國內網絡限制,爲方便下載和後續管理腳本的流暢使用,本書中將使用定製版本的 Homestead 腳本,定製版有如下優點:
- 從國內 coding.net 網站下載,下載速度會比 官方 更快;
- 對腳本進行修改,移除了每一次
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
目錄下生成如下三個文件:
- Homestead.yaml - 主要配置信息文件,咱們能夠在此文件中配置 Homestead 的站點和數據庫等信息;
- after.sh - 每一次 Homestead 盒子重置後(provision)會調用的 shell 腳本文件;
- aliases - 每一次 Homestead 盒子重置後(provision),會被替換至虛擬機的
~/.bash_aliases
文件中,aliases
裏能夠放一些快捷命令的定義。
接下來咱們將會對 Homestead.yaml
文件的各項配置信息進行詳細講解。
Homestead.yaml 配置文件
Homestead.yaml
文件在 ~/Homestead
文件夾裏,在 Git-Bash 裏,你可使用如下命令使用文件夾打開當前命令行所在目錄:
> cd ~/Homestead/ > explorer .
可經過運行下面命令快速打開 Homestead.yaml
文件:
> subl ~/Homestead/Homestead.yaml
爲了行文方便,後面若是沒有提示的話,
Homestead.yaml
指的是~/Homestead/Homestead.yaml
文件。
Homestead.yaml
裏的配置大體能夠分爲如下幾種:
- 虛擬機設置;
- SSH 祕鑰登陸配置;
- 共享文件夾配置;
- 站點配置;
- 數據庫配置;
- 自定義變量;
接下來咱們逐個講解。
1. 虛擬機設置
Homestead 支持咱們對虛擬機的 IP,內存,CPU,虛擬機的默認提供者進行配置。這裏咱們基本不須要作任何配置,所以能夠跳過。
ip: "192.168.10.10" memory: 2048 cpus: 1 provider: virtualbox
2. SSH 祕鑰登陸配置
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)
3. 共享文件夾配置
咱們能夠經過 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
文件夾上。
4. 站點配置
站點配置容許你在主機裏,經過域名來訪問虛擬機裏的 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
站點。
5. 多站點配置
如需建立多站點只需繼續添加 虛擬域名和虛擬機目錄(以下所示):
sites: - map: homestead.test to: /home/vagrant/code/Laravel/public
- map: blog.test to: /home/vagrant/code/blog/public
而後執行以下命令重載vagrant便可:
vagrant reload --provision
5. 數據庫配置
咱們能夠爲 Homestead 指定數據庫名稱,這裏使用默認設置便可。
databases: - homestead
6. 自定義變量
最後,若是你須要自定義一些在虛擬機上可使用的自定義變量,則能夠在 variables
中進行定義。
variables: - key: APP_ENV value: local
Homestead 自定義變量在本書中並未使用,知悉有此功能便可。
運行 Vagrant
完成了 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 虛擬機盒子爲模板,新建一臺虛擬機;
- 並按照
Homestead.yaml
裏的配置信息,對這臺新建的虛擬機進行配置; - 配置完成後啓動虛擬機。
成功啓動後,仍是在 ~/Homestead
目錄中,經過如下命令來 SSH 登陸 Homestead 虛擬機中:
> vagrant ssh
在咱們登陸成功後,你能看到相似於以下圖的界面,如今咱們在該終端界面中輸入的全部命令都將運行在 Homestead 虛擬機上。
在虛擬機界面下能夠輸入退出虛擬機:
$ exit
最後嘗試關閉 Homestead:
> vagrant halt
注意:本文中由於虛擬機的存在,咱們會有兩個運行命令行的環境,一個是主機,另外一個是 Homestead 虛擬機。咱們會在命令的前面使用『命令行提示符』來區分主機和 Homestead。請記住以
>
開頭的命令是運行在主機裏,$
開頭的命令是運行在 Homestead 虛擬機裏。詳見 寫做約定 - 命令行提示符。
開啓 NFS 掛載
使用 Homestead 開發時常常遇到站點龜速響應的問題,解決方案請見: Wiki:Laravel Homestead:開啓 NFS 解決站點響應緩慢
FAQ
如下是環境部署的常見問題蒐集,方便遇到問題的同窗查閱。若是你一切正常,請無視如下。