[Laravel 學習筆記] 使用 Laravel Homestead 設置開發環境
本系列 Laravel 教學筆記將參酌 Laravel 4 From Scratch、Laravel 5 From Scratch、Laravel 官網和 Laravel 中文官網 相關資訊進行撰寫(以 Laravel 4 From Scratch 為主)。本篇將記錄如何設置 Laravel 開發環境教學。根據官方網站說明:Laravel Homestead 是一個官方預載的 Vagrant「封裝包」,提供開發網頁程式的所有所需軟體和環境,更重要的是它使用 Virtual Machine 和本機端的環境是獨立的!這樣做除了不用為了架環境重新安裝套件外,更毋須弄髒環境,甚至可以保持開發和上線的環境的一致性。更重要的是若是不小心玩壞你的機器,了不起重新再開一次機器就好,砍掉重練,不用怕!
根據官方網站描述 Homestead 提供了豐富的內建軟體:
內建軟體
1. Ubuntu 14.04
2. PHP 5.6
3. Nginx
4. MySQL
5. Postgres
6. Node (With Bower, Grunt, and Gulp)
7. Redis
8. Memcached
9. Beanstalkd
10. Laravel Envoy
11. Fabric + HipChat Extension
在啟動 Homestead 環境之前,必須事先根據對應的作業系統安裝 VirtualBox 和 Vagrant 兩套軟體。安裝上只要按著步驟走,基本上不會遇到太大問題,若完成後可以在 terminal 輸入 vagrant,若正常將出現指令資訊。
當上述的兩個軟體都安裝完成後,就可以在 terminal 執行下述指令,將 'laravel/homestead' 封裝包安裝進你的 Vagrant 安裝程式中(此步驟會花一些時間,可能數十分鐘甚至更久,視網路狀況而定):
vagrant box add laravel/homestead
接下來我們必須先建立一個我們之後想在本地端放置我們應用程式的資料夾,目錄中放置所有欲開發的 Laravel 專案(可以有很多專案),如此 Homestead 封裝包就可以運行你所有的 Laravel(和 PHP專案),進到資料夾後在 terminal 執行以下指令,執行完會產生一個 Homestead 資料夾:
git clone https://github.com/laravel/homestead.git Homestead
(按:Git 是一套分散式版本控管系統,是現代開發必須熟習的工具,就像 Benhance 和 Dribbble 是設計師的必備的作品存放軍火庫一樣,Github 則是工程師的身分證呀!若還不熟悉指令可以參考 try Git)
接下來我們將設定 Homestead 資料夾內的 Homestead.yaml 檔案,建立虛擬機器和本地端的連結。
圖一、Homestead.yaml 檔案設定
在 Homestead.yaml 檔案中有幾個屬性需要設定(IP 是自己帶入,這邊先打上馬賽克 : P):1. authorize、keys:這兩個屬性是有關 SSH 金鑰設定,若沒有產生過 SSH 金鑰的話可以使用以下指令產生:
ssh-keygen -t rsa -C "your@email.com"
輸入後會詢問你要放置的位置(若空白則是預設值)和是否要加上辨別碼(passphrase),建議可以輸入(不過要妥善保管),之後會用到。完成後將金鑰產生位置放置到 authorize 和 keys 所對應的位置,記得 authorize 放的是 .pub 的公鑰。
2. folders:本機端和虛擬機的對應資料夾,會讓兩者自動同步。 map 是放本機端開發資料夾,to 則是開的 Ubuntu 的位置,若不清楚先設預設值,等 ssh 登入虛擬機後再調整。
本機端結構範例(若設定好將和虛擬機同步)
-Code
-Homestead
-my-first-laravel-app
-my-second-laravel-app
3. sites:map 可以讓本機端瀏覽器輸入位置(這邊預設值設定為 homestead.app,也可以自己命名)即可連上虛擬機的伺服器(對應到一個網域),亦可以設置多臺機器。to 設定為虛擬機上 Laravel 的 public 資料夾。
記得要在本機端的 hosts 檔將「網域」加進去(這邊是 homestead.app)。
127.0.0.1 homestead.app
按:hosts 檔會將你的本地網域的站台請求重導至你的 Homestead 環境中。在 Mac 和 Linux,該檔案放在 /etc/hosts。若是在 Windows 環境中,它被放置在 C:\Windows\System32\drivers\etc\hosts。4. variables:放置環境變數,此處只放 APP_ENV,辨別是否為開發中或是已上線(production)。
若設定沒問題的話可以在移動到 Homestead 資料夾並在 terminal 輸入啟動虛擬機,並設定同步共享的資料夾和 Nginx 伺服器(需要等一些時間):
vagrant up
圖二、若遇到 port 被佔用,請更改 scripts/homestead.rb
此時打開瀏覽器輸入以下網址應該就可以看到 Laravel 歡迎畫面:
http://homestead.app:8000
若有設定檔更新,需要重啟虛擬機可以用以下指令先終止,後再開啟虛擬機
vagrant halt
若是伺服器已經啟動,可以透過 ssh 連線來連到伺服器
vagrant ssh
如果想要從本機上透過 Navicat 或 Sequel Pro 連接 MySQL 或者 Postgres 資料庫,你可以連接 127.0.0.1 的埠 33060 (MySQL) 或 54320 (Postgres)。而預設帳號密碼分別是 homestead / secret。(亦可以自行安裝 phpMyAdmin)
如果需要增加 sites,可以先在 Homestead.yaml 檔案中增加站台然後執行 vagrant provision(有時也會需要用到)。
參考文件:
1. Laravel 中文官網
2. Laravel 官網
3. Laravel 4 From Scratch
4. Laravel 5 From Scratch
5. SSH 免密碼登入
6. ssh keygen 免輸入密碼
7. How to setup phpmyadmin on a Laravel Homestead box?
8. 快速安裝 Laravel Homestead 環境
9. #Laravel #Homestead on #Windows - Gists - GitHub
10. Using Laravel Homestead as Your Development Environment
11. Laravel Homestead can't connect to db
*12. Getting Started with Laravel Homestead