laravel homstead开发环境构建

1 篇文章 0 订阅
1 篇文章 0 订阅

Laravel环境的搭建

Laravel以其优雅性著称,借鉴了Rails。Homestead 是 Laravel 官方推荐的开发环境, Laravel 希望在 Vagrant 的基础上让开发环境更加统一,让开发者都能在指定的具体开发环境下使用 Laravel,这时便有了 Homestead。

Homestead是什么?

Homestead 是一个基于 Ubuntu 构建的虚拟机,它包含了所有 Laravel 开发时需要用到的东西,你可以很轻松的通过指定的 Laravel 版本来找到相对应版本的 Homestead 并进行安装。Homestead 提供的默认开发环境还会装上很多常用的开发工具来辅助 Laravel 进行项目开发,包括 PHP7, Nginx, Redis, Memcached, MySQL, Git, Node.js, NPM 等等。

Homestead的好处

Homestead 统一了环境,避免歧义;统一环境带来的好处还有:

  1. 最大程度接近线上生产环境;
  2. 这是最佳实践,是需要从一开始培养起来的好习惯。

vagrant是什么?

Vagrant是基于虚拟机基础上以一种简单工作流构建和管理你的开发环境。主要目的是:
1. 减少开发时间构建;
2. 增加产品迭代;

官方文档:
这里写图片描述

Homestead安装

Homestead 包含了两个东西:

  1. Homestead 管理脚本;
  2. Homestead Box 虚拟机盒子;

首先介绍Homestead Box 虚拟机盒子:

homestead.box 虚拟机盒子是提前打包好的 Vagrant Box 虚拟机盒子,里面预装了 Nginx Web 服务器、PHP 7.0、MySQL、Postgres、Redis、Memcached、Node,以及所有你在使用 Laravel 开发时所需要用到的各种软件。

首先通过vagrant cloud官方地址查找:
这里写图片描述

可以看到homestead排名很高。

如何加载一个box,通过如下命令:

vagrant box add laravel/homstead

详细的vagrant box command可见官方文档

运行命令后会见如下:

vagrant box add laravel/homestead
==> box: Loading metadata for box 'laravel/homestead'
    box: URL: https://vagrantcloud.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) hyperv
2) parallels
3) virtualbox
4) vmware_desktop

Enter your choice: 3
==> box: Adding box 'laravel/homestead' (v5.1.0) for provider: virtualbox
    box: Downloading: https://vagrantcloud.com/laravel/boxes/homestead/versions/5.1.0/providers/virtualbox.box
    box: Progress: 0% (Rate: 30987/s, Estimated time remaining: 21:48:20)^C==> box: Waiting for cleanup before exiting...
==> box: Box download was interrupted. Exiting.
The box failed to unpackage properly. Please verify that the box
file you're trying to add is not corrupted and that enough disk space
is available and then try again.
The output from attempting to unpackage (if any):

x Vagrantfile
x box.ovf
x metadata.json
x ubuntu-16.04-amd64-disk001.vmdk: truncated gzip input
bsdtar: Error exit delayed from previous errors.

由于国内下载速度太慢,无法忍受,所以主动中断了下载。

该怎么办呢?网络上多数文章都指出在国内,非常推荐大家都直接使用本地 box 的方式安装 Laravel homestead:下载地址
但是按照网络上多数文章的指示发现:下载地址无法下载!!!!
这里写图片描述

看提示很有可能是资源被移走了,或者是一般用户没有权限访问,或者是homestead资源的所有者没有缴费。瞬间明白现实是多么残酷!

回头仔细看执行命令,发现有惊喜!!!

box: Adding box 'laravel/homestead' (v5.1.0) for provider: virtualbox
    box: Downloading: https://vagrantcloud.com/laravel/boxes/homestead/versions/5.1.0/providers/virtualbox.box
    box: Progress: 0% (Rate: 30987/s, Estimated time remaining: 21:48:20)^C==> box: Waiting for cleanup before exiting...
==> box: Box download was interrupted. Exiting.

存在一个地址:

https://vagrantcloud.com/laravel/boxes/homestead/versions/5.1.0/providers/virtualbox.box

这个就是下载地址,可以利用迅雷等工具下载,笔者直接翻墙下载了。

回过头来看box页面中详细信息:
这里写图片描述

如何使用这个盒子,按命令执行:

vagrant init laravel/homestead
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
richarddeMBP:test richard$ ls
Vagrantfile
richarddeMBP:test richard$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'laravel/homestead' could not be found. Attempting to find and install...
    default: Box Provider: virtualbox
    default: Box Version: >= 0
==> default: Loading metadata for box 'laravel/homestead'
    default: URL: https://vagrantcloud.com/laravel/homestead
==> default: Adding box 'laravel/homestead' (v5.1.0) for provider: virtualbox
    default: Downloading: https://vagrantcloud.com/laravel/boxes/homestead/versions/5.1.0/providers/virtualbox.box
==> default: Box download is resuming from prior download progress

可以看到关键信息:

Loading metadata for box 'laravel/homestead'
default: Downloading: https://vagrantcloud.com/laravel/boxes/homestead/versions/5.1.0/providers/virtualbox.box

这就证明了我们之前的下载地址是正确的。

对比发现两种方式,同样都是能加载homestead box,
第二种方式中出现了

Loading metadata for box 'laravel/homestead'

这也就是为什么网络上很多文章提供的本地加载box的压缩包中有一个metadata.json,大胆猜测这背后逻辑是通过metadata.json指明box的url。

vagrant box add metadata.json

过程如下:

richarddeMBP:lt-homestead-3-0-0-2017082400 richard$ vagrant box add metadata.json
==> box: Loading metadata for box 'metadata.json'
    box: URL: file:///Users/richard/Downloads/lt-homestead-3-0-0-2017082400/metadata.json
==> box: Adding box 'laravel/homestead' (v3.0.0) for provider: virtualbox
    box: Downloading: homestead-virtualbox-3.0.0.box
==> box: Successfully added box 'laravel/homestead' (v3.0.0) for 'virtualbox'!

检查box 安装情况:

执行如下命令:

vagrant box list
richarddeMBP:lt-homestead-3-0-0-2017082400 richard$ vagrant box list
laravel/homestead  (virtualbox, 3.0.0)
lookfwd/scrapybook (virtualbox, 1.0.0)

laraval homstead box就安装完毕,接下来就是homstead脚本安装。

下载 Homestead 管理脚本

homestead 官方地址, 执行如下命令:

git clone git@github.com:laravel/homestead.git

进入 homestead目录,目录如下:
这里写图片描述

执行

bash init.sh
richarddeMBP:homestead richard$ bash init.sh
Homestead initialized!
richarddeMBP:homestead richard$ ls
CHANGELOG.md        after.sh        composer.lock       readme.md       tests
Homestead.yaml      aliases         init.bat        resources
LICENSE.txt     bin         init.sh         scripts
Vagrantfile     composer.json       phpunit.xml.dist    src
richarddeMBP:homestead richard$ 

运行以上命令后,会在 ~/Homestead 目录下生成以下三个文件:

Homestead.yaml - 主要配置信息文件,我们可以在此文件中配置 Homestead 的站点和数据库等信息;
after.sh - 每一次 Homestead 盒子重置后(provision)会调用的 shell 脚本文件;
aliases - 每一次 Homestead 盒子重置后(provision),会被替换至虚拟机的 ~/.bash_aliases 文件中,aliases 里可以放一些快捷命令的定义。

Homestead.yaml配置文件

Homestead.yaml里的配置大致可以分为以下几种:

虚拟机设置;
SSH 秘钥登录配置;
共享文件夹配置;
站点配置;
数据库配置;
自定义变量;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值