Homestead - laravel開發環境搭建(windows)

系統要求php


window 7 及以上。laravel

 

安裝包列表git


 

virtualbox 5.*版本github

vagrantshell

Homestead Box 虛擬機盒子數據庫

gitjson

 

安裝包資源下載windows


 

連接:https://pan.baidu.com/s/1DFZpvn5H0Sg2KEu32DrWJA
提取碼:fcwv 數組

 

步驟


 

  1. 安裝 VirtualBox
  2. 安裝 Vagrant
  3. 導入 Homestead Box 虛擬機盒子
  4. 安裝 Git
  5. 安裝 Homestead 管理腳本
  6. 配置 Homestead.yaml 文件
  7. 啓動 Homestead 虛擬機
  8. 開啓 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 開發時所須要用到的各類軟件。

全部虛擬機盒子版本歷史 在此

打不開的用戶,下圖是截屏:

 

file
 

 

能夠看出 Homestead Box 虛擬機盒子有不少版本。不過,如 Homestead 腳本,爲了學習的流暢性,咱們接下來將會使用定製版本的虛擬機盒子,你不須要太擔憂版本的事情。

 

安裝和使用 Homestead


 

接下來,咱們會講解:

  1. 下載和導入 Homestead Box 虛擬機盒子;
  2. 安裝 Git ,爲下載 Homestead 管理腳本作準備;
  3. 使用 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

注意:請必須解壓到 非中文路徑,有同窗反饋中文路徑會出現不可預知問題。

以下圖所示:

 

file
 

 

若是你使用的 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

 

file
 

 

注:不須要擔憂你的版本與我不一樣。

 

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 目錄,相似:

 

file
 

 

注:咱們把 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 裏的配置大體能夠分爲如下幾種:

  1. 虛擬機設置;
  2. SSH 祕鑰登陸配置;
  3. 共享文件夾配置;
  4. 站點配置;
  5. 數據庫配置;
  6. 自定義變量;

接下來咱們逐個講解。

 

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 鍵便可,大體以下:

 

file
 

 

這個時候若是咱們再使用:

> ls -al ~/.ssh

查看的話,會出現:

 

file
 

 

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 . 命令在文件夾中打開此目錄:

 

file
 

 

在後面的章節中,咱們將會在該文件夾下放置咱們全部的 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 虛擬機上。

 

JWXEpjiUdi.png
 

 

在虛擬機界面下能夠輸入退出虛擬機:

$ exit

最後嘗試關閉 Homestead:

> vagrant halt

注意:本文中由於虛擬機的存在,咱們會有兩個運行命令行的環境,一個是主機,另外一個是 Homestead 虛擬機。咱們會在命令的前面使用『命令行提示符』來區分主機和 Homestead。請記住以 > 開頭的命令是運行在主機裏,$ 開頭的命令是運行在 Homestead 虛擬機裏。詳見 寫做約定 - 命令行提示符

 

開啓 NFS 掛載


 

使用 Homestead 開發時常常遇到站點龜速響應的問題,解決方案請見: Wiki:Laravel Homestead:開啓 NFS 解決站點響應緩慢

 

FAQ


 

如下是環境部署的常見問題蒐集,方便遇到問題的同窗查閱。若是你一切正常,請無視如下。

 

1. SSH auth method: private key

Homestead 啓動時 SSH auth method: private key 解決方案彙總

 

2. Failed to restart php7.0-fpm.service: Unit php7.0-fpm.service not found.

Vagrant 啓動虛擬機 提示 PHP7.0 模塊找不到,這個怎麼處理呢?

 

3. 爲何個人項目頁面打開這麼慢?(重點推薦)

解決 Windows 系統使用 Homestead 運行 Laravel 項目響應緩慢問題

 

本文轉載於 https://learnku.com/docs/laravel-development-environment/5.8/development-environment-windows/4373

相關文章
相關標籤/搜索