摘要:在日常的团队开发中,由于开发环境的不一致,往往会导致出现各种各样的问题。即便是经验丰富的工程师,在遇到这种问题时也会特别头疼。为了解决这种问题,...顺势而生

最近因为一个项目需要用到laravel这个为WEB 艺术家创造的 PHP 框架,在开发中遇到了很多问题,这里我总结一点,也就是统一一致的开发环境。
在日常的团队开发中,由于开发环境的不一致,往往会导致出现各种各样的问题。即便是经验丰富的工程师,在遇到这种问题时也会特别头疼。为了解决这种问题,Vagrant 顺势而生!Vagrant 是一个用于创建和部署虚拟化开发环境的工具,其依赖于 VirtualBox 虚拟机,致力于帮助开发者快速构建一个环境统一的虚拟系统。Vagrant 最强大的地方是在于它在构建虚拟系统时的快捷简便,使开发者可以在短短几分钟内完成一个虚拟系统的删除与构建。是不是特别牛逼,像往常你要要准备好很多环境所需要的文件,然后一个一个配置,而使用Vagrant则一到几句命令在几分钟内就可以完成,瞬间秒杀你之前的手动配置。

还有一个对于开发者更为友好和谐,Laravel 希望在 Vagrant 的基础上让开发环境更加统一,让开发者都能在指定的具体开发环境下使用 Laravel,这时便有了 Homestead。Homestead 是一个基于 Ubuntu 构建的虚拟机,它包含了所有 Laravel 开发时需要用到的东西,你可以很轻松的通过指定的 Laravel 版本来找到相对应版本的 Homestead 并进行安装。Homestead 提供的默认开发环境还会装上很多常用的开发工具来辅助 Laravel 进行项目开发,包括 PHP7, Nginx, Redis, Memcached, MySQL, Git, Node.js, NPM 等等。

有一点就很不和谐了,但是为了开发还是勉强委屈一下,毕竟官方人家推荐(要求)了。
Homestead 是 Laravel 官方推荐的开发环境。

Homestead 是很重要的技能点之一;
Homestead 统一了环境,避免歧义,减少新手在学习中遇到不必要的卡顿;
统一环境带来的好处还有:当你遇到问题的时候,其他同学能很容易的帮助到你;
最大程度接近线上生产环境,为后续的开发操作做铺垫;
这是最佳实践,是需要从一开始培养起来的好习惯。
在现实的 Laravel 项目开发中,比较正经的团队都会把 Homestead 当做绝对的开发环境要求。

因为 Homestead 有以上优点,但是还是有缺点的,这个缺点只有在我们天国才有的,你懂得了吧。这是就需要为此定制了专属的 Homestead 环境,定制版的 Homestead 环境预装了必须的软件,软件的配置也依照国内网络环境做了优化,如配置了 NPM 和 Composer 国内镜像加速等。

需要郑重提醒的是:你必须使用『定制版的 Homestead』,你如果在 非定制版 Homestead 环境下、或者其他开发环境下遇到问题,到时候你就知道了。原因是变量太多了,无法擅长所有系统以及各种版本软件搭配会出现的问题。最重要的,人生苦短,熟知这些 Bug,并没有意义。

这里总结一下:Homestead 和 Vagrant 的关系是什么呢?
vagrant 是管理虚拟机的工具,主要作用是提供一个可配置、可移植和复用的软件环境
VirtualBox 是虚拟机软件这个没有错
Homestead 里面包含了 Nginx Web 服务器、PHP 7、MySQL、Postgres、Redis、Memcached、Node,以及所有你在使用 Laravel 开发时需要用到的各种软件(Homestead Box 虚拟机盒子),它一套可配置的 Laravel 开发环境(Homestead 管理脚本)
其实刚开始的时候我也没有搞懂,后来仔细看了开发文档才知道