Vagrant Homestead

构建 VirtualBox 和 Vagrant 开发环境

概念

  • VirtualBox -- Oracle 的虚拟机软件
  • Vagrant 提供命令行接口,允许自动化安装虚拟机,因为是脚本编写的 provision 文本文件,给共享虚拟机配置提供了可能,Homestead 构建在 Vagrant 之上。
  • Homestead 是 Laravel 官方封装的一个 Vagrant Box,是一台虚拟机的虚拟机原型,运行在 VirtualBox 上。

Vagrant就是一款构建虚拟开发环境的工具,支持window,linux,mac,总有一款适合你。并且vagrant 可以把配置好的环境打包成一个box,分享给其他人直接使用,非常方便。

环境说明

系统:
macOS Sierra 10.12.4
虚拟机:
http://download.virtualbox.org/virtualbox/5.1.22/VirtualBox-5.1.22-115126-OSX.dmg
开发环境:https://releases.hashicorp.com/vagrant/1.9.5/vagrant_1.9.5_x86_64.dmg

// 测试 vagrant 版本
vagrant -v 

box系统:

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

// 创建 lnmp 环境
[~/vagrant/boxes] mkdir lnmp && cd lnmp
// 初始化 ubuntu
[~/vagrant/boxes/lnmp] vagrant init ubuntu
// 进入 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 虚拟开发环境 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 分支并不是稳定分支,你应该检出已经标签过的稳定版本。
[~/vagrant/boxes]$ cd Homestead && git checkout v4.0.5

# 创建 Homesstead.yaml 配置文件
[~/vagrant/boxes/Homestead]$ bash init.sh 

配置 Homestead

[~/vagrant/boxes/Homestead] vim Homestead.yaml
memory: 2048
cpus: 1
# 配置 vagrant 提供者(虚拟机类型)
provider: virtualbox
# 配置 SSH 认证
authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa
# 配置共享文件夹,本机与 Homestead 环境自动更新同步
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 发生错误
[~/vagrant/boxes/Homestead]$ vagrant up
/Users/junchow/vagrant/boxes/Homestead/scripts/homestead.rb:117:in `read': No such file or directory @ rb_sysopen - 

# 重新生成 ssh 登陆认证的 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 数据库
默认账户密码:homestead/secret

$ mysql -uhomestead -psecret

问题:
访问 http://homestead.app 页面出现 no input file specified,检查本地 Code 目录代码正常,检查homestead 中 Code 发现里面没有代码。解决方法是重新同步 vagrant reload --debug


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

# 将~/.composer/加入环境变量 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值