自己安裝了一篇,第一次接觸,確實比較繁瑣。記性越來越不好了,爲了防止重複造輪子,再次記錄過程。
1.環境介紹
操作系統:macOS Sierra
工具:(1)VirtualBox 5.2.10
(2)Vagrant macOS 64-bit
(3)Homestead Vagrant 盒子 laravel/homesterad 5.2.0
(4)Homestead
(5)Laravel 5.6
2.正式操作
2.1安裝VirtualBox 5.2.10
選擇對應的版本,下載安裝。
2.2安裝Vagrant
選擇本機對應的操作系統,下載安裝
2.3克隆Homestead
命令如下
git clone https://github.com/laravel/homestead.git Homestead
cd Homestead
初始化
// Mac/Linux...
bash init.sh
// Windows...
init.bat
正常情況下,這個時候會在Homestead目錄下生成Homestead.yaml
Homestead.yaml是配置文件,配置內容如下:
設置 Provider
Homestead.yaml
文件中的 provider
鍵表示使用哪個 Vagrant 提供者:virtualbox
、vmware_fushion
、 vmware_workstation
、parallels
或 hyperv
,你可以將其設置爲自己選擇的提供者,當然對大部分人來說也沒得選:
provider: virtualbox
配置共享文件夾
Homestead.yaml
文件中的 folders
屬性列出了所有主機和 Homestead 虛擬機共享的文件夾,一旦這些目錄中的文件有了修改,將會在本地和 Homestead 虛擬機之間保持同步,如果有需要的話,你可以配置多個共享文件夾:
folders:
- map: ~/Development #本地環境,不要複製我
to: /home/vagrant/Code #虛擬機環境,不要複製我
如果你只是創建了很少的站點,使用一般的映射就夠了。不過,隨着站點數量的增加,你就會遇到性能問題,尤其是在包含大量文件的低端機器或項目中,性能問題可能會非常明顯。如果你不幸遇到了這個問題,可以嘗試映射每個項目到各自的 Vagrant 文件夾:
folders:
- map: ~/code/project1
to: /home/vagrant/code/project1
- map: ~/code/project2
to: /home/vagrant/code/project2
如果要開啓 NFS,只需簡單添加一個標識到同步文件夾配置:
folders:
- map: ~/Development
to: /home/vagrant/Code
type: "nfs"
注:使用 NFS 的話,需要考慮安裝 vagrant-bindfs 插件。該插件可用於在 Homestead 盒子中爲文件和目錄維護正確的用戶/組權限。
你還可以通過 options
傳遞其他 Vagrant 支持的同步文件夾選項:
folders:
- map: ~/code
to: /home/vagrant/code
type: "rsync"
options:
rsync__args: ["--verbose", "--archive", "--delete", "-zz"]
rsync__exclude: ["node_modules"]
配置 Nginx 站點
對 Nginx 不熟?沒關係!通過 sites
屬性你可以方便地將“域名”映射到 Homestead 虛擬機的指定目錄,Homestead.yaml
中默認已經配置了一個示例站點。和共享文件夾一樣,你可以配置多個站點:
sites:
- map: homestead.app
to: /home/vagrant/Code
如果你是在 Homestead 盒子啓動之後進行了上述修改,需要運行 vagrant reload --provision
更新虛擬機上的 Nginx 配置。
Hosts文件
不要忘記把 Nginx 站點配置中的域名添加到本地機器上的 hosts
文件中,該文件會將對本地域名的請求重定向到 Homestead 虛擬機,在 Mac 或 Linux上,該文件位於 /etc/hosts
,在 Windows 上,位於 C:\Windows\System32\drivers\etc\hosts
,添加方式如下:
192.168.10.10 homestead.test
確保 IP 地址和你的 Homestead.yaml
文件中列出的一致,一旦你將域名添加到 hosts
文件,就可以在瀏覽器中通過該域名訪問站點了:
http://homestead.test
注:在真正可以訪問之前還需要通過 Vagrant 啓動虛擬機上的 Homestead 盒子。
2.4安裝laravel/homesterad盒子
官方是用一句代碼搞定的,如下:
vagrant box add laravel/homestead
我反正搞不定,只能用迅雷大法下載離線包進行安裝。5.2.0 版本 傳送門
https://app.vagrantup.com/laravel/boxes/homestead/versions/5.2.0/providers/virtualbox.box
目前(18年5月5日)最新版爲6.0.0,如果需要下載最新版,可以將上面的5.2.0,替換成6.0.0。可以使用迅雷下載
用此方法,需要手動添加,命令如下,~/Downloads/virtualbox.box爲目錄地址,根據當前環境更改
vagrant box add laravel/homestead ~/Downloads/virtualbox.box
終端中顯示綠色的box:Successfully add box laravel/homestead (v0) for 'virtualbox',就表示成功。可以使用下面的命令查看,如果出現 laravel/homestead (virtualbox , 0)就表示成功。
vagrent box list
注意:因爲是手工添加,肯定會比自動的麻煩。上面添加成功之後,還得有下面的步驟,不能跳過。
Homestead目錄創建metadata.json文件,內容如下
{
"name": "laravel/homestead", //盒子名稱
"versions":
[
{
"version": "5.2.0", //版本號
"providers": [
{
"name": "virtualbox",
"url": "virtualbox.box" //盒子所在路徑
}
]
}
]
}
注意:這裏,我把virtualbox.box放到了Homestead目錄下,生成以上文件後,再當前Homestead目錄下,執行
vagrant box add metadata.json
即可添加帶有版本號的盒子,可通過 vagrant box list 查看, 最後通過 vagrant up 即可載入開啓虛擬機。
2.5開啓虛擬主機
執行vagrant up,開啓虛擬主機,初次執行時間會有點長。
注意:(1)如果第二行顯示找不到 laravel/homestead ,那麼程序會自動調用遠端鏈接進行下載。這說明上面2.4那步加載盒子失敗了,請重新嘗試加載盒子。這邊正常的話是讀取本地的盒子,30s算很長了,不要傻等。
(2)也有可能提示目錄映射不正確,請排查Homestead.yaml文件的配置
顯示下面的信息,並執行完畢後,就表示開啓成功。
homestead-7:Successfully add box laravel/homestead (v5.2.0) for 'virtualbox'!
2.6安裝Laravel
之前一直很迷惑,上面的步驟到底是幹嘛的,我到底有沒有安裝了Laravel,甚至還去本地環境下載了Laravel用於映射到虛擬機中。。
解答:上面安裝了一個虛擬機,然後配置好了php等一系列環境,然後,進入這個虛擬機,開始下載Laravel,以後都在虛擬機中進行操作,跟本地無關了。
2.6.1進入虛擬機
vagrant ssh
2.6.2查看共享目錄
進入上面配置的folder共享目錄,沒有就創建,正常情況下,映射目錄中已和本地目錄中一致。
2.6.3下載Laravel installer
composer global require "laravel/installer"
這邊就能體現出Homestead的優勢了,composer,php,git全部都在環境變量中,都是最新版本,不需要自己考慮
2.6.4新建應用
安裝完成後,通過簡單的 laravel new
命令即可在當前目錄下創建一個新的 Laravel 應用,例如,laravel new blog
將會創建一個名爲 blog
的新應用,且包含所有 Laravel 依賴。該安裝方法比通過 Composer 安裝要快很多:
laravel new blog
如果之前已經安裝過舊版本的 Laravel 安裝器,需要更新後才能安裝最新的 Laravel 5.6 框架應用:
composer global update
2.6.5通過瀏覽器訪問
通過http://homestead.test/blog/public,訪問Laravel。看到下面的界面,即表示成功