升級 Laravel Homestead

Laravel Homestead

Laravel Homestead 最新版本已經支援熱騰騰的 PHP 7.1,趕快來更新 Homestead 吧。如果還沒用過 Homestead,可以先看看 Laravel 開發環境使用 Homestead

升級 Homestead 程式碼

先查一下目前使用的程式碼版本,開啟終端機,切換到 Homestead 目錄,輸入:
git describe --tags
會顯示目前程式碼的版本,我的例子是 v3.0.2-54-g787fdaf
目前在 GitHub 上的 laravel/homestead 最新版本是 tag v4.0.3
直接使用
git pull
將程式碼更新到最新版本。

升級 Homestead Box

在 Vagrant Boxes 網站查了一下,目前 Homestead Box 最新版本是 v1.0.1。在 v1.0.0 版中有註明, Homestead 程式碼版本要在 3.2 版以上,所以在前面升級 Homestead 程式碼的部份,請注意版本是否符合。

要查看目前正在使用的 Homestead Box 版本,可以在終端機中輸入:
vagrant box list
會列出所有已下載的 Box,其中會有 laravel/homestead (virtualbox, 0.5.0) ,這就是我目前安裝的版本。

要更新 box,先切換到 Homestead 程式碼目錄,然後使用指令:
vagrant box update
應該就可以更新了。可是我的不行,它回應的訊息是找不到這個 box 所以無法更新,可是用 list 指令查又會顯示這個 box,這我也搞不清楚。

反正要安裝最新版本,所以直接用指令:
vagrant box remove BOX的名稱 --box-version="0.5.0"
把舊版本移除。指定版本的選項 --box-version 可以不使用,當你有同一個 box 但多個版本時,想要刪掉指定版本才用。

接著就是下載最新版本的 Homestead:
vagrant box add laravel/homestead
註:在安裝新的 box 版本後,執行 update 就正常了,猜想有可能是第一次下載 box 時,是用 vagrant up 方式安裝的關係。
更多指令可參考 vagrant box

更新 VirtualBox 的 VM

前面的步驟是升級 Vagrant 的 box,這個 box 會被重覆利用來安裝成 VM,在做這個動作之前,我們的 VM 仍是舊的。

要查看目前安裝了哪些虛擬機器 (VM) 及它們的狀態,可以使用指令:
vagrant global-status
會列出已安裝的虛擬機器。基本上會和你打開 VirtualBox ,在清單上看到的一樣。但實際上有可能不同,例如訊息顯示某個虛擬機器正在執行,但其實並沒有;或是已刪除的虛擬機器還列在清單上,這時可以加入選項:
vagrant global-status --prune
資訊會比較正確。詳細指令請參考 vagrant global-status

在安裝新的 VM 之前,要先把舊的刪除。在前面的指令中,會列出 VM 的清單,其中會有一個 id 欄位,所以:
vagrant destroy 1a2b3c4d
在 destroy 指令後面接 id 的值就會刪除該 VM;或是輸入 VM 的名稱也可以。

接下來就可以用新的 box(剛剛下載的 v1.0.1) 來安裝新的 VM,這時候記得切換到 Homestead 程式碼目錄,然後輸入:
vagrant up
在啟動前,它會先把 Box 安裝成一個 VM,然後再啟動它。

重要!因為虛擬機器會被刪除重建,所以放在 VM 中的資料都會被刪除,假設你需要保留資料庫中的資料或實體檔案等等,請記得先備份。
因為 VM 和實體主機有一個共用的連結在一起的目錄,所以你可以把資料都放在這裡,這樣不管怎麼刪除 VM 都不用擔心資料的問題。資料庫的資料,可以先寫一個 bash 指令,用來匯入、匯出資料,日後只要登入 VM 然後執行該 bash 就很好。
本文網址:http://blog.tonycube.com/2017/01/laravel-homestead.html
Tony Blog 撰寫,轉載時請註明出處及文章連結,謝謝 😀

我要留言

留言小提醒:
1.回覆時間通常在晚上,如果太忙可能要等幾天。
2.請先瀏覽一下其他人的留言,也許有人問過同樣的問題。
3.程式碼請先將它編碼後再貼上。(線上編碼:http://bit.ly/1DL6yog)
4.文字請加上標點符號及斷行,難以閱讀者恕難回覆。
5.感謝您的留言,您的問題也可能幫助到其他有相同問題的人。