搬到Laravel Homestead的6个理由
Laravel Homestead:便捷的本地开发环境
想快速上手Homestead?请查看快速提示。想了解其详情,请继续阅读。
简单来说,Laravel Homestead 是:
一个官方预打包的Vagrant “box”,它为你提供了一个绝佳的开发环境,无需在本地机器上安装PHP、Web服务器及任何其他服务器软件。
换句话说,它自动完成了我们在之前的文章中(例如这些文章)手动通过Vagrant和PuPHPet完成的操作。
那么,它与普通的Vaprobash/Vagrant/PuPHPet设置有何不同呢?让我们来看看。
关键要点
- Laravel Homestead是一个预打包的Vagrant box,它提供了一个强大的开发环境,无需手动安装PHP、Web服务器和其他服务器软件。
- Homestead由Laravel的创建者Taylor Otwell官方开发,以其高质量、可靠性和简易性而闻名,是PHP开发人员的首选。
- Homestead的设置简单快捷,开发人员可以很快开始他们的项目。它还默认打开重要的端口,简化了从主机管理和维护虚拟机上的数据库和其他已安装软件的过程。
- Homestead的官方地位确保了一个庞大的社区提供帮助和故障排除。它还使添加新站点或虚拟主机变得容易,允许多个项目在一个box中运行。但是,它确实缺少一些功能,例如全局composer安装、默认虚拟主机中的默认Laravel以及HHVM支持。
1. 它能工作
与其他流行的简化Vagrantfile设置的解决方案不同,Homestead很少启动失败,如果失败,也能在几分钟内修复。如果你处理过GUI Vagrant解决方案,你可能已经注意到,在第一次vagrant up之后,让一切运行起来是多么罕见。总是会出现一些问题,例如过时的或更新过多的Puppet、过时的Ubuntu存储库或其他一些神秘的错误,需要大量的“论坛搜索”才能解决。Homestead则简单地……工作。
Homestead安装在带有PHP 5.5的Ubuntu 14.04上,所以它尽可能新,不会进入beta/RC领域,Nginx(因为我们现在都放弃Apache了,对吧?)、MySQL和Postgres,所以你可以立即准备好Heroku(它们的默认是Heroku Postgres)、Node(用于所有静态资源编译需求、后台任务和其他不太重要的业务)、Redis、Memcached和Beanstalkd(用于所有缓存和排队需求)、Laravel Envoy(用于所有远程服务器任务需求)以及Fabric Hipchat扩展,以便你可以通过Hipchat进行应用程序部署(也称为chatops)。
2. 它是Otwell认可的
Homestead是官方的,也就是由Laravel之父Taylor Otwell制作的,这意味着它自动被认为符合某些标准。虽然Laravel社区并非没有争议(谁在乎一个类叫什么?如果一个革命性的新框架称一个模型为土豆、外观或火箭,只要土豆/外观/火箭能工作,那就完全没问题),但Taylor参与其中的独特性赋予了它在当今PHP世界中非常需要的简洁性和质量。我们已经看到太多开源项目被团队自负、狂热的贡献者或不称职的全能者所毁坏,我个人认为Taylor几乎独家参与Laravel的改进是使其在其他项目中脱颖而出并真正使其在质量上与Phalcon竞争的原因。
Homestead是他自己的项目,被称为“官方本地开发环境”,他会尽一切努力保持其高质量并确保其始终有效。任何不足之处,都会影响他的声誉。在今天的PHP中,一个项目长期可靠性的最佳保证莫过于它(主要)由一个非常关心质量的人拥有。
3. 设置快速
设置Homestead易如反掌。按照文档页面上的说明,你只需要将Homestead box添加到你的Vagrant(如果你还没有的话)并克隆repo。
还有一个我们不习惯的额外步骤——设置SSH。这也很简单,需要在克隆repo后编辑你的Homestead.yaml文件。只需将相关行指向你的SSH密钥,就可以了。在我的例子中,我必须更改以下内容:
<code>--- ip: "192.168.10.10" memory: 2048 cpus: 1 authorize: /Users/me/.ssh/id_rsa.pub keys: - /Users/me/.ssh/id_rsa folders: - map: /Users/me/Code to: /home/vagrant/Code sites: - map: homestead.app to: /home/vagrant/Code/Laravel/public variables: - key: APP_ENV value: local</code>
到
<code>--- ip: "192.168.10.10" memory: 2048 cpus: 1 authorize: C:\Users\Bruno\.ssh\id_rsa.pub keys: - C:\Users\Bruno\.ssh\id_rsa folders: - map: D:\VM\vagrant_boxes\homestead\Homestead to: /home/vagrant/Code sites: - map: homestead.app to: /home/vagrant/Code/Laravel/public variables: - key: APP_ENV value: local</code>
在我们运行vagrant up之后,一切应该就绪:
正如你所看到的,我的过程产生了一些错误,但最终仍然运行良好:
4. 端口
Homestead默认打开某些重要端口,这使得从主机管理和维护虚拟机上的数据库和其他已安装软件变得轻而易举。例如,要使用安装在主机(在我的情况下是Windows)上的MySQL Workbench连接到已安装的MySQL数据库,你只需将所需的凭据输入到连接窗口中:
默认的MySQL和Postgres端口只是附加了一个零(例如,MySQL为33060而不是3306),这允许你连接到localhost(127.0.0.1:33060)并授予对虚拟机上数据库的访问权限。
这样做的潜在缺点是,由于冲突,你不能同时运行多个box而无需更改端口。如果数据库连接只是打开的,并且可以像往常一样连接到虚拟机的IP,那就更好了,但这很容易解决——只需查看我之前的一些vagrantfiles即可了解其外观。
5. 最佳实践和共同点
由于Homestead是官方的,你可以放心,如果你遇到任何问题,随时都会有一个庞大的社区提供帮助。你将与所有使用Homestead的人拥有相同的起点,问题将自动变得更容易诊断。
6. 易于添加站点
由于可以在微调Homestead时调整配置文件的简易性,添加新站点(虚拟主机)轻而易举——你甚至不必处理nginx文件中的单个虚拟主机配置。
默认情况下,Homestead.yaml文件注册一个名为“homestead.app”的单个虚拟主机,该虚拟主机作为虚拟机服务器配置的默认站点。你可以通过在浏览器中访问虚拟机的IP地址(常规端口80:https://www.php.cn/link/173e2619a507a324eb10f969df13a372:
<code>--- ip: "192.168.10.10" memory: 2048 cpus: 1 authorize: /Users/me/.ssh/id_rsa.pub keys: - /Users/me/.ssh/id_rsa folders: - map: /Users/me/Code to: /home/vagrant/Code sites: - map: homestead.app to: /home/vagrant/Code/Laravel/public variables: - key: APP_ENV value: local</code>
你注册了一个新的虚拟主机。然后,如果你将该新站点的名称添加到你的hosts文件中(在任何平台上),你就可以通过浏览器按名称访问该新站点,你只需要通过端口8000进行访问:https://www.php.cn/link/e1490523b8cd2c130b29656613850cf8。
此过程允许你根据需要向虚拟机添加任意数量的虚拟主机,从而从单个box提供多个项目的服务。
缺少的功能
在一些缺少的功能中,我会列出以下内容:
- Homestead缺少全局composer安装,这意味着你必须为每个项目手动获取它。
- 上述端口问题——如果端口只是打开的,那么连接到虚拟机的IP而不是通过特定端口连接到localhost IP会更好。这将避免端口冲突,并允许同时运行多个Homestead虚拟机。
- 没有Laravel。Homestead最好在默认虚拟主机中默认包含基本的Laravel项目,以便可以立即开始开发,而无需从头创建一个新项目。
- HHVM支持会很不错,符合Vaprobash的精神。
结论
Laravel Homestead是迄今为止最好和最稳定的PHP Vagrant环境之一。它启动速度极快,包含很少的依赖项,这些依赖项在运行时可能会中断,并为立即开始进行黑客攻击配置了一个现代的、最新的PHP环境。
你正在使用它吗?请告诉我们。
Laravel Homestead常见问题解答 (FAQs)
什么是Laravel Homestead,为什么我应该使用它?
Laravel Homestead是一个预打包的Vagrant box,它提供了一个绝佳的开发环境,无需在本地机器上安装PHP、Web服务器及任何其他服务器软件。它非常有益,因为它在多个操作系统上提供了始终如一的开发环境。这意味着所有团队成员都可以使用相同的环境,无论他们使用的是Mac、Windows还是Linux。
如何安装Laravel Homestead?
要安装Laravel Homestead,你首先需要安装VirtualBox 6.x、VMWare、Parallels或Hyper-V作为提供程序。然后,安装Vagrant。安装完成后,你可以使用命令“vagrant box add laravel/homestead”将Laravel Homestead box添加到你的Vagrant安装中。最后,你可以通过将存储库克隆到你的主机来安装Homestead。
Laravel Homestead的系统要求是什么?
Laravel Homestead需要Vagrant和一个虚拟机管理程序,如VirtualBox、VMWare或Parallels。它还需要至少1GB的RAM,但如果可能,建议分配2GB或更多。主机应具有64位处理器和足够的磁盘空间来存储你的项目文件和数据库。
如何配置Laravel Homestead?
Laravel Homestead通过Homestead.yaml文件进行配置。此文件允许你将项目目录映射到Homestead环境,配置共享文件夹并设置Nginx站点。你还可以在此文件中指定PHP版本、数据库类型和其他设置。
如何更新Laravel Homestead?
要更新Laravel Homestead,可以使用“vagrant box update”命令。这会将Vagrant box更新到最新版本。但是,请记住在更新之前备份你的Homestead.yaml文件和其他任何重要数据,因为更新过程可能会覆盖这些文件。
我可以将Laravel Homestead与其他PHP框架一起使用吗?
是的,Laravel Homestead不仅限于Laravel项目。你可以将其与任何可以在PHP 7.4或PHP 8.0服务器上运行的PHP项目一起使用。这包括Symfony、CakePHP、Yii等框架。
如何排除Laravel Homestead中的问题?
Laravel Homestead提供了多种故障排除工具。你可以使用带有“–debug”标志的“vagrant up”命令来获取详细日志。你还可以SSH进入Homestead box并检查Nginx、PHP和MySQL日志中的任何错误。
如何连接到Laravel Homestead中的数据库?
Laravel Homestead预装了MySQL、Postgres、SQLite和Memcached。你可以使用Homestead文档中提供的默认凭据连接到这些数据库。你还可以使用Sequel Pro或MySQL Workbench等工具连接到这些数据库。
我可以在Laravel Homestead中运行多个项目吗?
是的,Laravel Homestead支持运行多个项目。你可以在Homestead.yaml文件中映射多个项目目录,并为每个项目配置单独的Nginx站点。每个项目都有其自己的URL,并且可以独立访问。
如何卸载Laravel Homestead?
要卸载Laravel Homestead,可以使用“vagrant destroy”命令。这会将Homestead box及其所有数据从你的机器中删除。但是,请记住在运行此命令之前备份任何重要数据,因为它会删除你所有的项目文件和数据库。
以上是搬到Laravel Homestead的6个理由的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

会话劫持可以通过以下步骤实现:1.获取会话ID,2.使用会话ID,3.保持会话活跃。在PHP中防范会话劫持的方法包括:1.使用session_regenerate_id()函数重新生成会话ID,2.通过数据库存储会话数据,3.确保所有会话数据通过HTTPS传输。

PHP8.1中的枚举功能通过定义命名常量增强了代码的清晰度和类型安全性。1)枚举可以是整数、字符串或对象,提高了代码可读性和类型安全性。2)枚举基于类,支持面向对象特性,如遍历和反射。3)枚举可用于比较和赋值,确保类型安全。4)枚举支持添加方法,实现复杂逻辑。5)严格类型检查和错误处理可避免常见错误。6)枚举减少魔法值,提升可维护性,但需注意性能优化。

SOLID原则在PHP开发中的应用包括:1.单一职责原则(SRP):每个类只负责一个功能。2.开闭原则(OCP):通过扩展而非修改实现变化。3.里氏替换原则(LSP):子类可替换基类而不影响程序正确性。4.接口隔离原则(ISP):使用细粒度接口避免依赖不使用的方法。5.依赖倒置原则(DIP):高低层次模块都依赖于抽象,通过依赖注入实现。

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。

RESTAPI设计原则包括资源定义、URI设计、HTTP方法使用、状态码使用、版本控制和HATEOAS。1.资源应使用名词表示并保持层次结构。2.HTTP方法应符合其语义,如GET用于获取资源。3.状态码应正确使用,如404表示资源不存在。4.版本控制可通过URI或头部实现。5.HATEOAS通过响应中的链接引导客户端操作。

在PHP中,异常处理通过try,catch,finally,和throw关键字实现。1)try块包围可能抛出异常的代码;2)catch块处理异常;3)finally块确保代码始终执行;4)throw用于手动抛出异常。这些机制帮助提升代码的健壮性和可维护性。

匿名类在PHP中的主要作用是创建一次性使用的对象。1.匿名类允许在代码中直接定义没有名字的类,适用于临时需求。2.它们可以继承类或实现接口,增加灵活性。3.使用时需注意性能和代码可读性,避免重复定义相同的匿名类。
