Laravel Homestead 新增站台

laravel logo

Laravel Homestead 是一個提供 PHP 或 Laravel 開發環環境,可以不用再花時間設定開發環境、搞爛目前本機上的環境。一開始,Homestead 會預設一個 homestead.app 的站台,但是,如果還要再開一個專案、增加新站台,該怎麼做呢?

Laravel 5.0 Homestead 文件增加更多站台裡面,有提供兩種方式:

  1. homestead provision 指令:具有破壞性,原本建立的資料庫會被刪除再建立一次資料庫架構,所以資料並沒有保留著
  2. 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

...
  1. folders:除了原本的設定只有一組,在新增站台之後,需要再新增一組掛載點
  2. sites:加入設定新站台的主機名稱、專案路徑、是否啟用 HHVM 來執行

接著啟動 Homestead 虛擬機:

$ homestead up

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料