为什么必须使用 Homestead 来开发 Laravel 应用?

file

文章说明

运营社区多年,经常遇到很多新手询问能不能不装 Homestead,有些同学还在朋友的推荐下使用了 WAMP, MAMP, PHPStudy 等集成环境。

个人开发 PHP 也有六七年时间了,各种集成环境、自建的 Windows 环境等都使用过。一路走来,踩坑太多,所以对虚拟机开发环境非常推崇。以至于在 《Laravel 教程 - Web 开发实战入门》 中,Homestead 也是作为唯一的学习开发环境。

新手开发者,如果你身边有优秀的开发者,或者比较靠谱的 Team Leader,他们会毫不犹豫的让你使用 Homestead,不给你更多理由。此篇文章不讲太多技术细节,而是从一些反面例子和经验,来向你阐述为何你需要使用 Homestead。

踩坑不完全统计

先讲五个例子,这五个例子是我在运营 Laravel China 社区时注意到的,在此做下收集和总结。这些前人的经验,希望能为你带来一些启示,同时这里也感谢这些作者的知识分享。

请注意,这是一个不完整列表。事实上,使用 Windows 你可能会踩的坑比这个要多得多,这只是冰山一角。

1. 多个 Laravel 应用数据库连接错乱?

来自文章:大家有没有遇到多个应用中数据库连接错乱问题?

『多个应用中数据库连接错乱。同事无意中发现,在多个基于Laravel 的 Web 应用中,当应用 A进行一个长时间操作时(PHP 会运行超过30s+),在这期间,在应用 B 中进行数据库操作时, B应用会连接到 A 应用中的数据库,而非 B 的数据库。』

在此贴中,作者细致地做了各种分析,估计也是花了不少时间在 Debug 这个问题,最后原因是 Windows 下的 .env 没加载上。

2. Lavarel 应用突然无法登录?

来自文章: Laravel 登录报错 Crypt : The Mac is invalid

用 lavarel 框架写的项目,今天登陆突然提示 “The MAC is invalid.” 有没有人遇到过这种情况?

最后原因是 Windows 下的 .env 没加载上,导致系统底层的加密解密功能出错。

3. Laravel 不支持高并发?

来自文章:Laravel 不支持高并发?

我在用 $.post 刷一个 url 的时候(用鼠标点按钮触发,大概一秒钟3、4次吧),按这个速度,大概每隔个十几二十次,就会报一个500错误:Whoops, looks like something went wrong.没有更具体的错误提示了。

一个神鬼莫测的问题,让一个即使是 十几年开发经验的老鸟,也栽坑里。

4. .env 不支持中文?

来自:关于 Laravel 的.env 配置不显示的问题

在使用 laravel 开发的过程中,我把项目名称放入了 .env 配置文件里面再用 env() 方法调用,发现三个中文的情况下只能返回 default 值。

最后作者的答复是:『在 Mac 上能正常,Windows上三个字不能显示。』

5. Mac 环境也不行?

来自:一个小坑提醒:某个 Class 或某个 Trait 突然找不到

“我 Mac 本地没问题啊!”
“但是为什么 Linux 服务器上报这个错啊???”
“太诡异了,这怎么查?”

上面几个例子讲的都是坑爹的 Windows 开发环境下的 BUG。这个例子中,@lijinma 金马的同事很不幸的踩了 Mac 的坑,金马同学很大方的分享了出来,详细的解说了这个坑出现的原因,并且也提供了解决方案。

但是其实,最好的解决方案应该是:在一开始开发的时候,就是用 Homestead。

非虚拟化环境会有什么问题?

一般来说,一个 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 等。这时候你就会感叹,使用集成环境是多么不成熟的做法。

使用 Homestead 有哪些好处?

Homestead 基于 Vagrant 提供的便利,定制了一整套的可配置、可移植和复用的 Laravel 开发环境。homestead.box 是一台 Ubuntu 16 虚拟机,里面包含了 Nginx Web 服务器、PHP 7、MySQL 5.7、Postgres、Redis、Memcached、Node,以及所有你在使用 Laravel 开发时需要用到的各种软件。

使用 Homestead 能解决掉上面讲的开发环境不一致的问题,并且你也可以选择使用 laravel-ubuntu-init 布置服务器,来达到开发环境和线上环境的统一。

Homestead 另一个优势在于,提供了极其简单易用的接口,使我们只需要通过傻瓜化配置 Homestead.yaml 文件,即可完成复杂、重复的任务。如 Nginx 站点创建,数据库创建,文件夹挂载等,为日常开发提供了便利。

是否可以使用 Docker ?

可以,如果你是新手的话,不推荐这么做。Homestead 是官方推荐的做法,作为最佳实践,最好按着标准来。

结语

作为 Laravel 新手,如果你立志成为一名优秀的 Laravel 工程师,请从现在开始使用 Homestead。

推荐阅读

本作品采用《CC 协议》,转载必须注明作者和本文链接
摈弃世俗浮躁,追求技术精湛
本帖由系统于 6年前 自动加精
Summer
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 115
Summer

@andu 你用着好用就行啦,别再乱建议啦,再建议我都要把你屏蔽了哦 :smile_cat:

6年前 评论

个人感觉作为一个后台开发人员,只会写代码是不行的,虽说有运维这个岗位(但大多小公司后台开发兼运维),但必要的类线上环境搭建能力是需要有的,如果一味使用homestead,无疑失去了在学习开发过程中顺带学习环境部署能力,最后有可能会成为一个只会写代码的后台开发,在上家公司我就遇到过一个新来的两年开发经验的php开发,就是经典地只会写代码,BOSS让他在公司测试机上搭个虚拟机跑代码,方便跟其他系统集成(公司有一台超级主机,部署了很多虚拟机,用来模拟线上的服务器集群,保证测试环境与正式环境的一致性),他直接懵逼,虚拟机搭得一趟糊涂,还得麻烦别人帮忙解决他环境的坑,不然他自个写的代码都完全跑不动。因此,个人建议开发也用虚拟机,顺带学习如何在linux中部署自己需要的环境,当BOSS需要你去部署线上测试环境甚至是正式环境时,才有能力做到,体现自己的价值不仅仅只是写代码。

5年前 评论
Summer

@Prefect丶 哥,上面也有很多朋友提到过 docker 环境,我来讲下我个人的选择。

Laradock 出现时体验过一段时间 ,Laradock 的优势是创建虚拟机速度快,运行效率高,没有虚拟机的暖手弊端。创建虚拟机方面,不是经常做的事情,慢个一分钟还是可以忍耐的,暖手的事情,现在很少揣着电脑随地写代码,也不算问题。

除非我的服务器会使用 Laradock 来部署,否则我不会正经的使用 Laradock 做我的开发环境。

我只会选择完整的 虚拟线上环境(Linux,Ubuntu),并且不只是系统,就连 PHP 、Nginx、MySQL 等软件我都希望使用的是用 同一个安装包 。利用 这个脚本 可以使得服务部署地跟 Homestead 虚拟机的环境非常接近,当然,生产环境下系统和软件会做安全方面的微调。

我更愿意将时间花费在创作有价值的产品上。不愿意花费哪怕一丁点时间在处理兼容问题上。因为经验告诉我,那完全就是在浪费生命。

6年前 评论

虚拟机坑多,且慢卡,体积大,你让哪些普通笔记本怎么搞?使用vs code+wamp开发laravel,速度快,vs code多个项目切换方便,开发速度绝对不比虚拟机慢,而且方便很多。如果说要掌握Linux命令啥的,买个腾讯云或者阿里云,真实环境,不是更好?
推荐放弃虚拟机,直接用vs code + wamp + 腾讯云开发测试,抛弃虚拟机vagrant。

6年前 评论
Summer

@andu 嗯,推荐你好好学习,然后去买台好点的电脑吧。不只是为了虚拟机哦。

6年前 评论
王大牛 3年前
王大牛 3年前

金马同学很大方的分享了出来

哈哈哈哈

6年前 评论
Destiny

吼吼

6年前 评论
zoroo

:+1:

6年前 评论

终于来了。我等很久了呢

6年前 评论
medz

docker 是另一种生活方式。既能能保持开发和生产环境的一致性,也能。。。(如意如意,顺我心意。可长可短,可粗可细。)

6年前 评论

其实用了vagrant ,主机共享目录是大小写不区分的话,虚拟机里也是不区分的。直接mac里用brew也是很好的选择。docker又是另一个生活了。

6年前 评论
lijinma

哈哈哈哈哈哈哈

6年前 评论

虚拟机坑多,且慢卡,体积大,你让哪些普通笔记本怎么搞?使用vs code+wamp开发laravel,速度快,vs code多个项目切换方便,开发速度绝对不比虚拟机慢,而且方便很多。如果说要掌握Linux命令啥的,买个腾讯云或者阿里云,真实环境,不是更好?
推荐放弃虚拟机,直接用vs code + wamp + 腾讯云开发测试,抛弃虚拟机vagrant。

6年前 评论
Summer

@andu 嗯,推荐你好好学习,然后去买台好点的电脑吧。不只是为了虚拟机哦。

6年前 评论
王大牛 3年前
王大牛 3年前

@medz 自从用了docker就再也离不开了。

6年前 评论

@anyuzhe 开发涉及到不同的语言环境和数据库,就爱上了docker

6年前 评论

唯一的缺点就是:Homestead 虚拟机体积会越来越大

6年前 评论
颜⑧

不过最近发现一个问题, 没有网络的情况下,比如mac在断开wifi网络后,我以为192.168.10.10可以工作,毕竟是内网嘛 ,但是不知道为什么 ,如mysql 33060映射的端口不能用 :disappointed: 。后面就用vmware 装一个虚拟机 再跑你写的deploy-16.sh 安装环境,最后通过文件系统映射到Code目录。

6年前 评论

@Summer
之前刚开始学就是用虚拟机学起的,每天上班开电脑就是vagrant up,下班就是vagrant halt。我用的电脑都是比较好的,自己买的台式机,宁美国度 6666的,单位配的是联想p710,也用过mackbook 学习开发了laravel一段时间,但我还是觉得使用win10+vs code+wamp+SecureCRT方便(我之前都在学C#做点小网站)。买了腾讯云和阿里云的最低配服务器(680、1040/3year),自己测试够用,这样能看到自己做的站的效果。
坚决抛弃vagrant虚拟机,真的没什么用,能学到什么?Linux命令?使用secureCRT真真切切的去操作腾讯云服务器,那才是真实的生产环境吧。
再一次建议:抛弃vagrant虚拟机,使用win10+vs code+wamp+SecureCRT(腾讯云服务器等)学习开发laravel!!

6年前 评论

目前就碰到第三点,爆出的问题:

ocal.ERROR: RuntimeException: No supported encrypter found. 
The cipher and / or key length are invalid.
 in H:\wamp\www\Protavel\vendor\laravel\framework\src\Illuminate\Encryption\EncryptionServiceProvider.php:29

楼上的在给新出的腾讯云做广告呢?
开发Laravel用VS?开玩笑?

6年前 评论
Summer

@andu 你用着好用就行啦,别再乱建议啦,再建议我都要把你屏蔽了哦 :smile_cat:

6年前 评论

@Summer ok,新手的感受,没有学到更深的内容,过一段时间可能就会改变这样的观点了。阿里云现在做活动,给阿里云打广告(680/3year)。

6年前 评论

对于使用valet有没有什么建议

6年前 评论

@edwin404 docker到底怎么安装维护一直是心头的痛...门都没入了..

6年前 评论

工地电脑带不动是硬伤。。。

6年前 评论

另外出屏蔽功能了吗:smile:

6年前 评论
medz

@storefee 大哥,你开玩笑呢?楼上啥时候说用VS了?人家用的是 VS Code 推荐你先百度。

6年前 评论
medz

@andu 你用win10,我推荐你一个东西,win10自带 linux 子系统,在系统功能里面可以开启。

6年前 评论

@Summer ‘下次有新手问你可不可以不 Homestead 的话’应该是用

6年前 评论

@reatang 官网不是有详细的安装教程,跟着一步步来。

6年前 评论

@medz 不会呢,有时间百度一下看看这个怎么玩。

6年前 评论

人生苦短,我用 docker。

6年前 评论

valet 就已经非常方便了啊!

6年前 评论

用自己习惯的方式吧!过度的纠结一个服务器环境没什么意义。
不过不管哪种服务器环境,还是推荐用mac,windows真的不太适合做开发

6年前 评论

感觉直接使用linux开发也是可以的呀。

6年前 评论

@medz 嗯,搜搜看!谢谢提醒!

6年前 评论

@andu 做出来总是有用的。。。估计大家用的时机或者痛点还没到。。。呵呵

6年前 评论

@edwin404 英...英语有点苦

6年前 评论

@reatang 哈哈,好好学习天天向上

6年前 评论

@agogos
linux用户表示,我也用homestead,因为不想把自己的系统给搞乱了,用homestead出问题,可以直接销毁镜像

6年前 评论

一直在用vagrent 写个批处理加入开机启动就行~~

6年前 评论

唉, vagrant启动一个vbox直接蓝屏...................

6年前 评论

Valet 党表示看不懂你们再说什么 :see_no_evil:

6年前 评论

初学者首先可以独立的配置和调试出这些环境的坑,然后在使用Homestead来快速搭建开发环境。

6年前 评论
Summer

@colyii
@jacobsun
@whossun Valet 的实现原理是利用 DnsMasq 和 Nginx 来做到便捷本地站点部署,系统还是用着 Mac 系统。

Mac 下有文件夹路径问题,第五个问题都讲了这是其一。其二,对于相对复杂的项目,你用到队列,用到 MongoDB 或者 Cron,就会知道自己的开发环境是多么不成熟。

6年前 评论
Summer

@xxlv 为何要去调试这些坑?时间就这么廉价么。

使用 Homestead 的话,不论你是初学者,还是专业的开发者,都适用。初学者的目标是成为专业的开发者,为何不一开始就使用适用性更强的 Homestead 虚拟机环境,用着熟练的话,整个开发者职业生涯都能受益。

6年前 评论

@Summer 因为初学者最迫切需求的最宝贵的是经验而非时间。
两点支持我的观点:

  1. 调试不是在浪费时间(重复错误不算),而是尝试理解系统的运作过程
  2. 出现的错误信息将导致一个他对某一个技术栈区产生兴趣或者走的更深,比如调试https的时候,可能会导致对https产生兴趣。

站在这样一个角度,初学者只有大量时间,而没有足够经验的话,直接在一个可运行的环境中并不能让他产生多少经验。
一旦他经历过这些坑,那么,就不需要从头开始了。

6年前 评论
Summer

@xxlv 调试 PHP 在 Windows 下的 Bug,有助于理解 Windows 下 PHP 的运作过程,这是当然的,但是,我想问的是,你的服务器使用的是 Windows 吗?如果不是的话,积累这些经验有何用?

6年前 评论
宇宙最厉害

@medz 那个是 Ubuntu Linux On Windows 10 目前个人感觉有点坑,后来装了 Ubuntu 系统,用了 Homestead 虚拟环境。

6年前 评论
Summer

积累经验也要分 『有用的经验』和『浪费生命的经验』,在我看来 上面举的五个例子 就是属于在浪费生命。你能从这个经验 Laravel 不支持高并发? 学到什么吗?这就有点像路边下棋的破棋篓子一样,破棋篓子下再多的棋子,积累再多的经验,最终也是一个破棋篓子。

@xxlv 经验积累当然重要,但是要有区分的,这也是我为何费劲写这篇文章的原因。

6年前 评论

有志于成为专业、高级开发者的,请一开始就按照“职业化、专业化”的要求做去,听Summer的没错,会越来越顺。像我这样业余学学捣腾的,遇到问题容易退缩的,不以这个为职业的没什么坚持或追求的,怎么方便怎么来。

6年前 评论
long0 3年前
Bin

@andu 好吧 ,你这样说,看来把自己给圆回来了,哈哈哈。

6年前 评论

@Insua 你这么说很有道理。确实可以。

6年前 评论

docker不是更好吗,Mac本地开发我都是直接php -S 命令来跑的

6年前 评论

@Bin 可以这么说呢,也可以说我是对summer的崇拜+尊重。上面列的5点,在win10上好像就刷新出现500的错误存在,但我没同意部署也在windows上,而是开发测试。summer站在他的角度建议,当然是语重心长的很有意义的,所以我也从自身的角度说明情况,这样避免误导了一部分人。
站在我的角度,我还是建议新手和我一样,因为你没有summer他们这些高手快速解决bug问题的能力,初学者就是快速的积累经验,循序渐进,特别是像我这样半路出家,把时间花在掌握laravel上,而不是对部署小网站没啥用的虚拟机上。

6年前 评论
Summer

站在我的角度,我辛辛苦苦写篇文章的目的是为了在我的书里能加个链接:

file

是为了能分享我的经验给初学者。尤其是让 这本书 中的读者,能够从一开始树立起比较正确的认知,并且知道为什么要这样做。

@andu 然而你一直跟我对立着?我觉得你很没有礼貌呢!

把时间花在掌握laravel上,而不是对部署小网站没啥用的虚拟机上。

选择使用虚拟机来开发,是一件很严肃的事情。

短期来看,虚拟机能让产出的代码更加高质量,错误率更低,更加严谨,注意这个非常非常重要,因为作为程序员,我们是靠着编码在吃饭的人。在 Linux
虚拟机中,新手也可以一点点积累起 Linux 的操作经验,这个对初级程序员的成长会有莫大的帮助,很多公司招人时也会有 Linux 经验的要求

长期来看,以后参加工作,加入到团队开发里,保持使用虚拟机的习惯会让你准备充分。对于把编程作为终身职业的同学,即使一开始误入『本机开发』的坑,慢慢的随着经验积累,基本上在编码生涯的一个点上(一年两年三年),你会意识到虚拟机的重要性,而抛弃了本机开发。我个人是很少看到优秀的开发者不使用虚拟机的。说实在,如果一个开发者看不到虚拟机带来的好处,应该也不能算太优秀吧。

6年前 评论
Alex89

@Summer 哥,@andu 在帮你顶贴

6年前 评论
imxfly

@Alex89 Summer 哥的帖子应该具有 “自顶” 功能吧:stuck_out_tongue_closed_eyes:

6年前 评论

我是初学者,所以很多使用虚拟机的好处我没体会到,summer推荐肯定是有道理的。但如果说因为要熟悉Linux命令,为什么步直接购买个云服务器真实的去操作,比较和虚拟机还是有些差别的吧?把花在更换电脑上的钱去买云服务器,对于初学者,觉得是一举两得的事情。
我目光短浅,见识有限,但列举出来的理由并不高明。

6年前 评论
Summer

@andu

一般 Web 商业项目的项目会有以下几个运行环境:

  1. 我的开发环境 - Development
  2. 队友的开发环境 - Development
  3. 线上测试环境 - Staging
  4. 生产环境 - Production

你的云服务器,算是 线上测试环境,这里我们在讲开发环境,请先弄清楚这个概念。

另外,@andu 讨论归讨论,不用献媚,也不需要贬低自己。

我上面已经跟你讲过了,如果觉得自己太无知,那就别再乱建议啦,沉默即可。

6年前 评论

真理是越辩越明的嘛,我就是不清楚虚拟机能比win10好在什么地方,我看到的都是不好的居多。

6年前 评论

@Summer 哥,Laradock 你怎么看,我感觉比 Homestead 轻和简单

6年前 评论

个人感觉好事虚拟机好一些,一是可以保持线上生产环境, 线上测试环境,本机开发环境一致。另外一个就是可以快速将一个已经定制好的虚拟机,分发给新入职的同学,因为有些项目的环境搭建实在是太特么复杂了,需要搞好几天,而且这样也可以使所有成员保持一致的开发环境。

6年前 评论
Summer

@Prefect丶 哥,上面也有很多朋友提到过 docker 环境,我来讲下我个人的选择。

Laradock 出现时体验过一段时间 ,Laradock 的优势是创建虚拟机速度快,运行效率高,没有虚拟机的暖手弊端。创建虚拟机方面,不是经常做的事情,慢个一分钟还是可以忍耐的,暖手的事情,现在很少揣着电脑随地写代码,也不算问题。

除非我的服务器会使用 Laradock 来部署,否则我不会正经的使用 Laradock 做我的开发环境。

我只会选择完整的 虚拟线上环境(Linux,Ubuntu),并且不只是系统,就连 PHP 、Nginx、MySQL 等软件我都希望使用的是用 同一个安装包 。利用 这个脚本 可以使得服务部署地跟 Homestead 虚拟机的环境非常接近,当然,生产环境下系统和软件会做安全方面的微调。

我更愿意将时间花费在创作有价值的产品上。不愿意花费哪怕一丁点时间在处理兼容问题上。因为经验告诉我,那完全就是在浪费生命。

6年前 评论
OhMyZsh

工欲善其事,必先利其器,

6年前 评论

工欲善其事,必先利其器

6年前 评论

@jobsssss 哈哈,可以这么说。我认为summer最后的回帖更有说服力,可以分发开发环境,统一开发生产环境。

6年前 评论

@jobsssss 可能是我是业余学学laravel,工作电脑还要做其他用途,所以使用虚拟机可能会和其他软件冲突,这个是只是一部分原因,另外主要原因是开启虚拟机,每天下午电脑会有点卡。你说的不要把时间浪费在环境的搭建上,Windows10搭建好后的便利你没试过,不要妄下结论。可能是就是用些简单的包或者简单的业务逻辑,更深的技术也不会,我也只是站在新手的角度质疑一下,希望能引出高手为什么用虚拟机的真正原因。

6年前 评论

@jobsssss 对,这也是我想知道的,虚拟机里可以玩哪些“高级的”工具,只有在虚拟机里才能更顺畅的玩好。希望高手们都能说说。

6年前 评论

我现在用vagrant自己配了一个环境,开发用mac,运行是虚拟centos,非常好用。homestead增加了很多学习使用成本,而且我感觉学习homestead的配置使用比学php和laravel还难。。。

6年前 评论
SMVirus

对于像我这样最终需要将服务部署到 docker 容器中的场景,无疑开始便使用 docker 会更加适合。
如果线上环境是固定部署在某台机器上的,那开发环境确实用 Homestead 会好一些。
在我看来这无非是个选择问题,选择最接近测试和生产环境的方式进行开发,在上线环节可以减少很多不必要的麻烦。

file

6年前 评论

见解多数是相同的,生产环境和测试环境的重要性

6年前 评论

homestead 的各种好处文章说的非常好。:+1:

不过也有一些痛点,之前给团队同学一部分同学配置了 homestead (默认配置),但是普遍反映经常虚拟机崩溃、虚拟机死机(PC 都是联系、戴尔正版系统,并且固态硬盘)。关键是运行速度很慢,反正一直用 valet 的我是看不下去的。

6年前 评论

@jobsssss

3、多进程,虽然php很少用多进程,但是不代表就用不到,比如我前端是间做了个爬去程序,开了多个子进程,这个在windows下是无法做到的。

这个其实是可以实现的,比如网吧的计费系统,必须是windows环境,如果这个时候需要用到多进程,就只能解决你说的这个问题,但是具体怎么实现的我已经忘记了,如果有兴趣的话可以翻翻资料找一下:smile:

6年前 评论
沙渺

正确看待artisan serve或自搭集成环境的玩具性质。玩具不能承担项目开发(实际业务、整项目实战学习)的大任,但对不形成项目的小任务(安利他人、原型演示、学习个别知识点、尝试个别新软件包)也很方便。

一旦形成项目,立刻停止偷懒,这是最重要的。

6年前 评论

确实很有必要,像supervisor,crontab也只有在linux下才好测试

6年前 评论

你们上面说的各种优点我也很认同,@andu 说的不搞同一环境也是有必要的,现在很多的php程序很挑运行环境,兼容性太差。我最喜欢的php程序是高质量的兼容性好的,大部分php环境都可以跑的。

兼容性差的php程序,需要专门的环境,一台主机就得要专门为它配置,如果一台主机上要运行多个php程序,简直是噩梦,不多说了,搞过的人都懂得……

6年前 评论

作为小白,听话照做就对了

6年前 评论

刷出500错误是laravel防止单个IP访问 频率过快吧

6年前 评论

之前一直用valet,上周把课程全买了,今天跟着第一本书走了一遍,决定以后放弃valet改用homestead,就为了不浪费生命。

6年前 评论

神仙打架,已买教程,学习中

:laughing::laughing:

6年前 评论

我是用的VM 安装的Ubuntu16配置的LNMP环境

6年前 评论

Mac 也遇到了 env 无法读取值

6年前 评论

没事了,知道原因了,把config给cache了

6年前 评论

我之前都是在本地开发,后来就直接买了服务器,在linux上面搭建环境直接开发,我想问问在本地使用各种集成环境好还是在服务器开发好@Summer

5年前 评论

哈哈哈,我也是个新手,所以乖乖照做就对了

5年前 评论

个人感觉作为一个后台开发人员,只会写代码是不行的,虽说有运维这个岗位(但大多小公司后台开发兼运维),但必要的类线上环境搭建能力是需要有的,如果一味使用homestead,无疑失去了在学习开发过程中顺带学习环境部署能力,最后有可能会成为一个只会写代码的后台开发,在上家公司我就遇到过一个新来的两年开发经验的php开发,就是经典地只会写代码,BOSS让他在公司测试机上搭个虚拟机跑代码,方便跟其他系统集成(公司有一台超级主机,部署了很多虚拟机,用来模拟线上的服务器集群,保证测试环境与正式环境的一致性),他直接懵逼,虚拟机搭得一趟糊涂,还得麻烦别人帮忙解决他环境的坑,不然他自个写的代码都完全跑不动。因此,个人建议开发也用虚拟机,顺带学习如何在linux中部署自己需要的环境,当BOSS需要你去部署线上测试环境甚至是正式环境时,才有能力做到,体现自己的价值不仅仅只是写代码。

5年前 评论

我们部门现在就是每个人一套环境。。。

5年前 评论

在经历了 PHP 5.6PHP 7.2 不同环境下来回撸代码,如果没有 Homestead 简洁版本配置,那简直是恶梦 :joy:

5年前 评论
andrewchoi

辛苦地把 Laravel 和 Composer 安裝在合適的系統中,然後才看到這裡,真的有點想哭 。
第一次就嘗試用Homestead失敗,結果也不理會這東西。
由想用Laravel到今天,足兩個月了,走了太多彎路。我想我會很聽話地跟著這裡走。

5年前 评论

小编.能不能录制一节这个Homestead的视频呢?谢谢;新人走了很多坑然而还是一直出现问题在这一块

5年前 评论
falling-ts

Homestead,我没有用过。这个是不是相当于 Linux 下的宝塔面板一样,一键式管理开发环境。。之前用过宝塔面板,但是这玩意太阻碍个人进步,尤其在 Linux 使用上,什么命令都不会,以后就再也没用啦。当然从另一种方面讲,和用不用第三包一个道理,方便使用,不代表你不去学他们是如何实现的理由。

5年前 评论

前段时间才跟着学做项目,用的centos 7 lnmp 虽然也跟做完了,但是体验不好。调报错和bug好多。。。

5年前 评论

电脑是mac使用homestead然后也是不区分大小写的 要怎么弄么~ 被坑过好几次了。本地没问题(一直用的homestead) 一上服务器报错了~ 找半天是有地方大小写错了

5年前 评论
chip

这种方式的缺点:
过几个小时服务器会断掉,还有生产环境不可能也是用虚拟机吧

5年前 评论

新手看到这里:如果你没有很好的SSR梯子,千万别用laradock,因为那个github上的laradock提供的镜像地址全是国外的,即使你配备了国内镜像加速,确实有些组件可以秒速下载,但是有些地址已经写死了,比如那几个大的虚拟机镜像,必须连接到外网,然后就是漫长地小水管等待网速,那是真滴坑啊

5年前 评论
seeker-x2y 4年前

我竟然把你们的讨论看完了~~~

5年前 评论

讨论过程很受教

5年前 评论
aodaobi

我想说目前公司使用mac mini 家里使用macbookpro 开发环境都是phpstrom+vm+centos7+yum 各种服务(线上各种配置服务全部都是yum 安装) , Homestead看了变天准备装 发现VirtualBox不兼容目前的osx 10.14,无奈
即便不使用Homestead,但是个人还是建议使用虚拟机开发,毕竟线上环境和本地环境一样能减少很多因为服务配置问题 (另外就是 我们线上服务器全部使用centos6.9和centos7.2)

4年前 评论

我就知道一提到工具,会是最热闹的时候. :joy:

4年前 评论

Docker真香,虚拟机的话感觉有点臃肿了。

4年前 评论

看完颇为受教。但现实情况往往和理想差距很大。我装了homestead虚拟机环境,运行一段时间电脑就卡的要死。虚拟机太占内存了,电脑配置是真心带不动啊!

4年前 评论

接触laravel三年了。还是菜鸟一样。最近才尝试使用homestead。配置homestead也是遇到很多坑。人生苦短,且苦且行。

3年前 评论
Artist0618 3年前

没必要纠结用homestead 还是用集成环境这个问题吧。其实都用过一段时间,对于喜欢敲命令的人来说,虚拟机的优势还是很明显的。不过也很少会想着用云主机去练习linux,因为对普通开发者来说区别真不大。一般公司都有运维或懂运维知识的技术leader,线上的环境正规点的都会有专人负责。如果单纯搭个环境或者某个扩展包、解决某个配置问题都需要一两天时间,那还是多花点时间想想怎么傍上富婆要更实际些

3年前 评论

@Summer 哥,问你一个一直困扰着我的问题,我用的是win10下的homestead,可是我也开启了nfs,但是为什么在数据库响应,ssh命令行方面,都执行得很缓慢,这个有没有什么好的办法。

3年前 评论
kissfz

现在 windows 上用 Laradock 很香。用 Laradock 时最好不要用 wsl。

3年前 评论

homestead的初衷是解决开发环境的问题,但是homestead的搭建本身坑比原生系统环境还多,反而变得麻烦了

3年前 评论

homestead是真的好用,有好几次环境出了问题,立马销毁重建,真的很方便

3年前 评论

homestead毕竟是官方推荐的,有他的道理。但我有个问题,如何把本地的homestead项目部署到云服务器上?

3年前 评论

@Summer 问下用homestead是不是用很大内存,普通电脑用起来卡不卡的?

7个月前 评论

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