Vagrant Homestead

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

概念

  • VirtualBox -- Oracle 的虛擬機(jī)軟件
  • Vagrant 提供命令行接口,允許自動(dòng)化安裝虛擬機(jī),因?yàn)槭悄_本編寫的 provision 文本文件,給共享虛擬機(jī)配置提供了可能,Homestead 構(gòu)建在 Vagrant 之上。
  • Homestead 是 Laravel 官方封裝的一個(gè) Vagrant Box,是一臺(tái)虛擬機(jī)的虛擬機(jī)原型,運(yùn)行在 VirtualBox 上。

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

環(huán)境說(shuō)明

系統(tǒng):
macOS Sierra 10.12.4
虛擬機(jī):
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

// 測(cè)試 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.
// 語(yǔ)法錯(cuò)誤,需要為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 虛擬機(jī)
[~/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)

手動(dòng)克隆代碼倉(cāng)庫(kù)的方式來(lái)安裝 Homestead

# 克隆 homestead 項(xiàng)目到本地
[~/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 提供者(虛擬機(jī)類型)
provider: virtualbox
# 配置 SSH 認(rèn)證
authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa
# 配置共享文件夾,本機(jī)與 Homestead 環(huán)境自動(dòng)更新同步
folders:
    - map: ~/Code // 本地~/Code 目錄
      to: /home/vagrant/Code //虛擬機(jī)中文件夾
      type: "nfs" //若啟動(dòng) NFS
# 配置 NGINX 站點(diǎn)
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
# 修改配置后重新運(yùn)行
[~/vagrant/boxes/Homestead] vagrant reload --provision

啟動(dòng) Vagrant Box

# 啟動(dòng) vagrant 發(fā)生錯(cuò)誤
[~/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

# 啟動(dòng) 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 不存在,說(shuō)明依賴不完整。
composer update --no-scripts

訪問測(cè)試
http://homestead.app/

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

$ mysql -uhomestead -psecret

問題:
訪問 http://homestead.app 頁(yè)面出現(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)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容