Laravel 安装和开发环境:Windows 下开发环境抉择 1 个改进

多个不同的环境

一般情况,Web 商业项目会有以下几个运行环境,也就是你写的代码最终会运行在这些环境上:

  • 我的开发环境
  • 队友的开发环境
  • 线上测试环境
  • 生产环境

混乱环境

以下是一个混乱的例子:

  • 我的开发环境 - 小明使用的是公司电脑,系统是 Win7, WAMP 集成环境;
  • 队友的开发环境
    • 队友 A,使用的是自己使用多年的戴尔笔记本,系统是 Win8,用的是 XAMPP;
    • 队友 B,使用的是公司电脑,但是他自己重装系统到最新版本的 Win10,自己配置的 PHP 环境;
  • 生产环境 - 标配的 LNMP( Linux, Nginx, MySQL, PHP),使用 laravel-ubuntu-init 构建。
  • 线上测试环境 - 一般要求是跟生产环境一模一样。但是在我们这个例子里,为了偷懒省去了这个环境。

环境的问题

同一份代码,不同环境的话,会经常面临这样的问题:
小明兴高采烈的提交了新功能代码,队友 Pull 下代码后,发现代码无法运行。经过一番仔细排查和搜索,原因是:

PHP 不同版本不兼容,php.ini 或者 my.ini 配置不一致。

终于解决掉问题并上线,但是,网站当场挂掉,老板在质问,产品经理在大叫这是谁干的,一下子整个团队陷入混乱。最终发现:

原来是 大小写敏感,Windows 下文件路径不区分大小写,Linux 却对大小写严格,一运行就直接 Fatal Error。

Windows 和 Linux 不兼容的还不止 文件路径大小写敏感 问题。

相对于 Windows 来说,Linux 为多用户操作系统,不同于 Windows 操作系统,在 Linux 上存在许多权限的问题,还需要时时刻刻关注文件的权限。

软件缺失

除了代码质量无法保证的问题以外,本机开发还面临系统软件限制的问题。你正在开发的公司的项目,需要使用一些系统软件,如 MongoDB, Elasticsearch, Cron, ImageMagick, 等。

如果在 Mac 下要去安装这些软件,你就会发现你的电脑配置会变得越来越凌乱。而 Windows 下,有些软件根本就没法安装,并且很难找到替代品。如 Laravel 官方推荐队列使用的 Supervisor 或者 ImageMagick 等。这时候你就会感叹,使用集成环境是多么不成熟的做法。

唯一的标准

开发环境好坏的衡量标准,是看其:

是否最大程度接近于线上生产环境

这个接近不局限于系统,还包括所安装的软件发行渠道,软件版本(PHP 7.1 or PHP 5),软件配置(php.ini, my.conf) 等。

最严谨的方案是把线上服务器复制下来,包括里面所有安装的软件。Laravel 的 Homestead 就是为了这个目标而发明出来的。

如何选择环境?

Homestead 有一个致命的弱点,安装步骤比集成环境要复杂的多。并且因为是虚拟环境,对系统和硬件会有虚拟化支持的要求。

那么,要如何选择呢?以下是一些建议:

如果你刚 入门 Laravel ,想快速开始,或者是硬件不支持虚拟化,建议选择 Laragon 等集成环境。

如果你是决定了要成为一个专业的 Laravel 开发者,为了防止后面出现环境不兼容的错误,或者你想尽量接触 Linux 环境,请早日选择 Homestead(或者 Laravel Sail/Docker)。

另外,团队开发,也是一个比较重要的考虑因素。如果有好多人为同一个项目编码,选择 Homestead 来统一大家的环境是很有必要的。不止 PHP 版本,MySQL 、Redis,以及不同系统 下不同的软件版本,都会有一些差异。

本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 2

刚看laravel的时候,也没看到到底怎么装,又是这个网站又是那个网站的反复横跳,早知用Homestead何必折腾这么多! //狗头

2年前 评论

昨天装了半天Homestead,然后失败,随后打开我的wampserver,嘿嘿

6个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!