laravel開發環境搭建
之前為了開發laravel,搭建過很多種的環境,其中包括xampp內建開發環境和LAMP windows下的開發環境。但從生産方面講都存在一些缺陷。本文通過virtualBox和vagrant工具搭建laravel開發環境。
一、系統和軟體
- windows 10 企業版 2016長期服務版
- VirtualBox-5.2.6
- vagrant_2.0.2
- git_2.16.2
二、安裝vitrualbox
VirtualBox 是 Oracle 公司的開源虛拟機軟體。VirtualBox 号稱是最強的免費虛拟機軟體,它不僅功能齊全,而且性能也很優異!VirtualBox 支援大部分流行的系統,如:Mac, Windows, Linux 等。本次開發環境選擇 5.2.6。可以去官網下載下傳或百度雲。
然後一步一步按照預設安裝即可,本人将軟體全部安在D:\laravelEnv的檔案加下,其他預設設定。
三、安裝 Vagrant
Vagrant 是用來管理虛拟機的工具,支援目前主流的虛拟機系統如 VirtualBox、VMware、AWS 等。Vagrant 的主要作用是提供一個可配置、可移植和複用的軟體環境。Vagrant 讓你通過編寫一個 Vagrantfile 檔案來控制虛拟機的啟動、虛拟機網絡環境的配置、虛拟機與主機間的檔案共享,以及啟動後自動執行一些配置腳本,如自動執行一個 Shell Script 來安裝一些必備的開發工具,如安裝配置MySQL、PHP,甚至是自動配置 Nginx 站點。這意味着,在一個多人開發的項目中,你隻需要同步 Vagrantfile 檔案,就可以保證參與項目的每個人各自的機器上擁有一緻的開發環境。
本文選擇 Vagrant 版本為 2.0.2
然後一步一步按照預設安裝即可,本人将軟體全部安在D:\laravelEnv的檔案加下,其他預設設定。下載下傳位址或百度雲
四、Homestead 介紹
Homestead 利用 Vagrantfile 提供的便利,定制了一整套的可配置、可移植和複用的 Laravel 開發環境。Homestead 虛拟機裡面包含了 Nginx Web 伺服器、PHP 7.0、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 7.0、MySQL、Postgres、Redis、Memcached、Node,以及所有你在使用 Laravel 開發時所需要用到的各種軟體。
所有虛拟機盒子版本曆史 在此。
可以看出 Homestead Box 虛拟機盒子有很多版本。不過,如 Homestead 腳本,為了學習的流暢性,我們接下來将會使用定制版本的虛拟機盒子,你不需要太擔心版本的事情。
五、安裝git和配置
1.下載下傳安裝git
此處我們使用的是2.16.2,官網下載下傳。
然後按照步驟一步一步安裝即可。
2.生成SSH key
一直安回車即可。
六、安裝和使用 Homestead
1. 下載下傳和導入 Homestead Box
由于國内的網絡環境原因,我們特意為大家定制了适用于國情的 Homestead 安裝包,該安裝包提供了以下内容:
- Composer 加速,配置了 Composer 中國全量鏡像 支援;
- 預設內建 Heroku 工具;
- 預設內建 Yarn,并為 Yarn 加了淘寶鏡像的加速;
- 使用 CNPM 對 NPM 進行加速。
接下來讓我們開始進行 Homestead 的安裝,首先我們需要下載下傳 Homestead 虛拟機盒子,建議大家使用迅雷離線下載下傳或者其他離線下載下傳方式下載下傳此盒子。
下載下傳後的檔案為 lt-homestead-3-0-0-2017082400.zip,請對其進行 zip 解壓操作,解壓成功後可以看到目錄 lt-homestead-3-0-0-2017082400,此目錄下包含兩個檔案:
- homestead-virtualbox-3.0.0.box(教程定制化過的 Homestead 盒子)
- metadata.json(盒子的導入配置檔案)
在解壓目錄D:\laravalEnv中 lt-homestead-3-0-0-2017082400 運作以下指令導入 Box:
通過git bash
$ cd /d/laravelEnv/lt-homestead----/
$ vagrant box add metadata.json
如下圖所示:

2.下載下傳 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 目錄,再使用 Git 檢出我們需要的 Homestead 版本:
$ cd ~/Homestead
$ git checkout v5
接下來我們需要初始化 Homestead:
$ bash init.sh
運作以上指令後,會在 ~/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
subl需要安裝sublime,并設定環境變量
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 免密碼登入。在這裡我們預設填寫即可。
keys 是數組選項,填寫的是本機的 SSH 私鑰檔案位址。虛拟機初始化時,會将此處填寫的所有 SSH 私鑰檔案複制到虛拟機的 /home/vagrant/.ssh/ 檔案夾中,進而使虛拟機能共享主機上的 SSH 私鑰檔案,使虛拟機具備等同于主機的身份認證。此功能為 SSH 授權提供了便利,例如在後面章節中,我們隻需要在 GitHub 上配置一個 SSH 公鑰,即可實作 GitHub 對虛拟機和主機共同認證。
此處我們将公鑰和私鑰一起同步到虛拟機中:
keys:
- ~/.ssh/id_rsa
- ~/.ssh/id_rsa.pub
此處就是之前生成的SSH key
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 。
在 hosts 檔案的最後面加入以下一行:
至此站點就配置好了,等我們在後面章節建立 Laravel 項目後,即可通過浏覽器通路 homestead.test 站點。
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 虛拟機中:
成功啟動後,還是在 ~/Homestead 目錄中,通過以下指令來 SSH 登入 Homestead 虛拟機中:
在我們登入成功後,你能看到類似于如下圖的界面,現在我們在該終端界面中輸入的所有指令都将運作在 Homestead 虛拟機上。
在虛拟機界面下可以輸入退出虛拟機:
最後嘗試關閉 Homestead:
$ vagrant halt
九、通過securtcrt登陸虛拟機
ip:192.168.10.10
使用者名:vagrant
密碼:vagrant
參考
laravel-china開發環境搭建 - Windows