Laravel Homestead 是一個提供 PHP 或 Laravel 開發環環境,可以不用再花時間設定開發環境、搞爛目前本機上的環境。一開始,Homestead 會預設一個 homestead.app 的站台,但是,如果還要再開一個專案、增加新站台,該怎麼做呢?
在 Laravel 5.0 Homestead 文件的增加更多站台裡面,有提供兩種方式:
homestead provision
指令:具有破壞性,原本建立的資料庫會被刪除再建立一次資料庫架構,所以資料並沒有保留著server
指令:原本資料庫資料等都會留著,只是之後要做的步驟有點多
目前只試過第 2 個方式,因為需要把資料庫的資料留著。
Homestead 設定
在提如何在 Homestead 中新增站台前,先瞭解一下 homestead.yaml
的設定:
使用 Homestead 的時候是透過 homestead.yaml
來設定,基本上執行 homestead init
初始化 Homestead 環境後,會產生一個預設的 homestead.yaml
(可以透過 homestead edit
來編輯),裡面的設定大約是:
--- ip: "192.168.10.10" memory: 2048 cpus: 1 provider: virtualbox authorize: ~/.ssh/id_rsa.pub keys: - ~/.ssh/id_rsa folders: - map: ~/Code to: /home/vagrant/Code/VMS type: "nfs" sites: - map: homestead.app to: /home/vagrant/Code/Laravel/public hhvm: true databases: - homestead variables: - key: APP_ENV value: local # blackfire: # - id: foo # token: bar
homestead.yaml
主要是設定虛擬機的網路、硬體規格設定、SSH 公私鑰認證、掛載的路徑、Nginx 站台、資料庫及環境變數等。
稍微知道 homestead.yaml
的功用之後,接下來就可以說明如何新增站台。
1. 修改 /etc/hosts
建立一個站台名稱,Linux/BSD/Mac 等,修改 /etc/hosts,Windows 則是C:\Windows\System32\drivers\etc\hosts,加入以下內容:
192.168.10.10 fmbase.app
因為,自訂的站台名稱並沒有加入到 DNS 中,所以,加入到 /etc/hosts 中,這台主機就能使用 fmbase.tw 網域名稱連線到虛擬機。
2. 增加虛擬機站台設定
Homestead 虛擬機中,由 Nginx 作為網頁伺服器,所以新增站台也需要增加 Nginx 的設定,但是 Homestead 提供了簡便的方式來設定 Nginx。
首先,利用 SSH 連線到 Homestead 虛擬機中:
$ ssh vagrant@127.0.0.1 -p 2222
順帶一提,依照 Laravel 日常使用文件中的設定,來設定 alias,可以直接輸入 vm
指令。
登入 Homestead 虛擬主機之後,只要利用 serve
指令,就能很簡單的新增 Nginx 設定:
$ mkdir -p ~/www/Fmbase $ serve fmbase.app /home/vagrant/www/Fmbase/public/
3. 新增資料庫
除了新增 Nginx 設定之外,還需要新增資料庫:
$ mysql -u homestead -p password: ... mysql> CREATE DATABASE [DATABASE_NAME] CHARACTER SET utf8;
Homestead 資料庫的密碼預設是 secret
4. 新增 Laravel 專案
在主機上新增一個 Laravel 專案,虛擬機重開時會自動將這個新專案掛載到相對站台的路徑中。
$ laravel new fmbase
6. 編輯 homestead.yaml
接著要設定 Homestead 虛擬機,所以需要修改 homestead.yaml
設定檔。
在編輯前,先關閉 Homestead 虛擬機:
$ homestead halt
利用 homestead edit
來編輯 homestead.yaml
內容:
... folders: - map: ~/git/fmbase to: /home/vagrant/www/Fmbase type: "nfs" - map: ~/Code/ to: /home/vagrant/Code/ type: "nfs" sites: - map: homestead.app to: /home/vagrant/Code/Laravel/public hhvm: true - map: fmbase.app to: /home/vagrant/WWW/Fmbase/public hhvm: true ...
- folders:除了原本的設定只有一組,在新增站台之後,需要再新增一組掛載點
- sites:加入設定新站台的主機名稱、專案路徑、是否啟用 HHVM 來執行
接著啟動 Homestead 虛擬機:
$ homestead up
發佈留言