本篇文章給大家帶來的內容是關于如何解決laravel 開發環境搭建的問題,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
正文:步驟簡略
-
安裝VirtualBox
-
安裝Vagrant
-
導入Homestead Box虛擬機盒子
-
安裝Git
-
安裝Homestead管理腳本
-
配置Homestead.yaml文件
-
啟動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
-
下載和導入Homestead虛擬機盒子
-
安裝Git,為下載Homestead管理腳本做準備
-
使用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配置大致分為以下幾種
-
虛擬機配置
-
SSH秘鑰登錄設置
-
共享文件夾配置
-
站點配置
-
數據庫配置
-
自定義變量
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]
設置密碼,回車鍵默認為空密碼
再次查看是否配置成功
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:WindowsSystem32Driversecthosts
>?subl?C:WindowsSystem32Driversecthosts
在hosts文件中添加
192.168.10.10??homestead.test
注意:WINDOWS 10因為權限設置相關問題,即使打開了該文件可能也無法修改成功,此處有兩種方式替代
-
打開該路徑,復制hosts到任意目錄并修改配置,最后覆蓋
-
使用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?#關閉整個虛擬機