本教程中使用的是『定制版的 Homestead』,預裝了必須的軟件,軟件的配置也依照國內網絡環境做了優化,如配置了 NPM 和 Composer 國內鏡像加速等。
[TOC]
## 下載和導入 Homestead 虛擬盒子
### 百度網盤下載地址
>[success] 鏈接: https://pan.baidu.com/s/1pLIC7Dx
> 密碼: mbgs
>[info] 此為國內特別定制版,集成了:
>1. Composer 加速,配置了 [Composer 中國全量鏡像](https://laravel-china.org/composer) 支持;
> 2. 默認集成 Heroku 工具;
> 3. 默認集成 Yarn,并為 Yarn 加了淘寶鏡像的加速;
> 4. 使用 CNPM 對 NPM 進行加速。
### 導入 Homestead Box
下載上述 zip 包并解壓。
>[danger] 必須解壓到 **非中文路徑**,否則會報錯。
在解壓目錄 `lt-homestead-3-0-0-2017082400` 中運行以下命令導入 Box:
~~~bash
> vagrant box add metadata.json
~~~
>[info] 導入成功后,`lt-homestead-3-0-0-2017082400` 文件夾可任意刪除。
#### 可能出現的報錯
>[danger] The box 'laravel/homestead' could not be found or
could not be accessed in the remote catalog.
>[success] 解決方法:
> 請下載 [MS Visual C++ 2010 x86 Redistributables](https://www.microsoft.com/en-us/download/confirmation.aspx?id=5555) 并進行安裝即可修復。
## 下載 Homestead 管理腳本
### 下載定制版的 Homestead
~~~bash
> cd E:/
> git clone https://git.coding.net/summerblue/homestead.git Homestead
~~~
>[info] 定制版有以下優勢:
>1. 從國內 coding.net 網站下載,下載速度比 [官方](https://github.com/laravel/homestead) 快;
> 2. 對腳本進行修改,移除了每一次 `provision` 時 `composer self-update` 的卡頓。
>[warning] 因為C盤空間有限,本教程將環境配置于E盤。
### 初始化 Homestead
在下載目錄 `E:\Homestead` 下進行
~~~bash
> bash init.sh
~~~
## Homestead.yaml 配置文件
用以下命令打開配置文件所在目錄
~~~bash
> cd E:/Homestead/
> explorer .
~~~
`Homestead.yaml` 文件樣本如下:
~~~
---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
- ~/.ssh/id_rsa.pub
folders:
- map: E:/Homestead/code
to: /home/vagrant/Code
sites:
- map: homestead.app
to: /home/vagrant/Code/Laravel/public
databases:
- homestead
# blackfire:
# - id: foo
# token: bar
# client-id: foo
# client-token: bar
# ports:
# - send: 50000
# to: 5000
# - send: 7777
# to: 777
# protocol: udp
~~~
`Homestead.yaml` 里的配置大致可以分為以下幾種:
### 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 授權提供了便利,例如在后面章節中,我們只需要在 gitee 上配置一個 SSH 公鑰,即可實現 gitee 對虛擬機和主機共同認證。
在這里,我們將公鑰和私鑰一起同步到虛擬機中:
~~~
keys:
- ~/.ssh/id_rsa
- ~/.ssh/id_rsa.pub
~~~
>[info] id_rsa —— SSH 秘鑰的 私鑰 (Private Key)
> id_rsa.pub —— SSH 秘鑰的 公鑰 (Public Key)
接下來生成 SSH Key:
1. 檢查主機上是否已經生成過 SSH Key:
~~~shell
> ls -al ~/.ssh
~~~
2. 如未生成,則
~~~bash
> ssh-keygen -t rsa -C "your_email@example.com"
Generating public/private rsa key pair.
~~~
>[success] 可以都選擇默認,一路 `Enter` 鍵即可
### 3. 共享文件夾配置
`folders` 選項指明本機要映射到 Homestead 虛擬機上的文件夾。
>[info] `map` 對應的是我們本機的文件夾,格式例如:`E:/Homestead/code`,以開發者實際項目目錄為準。
> `to` 對應的是 Homestead 虛擬機上的文件夾。
~~~
folders:
- map: E:/Homestead/code
to: /home/vagrant/Code
~~~
生成擺放代碼的 `code` 文件夾:
~~~bash
> cd E:/Homestead
> mkdir code
~~~
后續將在該文件夾下放置所有的 Laravel 項目代碼,Homestead 會把該文件夾下的項目自動映射到虛擬機的 /home/vagrant/Code 文件夾上。
### 4. 站點配置
`sites` 選項允許在主機里,通過域名來訪問虛擬機里的 Laravel 應用。
~~~
sites:
- map: homestead.app
to: /home/vagrant/Code/Laravel/public
~~~
這一行配置,會命令 Homestead 新建一個 Nginx 站點,并且把 Web Root 配置到指定目錄下。
Laravel 應用的 Nginx 站點 Web Root 配置,默認就是在根目錄下的 public 目錄。
#### 修改 hosts
打開 `C:\Windows\System32\Drivers\etc\hosts` ,在最后面加入以下一行:
~~~text
192.168.10.10 homestead.app
~~~
創建 Laravel 項目后,即可通過瀏覽器訪問 homestead.app 站點。
### 5. 數據庫配置
`databases` 選項為 Homestead 指定數據庫名稱,這里使用默認設置即可。
~~~
databases:
- homestead
~~~
### 6. 自定義變量
`variables` 選項自定義一些在虛擬機上可以使用的自定義變量。
例如:
~~~
variables:
- key: APP_ENV
value: local
~~~
- 日常命令
- 第一章 開發環境部署
- 第一節 安裝 VirtualBox
- 第二節 安裝 Vagrant
- 第三節 安裝 Git for Windows
- 命令行提示符的寫作約定
- Git Bash 使用技巧
- 第四節 安裝和配置 Homestead
- 第五節 啟動 Homestead 虛擬機
- 第六節 創建 Laravel 應用
- 第七節 使用 Git 進行版本控制
- 總結 本章命令概覽
- 第二章 前端工作流
- 第一節 Yarn 安裝前端擴展包
- 第二節 Laravel Mix 前端資源編譯
- (1)配置 webpack.mix.js 指定 Mix 任務
- (2)修改 resources/assets 前端資源文件
- (3)運行 Mix 任務編譯和監控代碼
- 總結 本章命令概覽
- 第三章 數據庫
- 第一節 Config 數據庫配置信息
- 第二節 Migrations 數據庫遷移文件
- 第三節 Schema 數據庫結構生成器
- (1) 數據表操作
- (2) 字段操作
- (3) 索引操作
- 第四節 Seeding 數據填充
- 第五節 DB 數據庫查詢構建器
- (1)獲取結果集