Laravel 開發環境搭建-筆記

zgy0777發表於2018-08-27

學習筆記,質量不高,純屬加深個人理解,請勿浪費時間閱讀。

原文連線

開發環境搭建 - Windows
https://laravel-china.org/docs/laravel-development-environment/5.5/development-environment-windows/938

前言

  1. 以下大部分是原文連線內容,怕自己理解不到位,純手動打字加深理解。上方有原文連線
  2. .不實戰一次,你永遠不知道會犯下多少愚蠢的錯誤。記錄了WINDOWS環境下安裝時犯下的各種低階錯誤

總結

  1. .跟著教程手打一次,越發理解配置命令背後的含義。有些事情當你沒到達某種境界時,你以為你知道,其實你根本不知道。多敲多思考,不懂就找好朋友百度解決問題。
  2. 碰到問題耐心解決,時間允許情況下,儘量總結並做到知其然,知其所以然。這些錯誤會成為寶貴的經驗沉澱。
  3. 深刻理解並同意課程理念,逐漸發現入門教程也有最好教程一說,很多原理都描述得很細緻。需要多練習才能get。
  4. .東西學得多,自然忘記得快,筆記是個好的解決方案。
  5. 第一次用md,沒想到寫筆記這麼舒服,確實好用。

homestead.yaml配置總結:

1.ip: "192.168.10.10"

IP對映,需要在終端配置hosts IP才能訪問虛擬域名。

2authorize: ~/.ssh/id_rsa.pub

指派登入虛擬機器授權連線的公鑰檔案,填寫的是主機公鑰檔案地址,虛擬機器初始化此檔案裡的內容會被預設複製儲存到虛擬機器的/home/vagrant/.ssh/authorized_keys中,從而實現ssh免密碼登入

3.KEYS

是陣列選項,填寫的是本機SSH私鑰檔案地址。虛擬機器初始化時,會將此處填寫的的【所有】SSH私鑰檔案賦值到虛擬機器的/home/vagrant/.ssh資料夾中,從而使虛擬機器能共享主機上的ssh私鑰檔案,使虛擬機器具備等同於主機的身份認證。PS:這裡解析了為什麼GitHub配置一個SSH公鑰即可實現GITHUB對虛擬機器和主機共同認證!即主機對GITHUB認證 私鑰通過,虛擬機器初始化時複製私鑰到KEYS到虛擬機器中,預設虛擬機器也同理通過。

4.folders

關鍵字 說明 記錄
map 本機資料夾,即需要建立對映關係的資料夾 no inpuct file specifield 注意對映關係的檔名的大小寫
to 虛擬機器資料夾,即虛擬機器中建立與本機對映關係的資料夾

5.databases 配置連線的資料庫名稱

6.用文字編輯時,記得ctrl+s

相關連線

(轉)為什麼我的專案頁面開啟這門慢(重點推薦)
(轉)後面還有一個NPM RUN CPU佔用率過高的問題


正文:步驟簡略

  1. 安裝VirtualBox
  2. 安裝Vagrant
  3. 匯入Homestead Box虛擬機器盒子
  4. 安裝Git
  5. 安裝Homestead管理指令碼
  6. 配置Homestead.yaml檔案
  7. 啟動Homestead

安裝VirtualBox

VirtualBox百科詞條
https://baike.baidu.com/item/VirtualBox/5842786?fromtitle=virtual%20box&fromid=3961028&fr=aladdin

簡單理解:模擬出你想要的系統
安裝:點選下一步即可

安裝Vagrant

百度詞條
https://baike.baidu.com/item/Vagrant/1321946?fr=aladdin

簡單理解:建立和部署虛擬化開發環境。
安裝:next

剛開始使用vagrant命令時,總是把 vagrant up 輸入成 vargant 。習慣性認為是var賦值之意 。後來從mysql grant許可權以及查詢其英文詞意得出靈感,才理解 grant是 承認;同意;授予之意。此處轉化為程式語境,有點類似“賦予許可權” 。使用外國人開發的東西,還是得抓一下英文基本功才能更好理解……

Homestead介紹

原文連線提供的homestead,實際是打包好N種開發所需的軟體和vagrant盒子。主要是提供一個優秀的開發環境,在盒子中已經移植好PHP、Composer、Nginx、Mysql、git…等其他工具軟體。

目的是為團隊開發的成員搭建一致開發環境,確保成員環境一致,避免因環境配置出現不可預估的錯誤。這也是為什麼Laravel學院要求初學者下載匯入定製好的盒子~

1.Homestead 管理指令碼

Homestead指令碼使用Ruby和Shell指令碼編寫而成。原理是對vagrantfile檔案做定製。將從
~/Homestead/Homestead.yaml讀取配置資訊。在provision時,解析為vagrant命令並進行對虛擬機器的配置
同時提供了極其簡單易用的介面,傻瓜化配置即可完成複雜任務

  • IP配置,埠對映
  • Nginx Site建立
  • 資料庫建立
  • 主機資料夾掛在到虛擬機器等任務

安裝和使用Homestead

  1. 下載和匯入Homestead虛擬機器盒子
  2. 安裝Git,為下載Homestead管理指令碼做準備
  3. 使用Git下載Homestead管理指令碼

1.下載匯入Homestead Box

Windows下需要使用匯入命令,找到盒子所在的路徑,cmd輸入以下命令

> vagrant box add metadata.json

2.安裝GIT

關鍵字:next
很多安裝模式選項,得找時間研究一下

3.下載homestead管理指令碼

克隆 summer主頁的git專案 WINDOWS下,預設在 C盤 使用者名稱/homstead。能找到該檔案

> cd ~ 
> git clone https://git.coding.net/summerblue/homestead.git Homestead

完成後,為GIT建立分支 checkout v7.8.0(注意區分檔名大小寫

> cd ~/Homestead
> git checkout v7.8.0  #剛開始不知道checkout是什麼,還以為是檢查版本,後來發現這是git版本管理一個強大的功能

接下來初始化Homestead

> bash init.sh 

執行成功後會在~/Homestead目錄生成三個檔案

  • Homestead.yaml主要配置資訊檔案,從中可以讀到戰點和資料庫等資訊
  • after.sh-每一次homestead盒子重置後(provision)會呼叫shell指令碼檔案
  • alsaes-每一次homestead盒子重置後,會被替換到虛擬機器的~/.bash_alisases檔案中,aliases放一些檔案的各項配置資訊進行詳細

此處vagrant provision與vagrant reload搭配使用,可載入修改後的yaml檔案配置,類似修改完apache後重啟

Homestead.yaml配置檔案

接下來再對 Homestead.yaml進行詳細配置

> cd ~/Homestead/        #進入到Homestead/資料夾下
> explorer .             #開啟該資料夾檢視,然後開啟homestead.yaml配置進行修改

另外一種使用命令快速開啟Homestead.yaml檔案

> subl ~/Homestead/Homestead.yaml  #subl是sublime開啟檔案的命令,需要單獨配置,詳見下方
 轉:終端用sublime開啟檔案的方法 作者:**QUETAL**
 https://blog.csdn.net/u011240016/article/details/54434923

Homestead.yaml配置大致分為以下幾種

  1. 虛擬機器配置
  2. SSH祕鑰登入設定
  3. 共享資料夾配置
  4. 站點配置
  5. 資料庫配置
  6. 自定義變數

1.虛擬機器配置

Homestead支援我們對虛擬機器的IP,記憶體,CPU,虛擬機器的預設提供者進行配置。這裡我們基本不需要做任何配置。

ip: "192.168.10.10"  #ip對映,配置虛擬域名,需要在終端hosts新增該ip.後續有
memory: 2048
cpus: 1
provider: virtualbox

2.SSH祕鑰登入配置

authorize 選項是指派登入虛擬機器授權連線的公鑰檔案,此檔案填寫的是主機上的公鑰檔案地址,虛擬機器初始化時,此檔案裡的內容會被預設複製儲存到虛擬機器/home/vagrant/.ssh/authorized_keys檔案中,從而實現ssh免密碼登入。在這裡我們預設填寫

authorize ~/.ssh/id.rsa.pub   #這就是為什麼輸入vagrant up && vagrant ssh即可免密碼登入

keys是陣列選項,填寫的是本機SSH私鑰檔案地址。虛擬機器初始化時,會將此處填寫的所有SSH私鑰檔案賦值到虛擬機器的/home/vagrant/.ssh/資料夾中,從而使虛擬機器能共享主機上的SSH私鑰檔案,使虛擬機器具備等同於主機的身份認證。此功能為SSH授權提供了便利。例如在後面章節中,我們只需要在Github配置一個SSH公鑰即可實現GITHUB對虛擬機器和主機共同認證(GitHub是程式碼託管,終端程式碼提交需要配置公鑰連線)

keys:
- ~/.ssh/id_ras
- ~/.ssh/id_rsa.pub  #變化在這裡,此處我們將公鑰和私鑰一起同步到虛擬機器中

接下來生成ssh key,請先檢查主機是否已生成過SSH key C:/……./使用者/使用者名稱/.ssh 可檢視是否已配置

> ls -al ~/.ssh  #輸入這個即可查詢是否配置
> 
> #ls (選項)(引數)  
> #ls命令用來顯示目標列表,在Linux中是使用率較高的命令
> # -a 顯示所有檔案及目錄(ls內定將檔案名或目錄名稱為“.”的視為影藏,不會列出);
> # -l與“-C”選項功能相反,所有輸出資訊用單列格式輸出,不輸出為多列;
> # cannot access '/c/Users/使用者名稱/.ssh': No such file or directory 即沒有配置過

生成 SSH key

ssh-keygen -t rsa -C "your_email@example.com"
#上面的郵箱替換成自己的

接下來命令列會提示讓你指定祕鑰的名稱,按Enter鍵將 SSH KEY儲存到預設檔名即可

Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]

設定密碼,Enter鍵預設為空密碼
設定成功後

再次檢視是否配置成功

ls -al ~/.ssh

如下圖
這裡寫圖片描述

SSH祕鑰的連個檔案

  • id_rsa——–SSH祕鑰 的 私鑰 (Private Key)
  • id_ras.pub———SSH祕鑰的公鑰 (Public Key)

3.共享資料夾配置

可以通過folders來致命本機要對映到Homestead虛擬機器上的資料夾

  • map對應的是我們本機的資料夾,例如 C:/Code 。
  • to對應的是Homestead上的資料夾,即虛擬機器中的資料夾。
  • 一定一定要注意對映資料夾大小寫名字,否則會出現 no input file specified
  • 一定一定要儲存修改完後的配置檔案,如果沒有儲存直接配置載入也沒關係,你會學習到一系列有趣的問題(手動微笑)
folders:
    - map :~/Code 
    - to:/home/vagrant/Code 

聯想:

  • 相當於在本機修改程式檔案,最終是會對映到虛擬機器的資料夾上。
  • PS:使用IDE最好是輕量級的,例如editplus、sublime等。如果ide有git相關外掛。以後每次修改檔案,會遍歷整個目錄樹,機器不好的容易卡。例如laravel預設是9000個檔案,對映到虛擬機器的檔案同樣是9000個,那麼修改程式碼時,相當於遍歷18000個檔案。這也間接體現了laravel為什麼是重量級框架,整合了現代商業化專案大部分需要的功能。由於是深度配置,所以定製功能時的修改也相對麻煩。
  • 關於laravel框架 和 ide 的選擇上,適合自己的才是最好的,未必整合的功能越多就越好。具體看專案開發/開發者自身需求

預設Homestead會將我們本地的~/Code檔案對映到/home/vagrant/Code資料夾上。目前還沒有~/Code,需建立

> cd ~
> mkdir Code #在預設路徑下建立Code資料夾
> 
> #可使用 explorer .開啟該資料夾的檢視

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還沒建立,待會會用COMPOSER下載

另外,主機裡直接訪問虛擬機器站點,必須通過繫結hosts來實現。終端需要修改hosts檔案繫結到homestead.test到虛擬機器IP192.168.10.10上,hosts完整路徑為 C:\Windows\System32\Drivers\ect\hosts

> subl C:\Windows\System32\Drivers\ect\hosts

在hosts檔案中新增

192.168.10.10  homestead.test

注意:WINDOWS 10因為許可權設定相關問題,即使開啟了該檔案可能也無法修改成功,此處有兩種方式替代

  1. 開啟該路徑,複製hosts到任意目錄並修改配置,最後覆蓋
  2. 使用powershell開啟並修改
    2.1windows 開始選單圖示【即最左下角的選單】—> 點選右鍵

    2.2 單擊Windows PowerShell(管理員)

    2.3 cd drivers/etc

    2.4 notepad hosts

5.資料庫配置

可以為homestead指定資料庫名稱,這裡使用預設設定即可

databases:
    - homestead

執行Vagrant

完成相關配置後,開啟虛擬機器
以下為相關命令

命令列 說明 相關例子
vagrant init 初始化vagrant
vagrant up 啟動vagrant
vagrant halt 關閉虛擬機器 如果直接在cmd中exit 不halt,下次啟動會出現仍在執行
vagrant ssh 通過SSH登入vagrant (需要先啟動vagrant) 需要在homestead配置公鑰而免密碼登入
vagrant provision 重新應用更改vagrant配置 類似apache修改配置項後需要重啟,此處同理
vagrant reload 過載虛擬機器 搭配 vagrant provision && vagrant reload
vagrant destroy 刪除vagrant

接下來開啟Homestead

> cd ~/Homestead && vagrant up

第一次啟動時,vagrant會做以下幾件事

  • 以匯入的Homestead虛擬機器盒子為模版,新建一臺虛擬機器(之前匯入的homestead)
  • 並按照homestead.yaml裡的配置資訊,對這臺新建的虛擬機器進行配置
  • 配置完成後啟動虛擬機器

成功啟動後還是在~/Homestead目錄中,通過以下命名來來SSH登入Homestead虛擬機器中

> vagrant ssh

成功介面

> exit #退出當前虛擬機器
> vagrant halt #關閉整個虛擬機器

相關文章