Vagrant Homestead

構(gòu)建 VirtualBox 和 Vagrant 開發(fā)環(huán)境

概念

  • VirtualBox -- Oracle 的虛擬機軟件
  • Vagrant 提供命令行接口,允許自動化安裝虛擬機,因為是腳本編寫的 provision 文本文件,給共享虛擬機配置提供了可能,Homestead 構(gòu)建在 Vagrant 之上。
  • Homestead 是 Laravel 官方封裝的一個 Vagrant Box,是一臺虛擬機的虛擬機原型,運行在 VirtualBox 上。

Vagrant就是一款構(gòu)建虛擬開發(fā)環(huán)境的工具,支持window,linux,mac,總有一款適合你。并且vagrant 可以把配置好的環(huán)境打包成一個box,分享給其他人直接使用,非常方便。

環(huán)境說明

系統(tǒng):
macOS Sierra 10.12.4
虛擬機:
http://download.virtualbox.org/virtualbox/5.1.22/VirtualBox-5.1.22-115126-OSX.dmg
開發(fā)環(huán)境:https://releases.hashicorp.com/vagrant/1.9.5/vagrant_1.9.5_x86_64.dmg

// 測試 vagrant 版本
vagrant -v 

box系統(tǒng):

Ubuntu http://files.vagrantup.com/precise64.box

安裝 box

[~/vagrant/boxes]$ vagrant box add ubuntu64.box 
==> box: Box file was not detected as metadata. Adding it directly...
A name is required when adding a box file directly. Please pass
the `--name` parameter to `vagrant box add`. See
`vagrant box add -h` for more help.
// 語法錯誤,需要為box起名

[~/vagrant/boxes]$ vagrant box add ubuntu ubuntu64.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'ubuntu' (v0) for provider: 
    box: Unpacking necessary files from: file:///Users/junchow/vagrant/boxes/ubuntu64.box
==> box: Successfully added box 'ubuntu' (v0) for 'virtualbox'!

安裝 lnmp

// 創(chuàng)建 lnmp 環(huán)境
[~/vagrant/boxes] mkdir lnmp && cd lnmp
// 初始化 ubuntu
[~/vagrant/boxes/lnmp] vagrant init ubuntu
// 進(jìn)入 lnmp 虛擬機
[~/vagrant/boxes/lnmp] vagrant up
[~/vagrant/boxes/lnmp] vagrant ssh

// 安裝軟件
vagrant@precise64:~$ sudo apt-get install nginx mysql-server mysql-client php5-cli php5-fpm php5-gd php5-mysql

Laravel 虛擬開發(fā)環(huán)境 Homestead

https://vagrantcloud.com/laravel/boxes/homestead/

安裝 Homestead Vagrant Box

# 下載 Homestead 并添加到 vagrant box 中
[~/vagrant]$ vagrant box add Laravel/homestead
==> box: Loading metadata for box 'Laravel/homestead'
    box: URL: https://atlas.hashicorp.com/Laravel/homestead
This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.

1) parallels
2) virtualbox
3) vmware_desktop

Enter your choice: 2

# 查看 vagrant box
[~/vagrant]$ vagrant box list
laravel/homestead (virtualbox, 2.1.0)
ubuntu            (virtualbox, 0)

手動克隆代碼倉庫的方式來安裝 Homestead

# 克隆 homestead 項目到本地
[~/vagrant/boxes]$ git clone https://github.com/laravel/homestead.git Homestead

# 由于 Homestead 的 master 分支并不是穩(wěn)定分支,你應(yīng)該檢出已經(jīng)標(biāo)簽過的穩(wěn)定版本。
[~/vagrant/boxes]$ cd Homestead && git checkout v4.0.5

# 創(chuàng)建 Homesstead.yaml 配置文件
[~/vagrant/boxes/Homestead]$ bash init.sh 

配置 Homestead

[~/vagrant/boxes/Homestead] vim Homestead.yaml
memory: 2048
cpus: 1
# 配置 vagrant 提供者(虛擬機類型)
provider: virtualbox
# 配置 SSH 認(rèn)證
authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa
# 配置共享文件夾,本機與 Homestead 環(huán)境自動更新同步
folders:
    - map: ~/Code // 本地~/Code 目錄
      to: /home/vagrant/Code //虛擬機中文件夾
      type: "nfs" //若啟動 NFS
# 配置 NGINX 站點
sites:
    - map: homestead.app //本地域名
      to: /home/vagrant/Code/Laravel/public //文件映射地址

databases:
    - homestead
# 配置本地 host
[~/vagrant/boxes/Homestead] vim /etc/hosts
192.168.10.10  homestead.app
# 修改配置后重新運行
[~/vagrant/boxes/Homestead] vagrant reload --provision

啟動 Vagrant Box

# 啟動 vagrant 發(fā)生錯誤
[~/vagrant/boxes/Homestead]$ vagrant up
/Users/junchow/vagrant/boxes/Homestead/scripts/homestead.rb:117:in `read': No such file or directory @ rb_sysopen - 

# 重新生成 ssh 登陸認(rèn)證的 key
[~/vagrant/boxes/Homestead]$ ssh-keygen

# 啟動 vagrant
[~/vagrant/boxes/Homestead]$ vagrant up


登陸 Homestead 并安裝 Laravel

# 登錄Homestead
[~/vagrant/boxes/Homestead]$ vagrant ssh

# 修改鏡像地址
vagrant@homestead:~$ composer config -g repo.packagist composer https://packagist.phpcomposer.com

# 安裝 Laravel
vagrant@homestead:~$ cd Code && composer create-project laravel/laravel --prefer-dist

# 若 autoload 或 bootstrap 不存在,說明依賴不完整。
composer update --no-scripts

訪問測試
http://homestead.app/

mysql 數(shù)據(jù)庫
默認(rèn)賬戶密碼:homestead/secret

$ mysql -uhomestead -psecret

問題:
訪問 http://homestead.app 頁面出現(xiàn) no input file specified,檢查本地 Code 目錄代碼正常,檢查homestead 中 Code 發(fā)現(xiàn)里面沒有代碼。解決方法是重新同步 vagrant reload --debug


λ ~/ homestead                                                                                                            [22:57:57]
zsh: command not found: homestead

# 將~/.composer/加入環(huán)境變量 PATH
λ ~/ echo $PATH

λ ~/ sudo vim .zshrc 
 export PATH="/Applications/MAMP/bin/php/php7.1.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/junchow/.composer/vendor    /bin"

λ ~/ sourch .zshrc

# 查看~/.composer/vender/lavarel/ 下是否存在 homestead
λ ~/.composer/vendor/laravel/ composer global require laravel/homestead

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 話說作為laravel的開發(fā)者,你聽說Homestead應(yīng)該很久了,可是官方推薦的開發(fā)環(huán)境在國內(nèi)為什么鮮有人用?我...
    學(xué)著放下閱讀 48,102評論 48 76
  • 這幾天閨女一直很忙,而且又已懷孕。我希望這次是男孩,一個女兒,一個男孩多好啊!愿老天保佑。
    紅紅語錄閱讀 132評論 0 0
  • 覺得有意思:轉(zhuǎn)自《嘉谷種子》 聰明人都善用類推。圣人王陽明亦是如此。《傳習(xí)錄》中,有各種精妙的類比。讀之令人醍醐灌...
    petter102閱讀 391評論 0 2
  • 讀書時間:2017.1.15-2017.1.17讀書目的:大腦教育讀書筆記+心得:筆記: 1:正確的學(xué)習(xí)方法與勤奮...
    土食閱讀 437評論 0 0
  • 相識 我是去年認(rèn)識現(xiàn)在的老板的,同在一家公司認(rèn)識,他是跟我上家老板合作的 ,而我上家常拖延發(fā)工資,老板有沒有能說服...
    小小手Greatlylove閱讀 323評論 2 0