快速安裝 Laravel Homestead 環境

分享 appleboy ⋅ 于 3年前 ⋅ 最后回复由 knewmei 3年前 ⋅ 4990 阅读

本文章同步發表於 My Blog: 快速安裝 Laravel Homestead 環境

在看本篇安裝教學前可以參考翻譯完成的 Laravel Homestead,此篇會紀錄如何在 Ubuntu 底下快速架設 Laravel 環境,對於一般新手而言,剛開始安裝 Laravel 開發環境一定會遇到許多問題,為了解決開發環境,Laravel 推出 Homestead 搭配 Vagrant Box,讓初學者不用為環境問題而煩惱,減少浪費時間在架設 Laravel。簡單來說 Laravel Homestead = Vagrant + VirtualBox + Laravel 安裝包。底下簡單幾個步驟就可以完成 Laravel 開發環境。

步驟一:事前準備

由於 Laravel Homestead 是由 Vagrant + VirtualBox 組成,所以環境請先安裝好這兩個套件

假如您是 Windows 開發環境,請多安裝 Bash Tool,完成後你需要透過 Vagrant 下載封裝好的安裝包

$ vagrant box add laravel/homestead

由於檔案還蠻大的,需要一段時間,請耐心等候

步驟二: 安裝 Homestead 程式碼

此部份為 Vagrant 的設定檔,請直接抓取官方 Homestead 程式碼

$ git clone https://github.com/laravel/homestead.git Homestead

步驟三: 設定虛擬目錄

此步驟為設定開發虛擬目錄及相對應主機名稱,請先打開 Homestead.yaml

---
ip: "192.168.10.10"
memory: 2048
cpus: 1

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: ~/Code
      to: /home/vagrant/Code

sites:
    - map: homestead.app
      to: /home/vagrant/Code/Laravel/public

variables:
    - key: APP_ENV
      value: local

這邊需要注意的就是 folderssites 兩項設定,假設今天你有兩個 Laravel 網站需要設定,環境相關路徑如下

# 網站一
主目錄: /home/git/laravel_1
public 目錄: /home/git/laravel_1/public
網域名稱: a.tw
# 網站二
主目錄: /home/git/laravel_2
public 目錄: /home/git/laravel_2/public
網域名稱: b.tw

則我們在 Homestead.yaml 內則設定如下

folders:
    - map: /home/git/laravel_1
      to: /home/vagrant/laravel_1
    - map: /home/git/laravel_2
      to: /home/vagrant/laravel_2

sites:
    - map: a.tw
      to: /home/vagrant/laravel.tw/public
    - map: b.tw
      to: /home/vagrant/laravel.tw/public

步驟四: 設定主機名稱

設定連接虛擬目錄的網域名稱,請打開 /etc/hosts 加入兩行設定

127.0.0.1 a.tw
127.0.0.1 b.tw

之後就可以透過這兩個虛擬網域來開發了

步驟五: 啟動 Vagrant up

最後請在 Homestead 目錄下執行 vagrant up 啟動訊息可以發現底下 port mapping

default: 80 => 8088 (adapter 1)
default: 3306 => 33060 (adapter 1)
default: 5432 => 54320 (adapter 1)
default: 22 => 2222 (adapter 1)

如果 port 已經被佔用,請修改 scripts/homestead.rb

# Configure Port Forwarding To The Box
config.vm.network "forwarded_port", guest: 80, host: 8088
config.vm.network "forwarded_port", guest: 3306, host: 33060
config.vm.network "forwarded_port", guest: 5432, host: 54320

如果你要啟動時更新系統套件及 composer 話請加入底下程式碼

# Copy The Bash Aliases
config.vm.provision "shell" do |s|
  s.inline = "cp /vagrant/aliases /home/vagrant/.bash_aliases"
end

改成

# Copy The Bash Aliases
config.vm.provision "shell" do |s|
  s.inline = "cp /vagrant/aliases /home/vagrant/.bash_aliases"
  s.inline = "sudo apt-get update"
  s.inline = "sudo composer self-update"
end

透過 vagrant ssh 可以登入系統,目前系統預設環境已經升級到 PHP 5.6.0 了,感謝 Laravel 作者更新 Box。

PHP 5.6.0-1+deb.sury.org~trusty+1 (cli) (built: Aug 28 2014 14:55:42) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies
    with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies
    with Xdebug v2.2.5, Copyright (c) 2002-2014, by Derick Rethans

如果你的 Hoststead 並非是 5.6.0 環境,請直接透過 vagrant box update 更新 Box。最後補上啟動截圖

快速安裝 Laravel Homestead 環境

本帖已被设为精华帖!
回复数量: 20
  • duke-lee
    3年前

    :+1: 很给力, 很详细.

  • monkey 最重要的事,永远只有一件
    3年前

    赞,感谢同胞的分享

  • zhuzhichao Lalala Demacian !
    3年前

    不错:100: ,收藏了

  • caoglish
    3年前

    安装 phphub 的时候,按照 phphub 的流程做了一遍,体验了一下,vagrant 的确非常强大。设计思想也非常巧妙。现在是 window下代码,linux 环境运行,再也不用为运行环境不统一而烦恼了。Vagrant大法好呀 :joy:

  • Summer MOD A Life-long learner.
    3年前

    @caoglish vargrant 真是非常给力, homestead 更加是, Laravel 真的就是未来.

  • appleboy 熱愛 Laravel 及任何開源項目,目前專注於 Golang 及 PHP 發展
    3年前

    vargrant 真的很棒,也要感謝 Laravel 作者給 Box 環境 ..

  • gold3bear
    3年前

    国内在线安装很慢,我最后是用本地安装的。只要配置时候在最后引用box的本地路径就好了:vagrant box add laravel/homestead pathto/Homestead_0_1_7_virtualbox.box <br>我把box文件上传到百度云共享:http://pan.baidu.com/s/1gd48gcN

  • caoglish
    3年前

    的确,这个box太巨大了,700mb左右,1mb的下载速度,也要下载很久。

    另外 自己制作box的话,版本控制不容易做,改动一点可能就有700mb的数据,还是使用官方的省事

  • zzwind
    3年前

    @Summer 请问一下Laravel 多个site 有好的解决方法吗?
    例如区分前后台,怎么做比较好

  • appleboy 熱愛 Laravel 及任何開源項目,目前專注於 Golang 及 PHP 發展
    3年前

    @zzwind 你意思是說怎麼分配前後台嗎?然後同一個 Host?

  • zzwind
    3年前

    @appleboy 嗯 是这个意思

  • liguoyu {性别:男,爱好:女}
    3年前

    vagrant up时一直跳 default:warning:connection timeout.retrying... ,是怎么回事?

  • appleboy 熱愛 Laravel 及任何開源項目,目前專注於 Golang 及 PHP 發展
    3年前

    @liguoyu 是 SSH timeout 訊息嘛?

  • jasperck
    3年前

    官網提到Homestead.yaml要設定SSH金鑰,請問有需要嗎?還是預設這樣即可

  • appleboy 熱愛 Laravel 及任何開源項目,目前專注於 Golang 及 PHP 發展
    3年前

    @jasperck 要的

  • jasperck
    3年前

    thanks : )

  • ilvsx
    3年前
    - map: a.tw
      to: /home/vagrant/laravel.tw/public
    - map: b.tw
      to: /home/vagrant/laravel.tw/public

    这里的目录难道不是:laravel_1 和 laravel_2 么?

    - map: a.tw
      to: /home/vagrant/laravel_1/public
    - map: b.tw
      to: /home/vagrant/laravel_2/public
  • appleboy 熱愛 Laravel 及任何開源項目,目前專注於 Golang 及 PHP 發展
    3年前

    @ilvsx 你說的正確,不同專案要不同目錄

  • appleboy 熱愛 Laravel 及任何開源項目,目前專注於 Golang 及 PHP 發展
    3年前

    大家可以參考看看新版 Homestead 2.0 教學

  • knewmei
    3年前

    @appleboy 这个VI的配置很好看 能给一份配置文件么!

暂无评论~~

  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!