Laravel本地开发环境选择Homestead还是Valet?

本文涉及的产品
RDS AI 助手,专业版
RDS Agent(兼容OpenClaw),2核4GB
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: Laravel 提供了两种本地开发环境 Homestead 和 Valet。 Homestead 和 Valet 的不同之处在于目标受众和本地开发的方式。

Valet 还是 Homestead


Laravel 提供了两种本地开发环境 Homestead 和 Valet。 Homestead 和 Valet 的不同之处在于目标受众和本地开发的方式。

Homestead 提供了一个完整的、具有自动化的 Nginx 配置的 Ubuntu 虚拟机。如果你想要完全虚拟化的 Linux 开发环境或 Windows/Linux,Homestead 是一个不错的选择。


Valet 仅支持 Mac,并要求你将 PHP 和数据库服务器直接安装到本地机器上。


这可以很容易地通过使用 Homebrew 相关命令来实现,比如 brew install php72brew install mysql

Valet 提供了一个极快的、资源消耗最少本地开发环境,非常适合只需要 PHP/MySQL 并且不需要虚拟开发环境的开发人员。


Valet 和 Homestead 都是配置 Laravel 开发环境的绝佳选择。选择哪一个仅仅取决于个人喜好和团队的需求。


我的选择


没错,我用 Windows 开发时使用的 Homestead ,用Mac开发之后就改用 Valet 了。


Valet 简介


Valet 是 Mac 极简主义者的 Laravel 开发环境。没有 Vagrant,不需要配置 /etc/hosts 文件。甚至可以使用本地隧道公开共享你的站点。


Laravel Valet 为您的 Mac 设置了开机后始终在后台运行 Nginx 服务。Valet 使用 DnsMasq 将所有指向安装在本地的计算机站点请求代理到 *.test 结尾的域名上。


简单高效的完美诠释:一个速度极快的 Laravel 开发环境只占用 7MB 内存。


Valet 并不是想要完全替换 Vagrant 或 Homestead,只是提供另外一种使用起来更加灵活、方便、以及内存占用更小的选择。


Valet 支持但不局限于以下内容:


Laravel
Lumen
Bedrock
CakePHP 3
Concrete5
Contao
Craft
Drupal
Jigsaw
Joomla
Katana
Kirby
Magento
OctoberCMS
Sculpin
Slim
Statamic
Static HTML
Symfony
WordPress
Zend


Valet的安装


Valet 需要 macOS 系统和 Homebrew。在安装之前,要确保没有其它程序(如 Apache 或 Nginx)占用了本地机器的 80 端口。


  • 使用 brew update 将 Homebrew 安装或更新到最新版本。
  • 使用 Homebrew 的 brew install php 命令安装 PHP 7.3。
  • 安装 Composer.
  • 使用 Composer 的 composer global require laravel/valet 命令安装 Valet。并确保 ~/.composer/vendor/bin 目录在系统的 "PATH" 中。
  • 运行 valet install 命令来配置和安装 Valet 和 DnsMasq,并注册 Valet 后台服务,随系统运行自行启动。


安装完 Valet 后,可以尝试使用类似 ping xxx.test 的命令在终端上 ping 任何一个 *.test 的域名。如果 Valet 安装正确,可以在终端上看到来自 127.0.0.1 的响应。


每次机器启动时,Valet 会自动启动其进程。所以只要完成了 Valet 的初始化,就无需再次运行 valet start 或 valet install。


如何使用其它域名


默认情况下,Valet 使用 .test 顶级域名为你的项目提供服务。如果你想使用其它域名,可以使用 valet tld tld-name 命令。

例如,如果你想使用 .xyz 来代替 .test,运行 valet tld xyz,Valet 会自动将站点顶级域名改为 *.xyz 。


数据库


如果你要使用数据库,请在终端运行 brew install mysql@5.7 安装 MySQL。

一旦安装完成,你可以使用 brew services start mysql@5.7 命令启动 MySQL。

然后,你可以使用 root 用户名和空字符串密码连接到 127.0.0.1 的数据库。


指定 PHP 版本


Valet 允许你使用 valet use php@version 命令来切换 PHP 版本。

如果指定版本尚未安装,Valet 将通过 Brew 来安装指定的 PHP 版本:


valet use php@7.2
valet use php


Valet的升级


可以在终端使用 composer global update 命令来更新 Valet。


升级后,如有需要,最好再次运行 valet install ,以便 Valet 对配置文件进行升级。


升级到 Valet 2.0


Valet 2.0 将 Valet 底层的 Web 服务器从 Caddy 转移到 Nginx。

升级到此版本之前,你应该运行以下命令停止并卸载现有的 Caddy 进程:


valet stop
valet uninstall


接下来,就根据你采用的安装方式来升级 Valet (通常是通过 Git 或 Composer )。


如果是通过 Composer 安装了 Valet ,则应使用以下命令更新到最新的主要版本:


composer global require laravel/valet


如果更新了 Valet 的源码,应该执行 install 命令:


valet install
valet restart


升级过后,可能需要重新设置或重新链接你的站点。


服务站点


安装了 Valet 之后,就可以开始设置站点。

Valet 提供两个命令来为 Laravel 的站点提供服务:park 和 link。


park 命令


运行 mkdir ~/Sites 命令在 Mac 上创建一个新的目录。

接下来,运行 cd ~/Sites 和 valet park 将当前的工作目录作为 Valet 搜索站点的路径。

接下来,在这个目录中创建一个新的 Laravel 站点,比如:laravel new blog。


在浏览器中打开 blog.test

就这么简单,在 『parked』的目录中创建的任何 Laravel 项目都将自动使用这种方式访问: folder-name.test


link 命令


如果要在目录中提供单个站点而不是整个目录,就使用 link 命令。

要使用该命令,先在终端里切换到你的某个项目并运行 valet link app-name。

Valet 会在 ~/.config/valet/Sites 中创建一个符号链接指向当前的目录。


运行 link 命令后,你可以在浏览器通过这种方式访问站点: app-name.test

运行 valet links 命令可以查看所有目录链接的列表。你还可以使用 valet unlink app-name 来删除符号链接。


注意:可以使用 valet link 将多个(子)域名指向同一个应用。要添加子域名或其它域名到应用,可以在应用目录下运行 valet link subdomain.app-name。


使用 TLS 保护站点


默认情况下,Valet 服务站点通过纯 HTTP 的方式。


但是,如果想一个站点使用 HTTP/2 通过加密 TLS 提供服务,使用 secure 命令。


例如,如果站点通过 Valet 在 laravel.test 域上提供服务,你应当运行如下的命令去保护它:


valet secure laravel


要一个站点『解除保护』并恢复为通过纯 HTTP 提供服务它的流量,使用 unsecure 命令。


与 secure 命令一样,该命令接受你希望去解除保护的主机名称:


valet unsecure laravel


总结


好了,上述就是 Valet 的基础功能,是不是非常简单高效。

上述这些功能已经能够满足我们在本地开发了,当然 Valet 支持的功能不止这些,还包括:

共享站点、配置网站的环境变量、自定义 Valet 驱动、进程相关操作等等。


相关文章
|
4月前
|
监控 安全 网络安全
8080 和 3128 端口的核心区别及使用场景
HTTP代理常用端口8080与3128各有侧重:8080多用于管理监控(如Web配置界面),易记但可能被防火墙拦截;3128为标准端口,稳定性高,主供客户端正常请求转发。端口可自定义,需据安全与性能需求合理选用。
|
5月前
|
JSON 监控 API
解析得物商品详情:API 接口调用实践与数据结构分析
本文详解得物平台商品详情API:涵盖GET请求方式、核心参数(productId/skuId)、JSON响应结构(含价格、库存、规格、图片等),并提供Python调用示例及频率限制、错误处理、合规使用等关键注意事项。(239字)
|
人工智能 并行计算 调度
进行GPU算力管理
本篇主要简单介绍了在AI时代由‘大参数、大数据、大算力’需求下,对GPU算力管理和分配带来的挑战。以及面对这些挑战,GPU算力需要从单卡算力管理、单机多卡算力管理、多机多卡算力管理等多个方面发展出来的业界通用的技术。
1984 165
进行GPU算力管理
|
API
全球天气预报1天-经纬度版免费API接口教程
该接口用于获取全球任意地区的天气信息,需提供经纬度参数。支持POST和GET请求,返回包括天气、气温、气压、湿度等详细信息。详情及示例参见API文档。
1208 4
|
存储 安全 API
OpenStack的块存储卷管理快照 (Snapshot)
【8月更文挑战第26天】
935 13
|
存储 SQL Oracle
南大通用GBase 8s数据库的WITH FUNCTION语句详解
南大通用GBase 8s数据库的WITH FUNCTION语句详解
|
分布式计算 安全 Hadoop
Hadoop安全模式
【5月更文挑战第12天】
440 2
|
存储 语音技术
基于单片机的银行排队叫号系统的设计
基于单片机的银行排队叫号系统的设计
566 0
|
Kubernetes Java 网络安全
安装nacos报错及解决方案
安装nacos报错及解决方案
525 0
|
Java 数据库连接 数据库
深入了解Java中的MyBatis Plus注解 @TableLogic:优雅实现逻辑删除功能
在数据库操作中,逻辑删除是一种常见的需求,它能够将数据标记为已删除状态而不是直接从数据库中删除。MyBatis Plus作为一款强大的ORM框架,提供了注解 `@TableLogic`,使得开发者可以轻松实现逻辑删除功能,而不必手动编写复杂的SQL语句。本文将详细介绍 `@TableLogic` 注解的用法及其在持久层开发中的应用。
5608 1