如何解決Laravel 開發環境搭建的問題

本篇文章給大家帶來的內容是關于如何解決laravel 開發環境搭建的問題,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。


正文:步驟簡略

  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:?2048cpus:?1provider:?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"#上面的郵箱替換成自己的

接下來命令行會提示讓你指定秘鑰的名稱,按回車鍵將 SSH KEY保存到默認文件名即可

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

設置密碼,回車鍵默認為空密碼
如何解決Laravel 開發環境搭建的問題

再次查看是否配置成功

ls?-al?~/.ssh

如下圖
如何解決Laravel 開發環境搭建的問題

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:WindowsSystem32Driversecthosts

>?subl?C:WindowsSystem32Driversecthosts

在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

如何解決Laravel 開發環境搭建的問題

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

? 版權聲明
THE END
喜歡就支持一下吧
點贊6 分享