搜索
首页后端开发php教程搬到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。

6 Reasons to Move to Laravel Homestead

还有一个我们不习惯的额外步骤——设置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之后,一切应该就绪:

6 Reasons to Move to Laravel Homestead

正如你所看到的,我的过程产生了一些错误,但最终仍然运行良好:

6 Reasons to Move to Laravel Homestead

4. 端口

Homestead默认打开某些重要端口,这使得从主机管理和维护虚拟机上的数据库和其他已安装软件变得轻而易举。例如,要使用安装在主机(在我的情况下是Windows)上的MySQL Workbench连接到已安装的MySQL数据库,你只需将所需的凭据输入到连接窗口中:

6 Reasons to Move to Laravel Homestead

默认的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中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
可以在PHP会话中存储哪些数据?可以在PHP会话中存储哪些数据?May 02, 2025 am 12:17 AM

phpsessionscanStorestrings,数字,数组和原始物。

您如何开始PHP会话?您如何开始PHP会话?May 02, 2025 am 12:16 AM

tostartaphpsession,usesesses_start()attheScript'Sbeginning.1)placeitbeforeanyOutputtosetThesessionCookie.2)useSessionsforuserDatalikeloginstatusorshoppingcarts.3)regenerateSessiveIdStopreventFentfixationAttacks.s.4)考虑使用AttActAcks.s.s.4)

什么是会话再生,如何提高安全性?什么是会话再生,如何提高安全性?May 02, 2025 am 12:15 AM

会话再生是指在用户进行敏感操作时生成新会话ID并使旧ID失效,以防会话固定攻击。实现步骤包括:1.检测敏感操作,2.生成新会话ID,3.销毁旧会话ID,4.更新用户端会话信息。

使用PHP会话时有哪些性能考虑?使用PHP会话时有哪些性能考虑?May 02, 2025 am 12:11 AM

PHP会话对应用性能有显着影响。优化方法包括:1.使用数据库存储会话数据,提升响应速度;2.减少会话数据使用,只存储必要信息;3.采用非阻塞会话处理器,提高并发能力;4.调整会话过期时间,平衡用户体验和服务器负担;5.使用持久会话,减少数据读写次数。

PHP会话与Cookie有何不同?PHP会话与Cookie有何不同?May 02, 2025 am 12:03 AM

PHPsessionsareserver-side,whilecookiesareclient-side.1)Sessionsstoredataontheserver,aremoresecure,andhandlelargerdata.2)Cookiesstoredataontheclient,arelesssecure,andlimitedinsize.Usesessionsforsensitivedataandcookiesfornon-sensitive,client-sidedata.

PHP如何识别用户的会话?PHP如何识别用户的会话?May 01, 2025 am 12:23 AM

phpientifiesauser'ssessionusessessionSessionCookiesAndSessionIds.1)whiwSession_start()被称为,phpgeneratesainiquesesesessionIdStoredInacookInAcookInamedInAcienamedphpsessidontheuser'sbrowser'sbrowser.2)thisIdAllowSphptptpptpptpptpptortoreTessessionDataAfromtheserverMtheserver。

确保PHP会议的一些最佳实践是什么?确保PHP会议的一些最佳实践是什么?May 01, 2025 am 12:22 AM

PHP会话的安全可以通过以下措施实现:1.使用session_regenerate_id()在用户登录或重要操作时重新生成会话ID。2.通过HTTPS协议加密传输会话ID。3.使用session_save_path()指定安全目录存储会话数据,并正确设置权限。

PHP会话文件默认存储在哪里?PHP会话文件默认存储在哪里?May 01, 2025 am 12:15 AM

phpsessionFilesArestoredIntheDirectorySpecifiedBysession.save_path,通常是/tmponunix-likesystemsorc:\ windows \ windows \ temponwindows.tocustomizethis:tocustomizEthis:1)useession_save_save_save_path_path()

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

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

热工具

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。